Chromium Code Reviews| Index: components/ntp_snippets/content_suggestions_service_unittest.cc |
| diff --git a/components/ntp_snippets/content_suggestions_service_unittest.cc b/components/ntp_snippets/content_suggestions_service_unittest.cc |
| index 91fd665dc6e7b6cf6643b9adf27a4afe29b6f8af..d80d8206ca63891cdfd70fce49ba6279e6c2b977 100644 |
| --- a/components/ntp_snippets/content_suggestions_service_unittest.cc |
| +++ b/components/ntp_snippets/content_suggestions_service_unittest.cc |
| @@ -58,8 +58,13 @@ class MockProvider : public ContentSuggestionsProvider { |
| MockProvider(Observer* observer, |
| CategoryFactory* category_factory, |
| std::vector<Category> provided_categories) |
| - : ContentSuggestionsProvider(observer, category_factory), |
| - provided_categories_(provided_categories) { |
| + : ContentSuggestionsProvider(observer, category_factory) { |
| + SetProvidedCategories(provided_categories); |
| + } |
| + |
| + void SetProvidedCategories(std::vector<Category> provided_categories) { |
| + statuses_.clear(); |
| + provided_categories_ = provided_categories; |
| for (Category category : provided_categories) { |
| statuses_[category.id()] = CategoryStatus::AVAILABLE; |
| } |
| @@ -363,4 +368,74 @@ TEST_F(ContentSuggestionsServiceTest, ShouldForwardSuggestions) { |
| // The service will receive two Shutdown() calls. |
| } |
| +TEST_F(ContentSuggestionsServiceTest, |
| + ShouldNotReturnCategoryInfoForNonexistentCategory) { |
| + Category category = FromKnownCategory(KnownCategories::BOOKMARKS); |
| + base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category); |
| + EXPECT_FALSE(result.has_value()); |
| +} |
| + |
| +TEST_F(ContentSuggestionsServiceTest, ShouldReturnCategoryInfo) { |
| + Category category = FromKnownCategory(KnownCategories::BOOKMARKS); |
| + MockProvider* provider = MakeProvider(category); |
| + base::Optional<CategoryInfo> result = service()->GetCategoryInfo(category); |
| + EXPECT_TRUE(result.has_value()); |
| + CategoryInfo expected = provider->GetCategoryInfo(category); |
| + const CategoryInfo& actual = result.value(); |
| + EXPECT_EQ(expected.title(), actual.title()); |
| + EXPECT_EQ(expected.card_layout(), actual.card_layout()); |
| + EXPECT_EQ(expected.has_more_button(), actual.has_more_button()); |
| +} |
| + |
| +TEST_F(ContentSuggestionsServiceTest, |
| + ShouldRegisterNewCategoryOnNewSuggestions) { |
|
Philipp Keck
2016/08/18 12:51:58
OnCategoryStatusChanged has the same ability of ad
vitaliii
2016/08/18 13:12:35
Done.
|
| + Category category = FromKnownCategory(KnownCategories::BOOKMARKS); |
| + MockProvider* provider = MakeProvider(category); |
| + MockServiceObserver observer; |
| + service()->AddObserver(&observer); |
| + |
| + // Provider starts providing |new_category| without calling |
| + // |OnCategoryStatusChanged|. |
| + Category new_category = FromKnownCategory(KnownCategories::ARTICLES); |
| + provider->SetProvidedCategories( |
| + std::vector<Category>({category, new_category})); |
| + |
| + EXPECT_CALL(observer, OnNewSuggestions(new_category)).Times(1); |
| + EXPECT_CALL(observer, |
| + OnCategoryStatusChanged(new_category, CategoryStatus::AVAILABLE)) |
| + .Times(1); |
| + provider->FireSuggestionsChanged(new_category, {1, 2}); |
| + |
| + ExpectThatSuggestionsAre(new_category, {1, 2}); |
| + EXPECT_THAT(providers().at(category), Eq(provider)); |
| + EXPECT_THAT(service()->GetCategoryStatus(category), |
| + Eq(CategoryStatus::AVAILABLE)); |
| + EXPECT_THAT(providers().at(new_category), Eq(provider)); |
| + EXPECT_THAT(service()->GetCategoryStatus(new_category), |
| + Eq(CategoryStatus::AVAILABLE)); |
| + |
| + service()->RemoveObserver(&observer); |
| +} |
| + |
| +TEST_F(ContentSuggestionsServiceTest, ShouldRemoveCategoryWhenNotProvided) { |
| + Category category = FromKnownCategory(KnownCategories::BOOKMARKS); |
| + MockProvider* provider = MakeProvider(category); |
| + MockServiceObserver observer; |
| + service()->AddObserver(&observer); |
| + |
| + provider->FireSuggestionsChanged(category, {1, 2}); |
| + ExpectThatSuggestionsAre(category, {1, 2}); |
| + |
| + EXPECT_CALL(observer, |
| + OnCategoryStatusChanged(category, CategoryStatus::NOT_PROVIDED)); |
| + provider->FireCategoryStatusChanged(category, CategoryStatus::NOT_PROVIDED); |
| + |
| + EXPECT_THAT(service()->GetCategoryStatus(category), |
| + Eq(CategoryStatus::NOT_PROVIDED)); |
| + EXPECT_TRUE(service()->GetCategories().empty()); |
| + ExpectThatSuggestionsAre(category, std::vector<int>()); |
| + |
| + service()->RemoveObserver(&observer); |
| +} |
| + |
| } // namespace ntp_snippets |