Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Unified Diff: components/ntp_snippets/content_suggestions_service_unittest.cc

Issue 2259873002: Add ContentSuggestionsService tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698