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

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: Added a test. 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..d70ca3212645aba3cfd037c27305e4b52f984ab6 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) {
Marc Treib 2016/08/18 15:27:42 nit: const std::vector<..>& ? (Also in the ctor ab
vitaliii 2016/08/18 16:32:12 Done.
+ statuses_.clear();
+ provided_categories_ = provided_categories;
for (Category category : provided_categories) {
statuses_[category.id()] = CategoryStatus::AVAILABLE;
}
@@ -363,4 +368,102 @@ 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());
Marc Treib 2016/08/18 15:27:42 nit: ASSERT_TRUE so that the test stops if it's nu
vitaliii 2016/08/18 16:32:12 Done.
+ 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) {
+ Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
+ MockProvider* provider = MakeProvider(category);
+ MockServiceObserver observer;
+ service()->AddObserver(&observer);
+
+ // Provider starts providing |new_category| without calling
+ // |OnCategoryStatusChanged|.
Marc Treib 2016/08/18 15:27:42 [Mostly to pke:] Is this something we want to supp
Philipp Keck 2016/08/18 15:29:56 Last time we talked about this with Tim, we said w
Marc Treib 2016/08/18 15:33:55 Alright, thanks. Then I'm okay with leaving this a
vitaliii 2016/08/18 16:32:13 Done.
+ Category new_category = FromKnownCategory(KnownCategories::ARTICLES);
+ provider->SetProvidedCategories(
+ std::vector<Category>({category, new_category}));
+
+ EXPECT_CALL(observer, OnNewSuggestions(new_category)).Times(1);
Marc Treib 2016/08/18 15:27:42 .Times(1) isn't necessary, it doesn't do anything
vitaliii 2016/08/18 16:32:13 Done.
+ 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));
Marc Treib 2016/08/18 15:27:43 EXPECT_EQ or EXPECT_THAT(.., Eq(..))? Either's fin
vitaliii 2016/08/18 16:32:13 Done.
+ 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,
+ ShouldRegisterNewCategoryOnCategoryStatusChanged) {
+ Category category = FromKnownCategory(KnownCategories::BOOKMARKS);
+ MockProvider* provider = MakeProvider(category);
+ MockServiceObserver observer;
+ service()->AddObserver(&observer);
+
+ // Provider starts providing |new_category| and calls
+ // |OnCategoryStatusChanged|, but the category is not yet available.
+ Category new_category = FromKnownCategory(KnownCategories::ARTICLES);
+ provider->SetProvidedCategories(
+ std::vector<Category>({category, new_category}));
+ EXPECT_CALL(observer, OnCategoryStatusChanged(new_category,
+ CategoryStatus::INITIALIZING))
+ .Times(1);
+ provider->FireCategoryStatusChanged(new_category,
+ CategoryStatus::INITIALIZING);
+
+ EXPECT_THAT(providers().at(new_category), Eq(provider));
+ ExpectThatSuggestionsAre(new_category, std::vector<int>());
+ EXPECT_THAT(service()->GetCategoryStatus(new_category),
+ Eq(CategoryStatus::INITIALIZING));
+ EXPECT_EQ(service()->GetCategories(),
+ std::vector<Category>({category, new_category}));
+
+ 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