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

Unified Diff: components/ntp_snippets/ntp_snippets_fetcher_unittest.cc

Issue 2274953002: Inform server of dismissed articles. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: JSON comma. 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
Index: components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
diff --git a/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc b/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
index de2e1ccd3bf94f7e2f2fecab6c5213ee85228574..c69c48f799838204a6c7c2a3230e5b169eb3185f 100644
--- a/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
+++ b/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
@@ -179,6 +179,7 @@ class NTPSnippetsFetcherTest : public testing::Test {
snippets_fetcher_->SetTickClockForTesting(
mock_task_runner_->GetMockTickClock());
test_hosts_.insert("www.somehost.com");
+ test_excluded_.insert("1234567890");
// Increase initial time such that ticks are non-zero.
mock_task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(1234));
}
@@ -191,6 +192,7 @@ class NTPSnippetsFetcherTest : public testing::Test {
const std::string& test_lang() const { return test_lang_; }
const GURL& test_url() { return test_url_; }
const std::set<std::string>& test_hosts() const { return test_hosts_; }
+ const std::set<std::string>& test_excluded() const { return test_excluded_; }
base::HistogramTester& histogram_tester() { return histogram_tester_; }
void InitFakeURLFetcherFactory() {
@@ -228,6 +230,7 @@ class NTPSnippetsFetcherTest : public testing::Test {
const std::string test_lang_;
const GURL test_url_;
std::set<std::string> test_hosts_;
+ std::set<std::string> test_excluded_;
base::HistogramTester histogram_tester_;
DISALLOW_COPY_AND_ASSIGN(NTPSnippetsFetcherTest);
@@ -255,6 +258,7 @@ TEST_F(NTPSnippetsFetcherTest, BuildRequestAuthenticated) {
params.only_return_personalized_results = true;
params.user_locale = "en";
params.host_restricts = {"chromium.org"};
+ params.excluded_ids = {"1234567890"};
params.count_to_fetch = 25;
params.fetch_api = NTPSnippetsFetcher::CHROME_READER_API;
@@ -302,6 +306,9 @@ TEST_F(NTPSnippetsFetcherTest, BuildRequestAuthenticated) {
" \"uiLanguage\": \"en\","
" \"regularlyVisitedHostNames\": ["
" \"chromium.org\""
+ " ],"
+ " \"excludedSuggestionIds\": ["
+ " \"1234567890\""
" ]"
"}"));
}
@@ -311,6 +318,7 @@ TEST_F(NTPSnippetsFetcherTest, BuildRequestUnauthenticated) {
params.only_return_personalized_results = false;
params.host_restricts = {};
params.count_to_fetch = 10;
+ params.excluded_ids = {};
params.fetch_api = NTPSnippetsFetcher::CHROME_READER_API;
EXPECT_THAT(params.BuildRequest(),
@@ -347,7 +355,47 @@ TEST_F(NTPSnippetsFetcherTest, BuildRequestUnauthenticated) {
params.fetch_api = NTPSnippetsFetcher::CHROME_CONTENT_SUGGESTIONS_API;
EXPECT_THAT(params.BuildRequest(),
EqualsJSON("{"
- " \"regularlyVisitedHostNames\": []"
+ " \"regularlyVisitedHostNames\": [],"
+ " \"excludedSuggestionIds\": []"
+ "}"));
+}
+
+TEST_F(NTPSnippetsFetcherTest, BuildRequestExcludedIds) {
+ NTPSnippetsFetcher::RequestParams params;
+ params.only_return_personalized_results = false;
+ params.host_restricts = {};
+ params.count_to_fetch = 10;
+ for (int i = 0; i < 200; ++i) {
+ params.excluded_ids.insert(base::StringPrintf("%03d", i));
+ }
+
+ params.fetch_api = NTPSnippetsFetcher::CHROME_CONTENT_SUGGESTIONS_API;
+ EXPECT_THAT(params.BuildRequest(),
+ EqualsJSON("{"
+ " \"regularlyVisitedHostNames\": [],"
+ " \"excludedSuggestionIds\": ["
+ " \"000\", \"001\", \"002\", \"003\", \"004\","
+ " \"005\", \"006\", \"007\", \"008\", \"009\","
+ " \"010\", \"011\", \"012\", \"013\", \"014\","
+ " \"015\", \"016\", \"017\", \"018\", \"019\","
+ " \"020\", \"021\", \"022\", \"023\", \"024\","
+ " \"025\", \"026\", \"027\", \"028\", \"029\","
+ " \"030\", \"031\", \"032\", \"033\", \"034\","
+ " \"035\", \"036\", \"037\", \"038\", \"039\","
+ " \"040\", \"041\", \"042\", \"043\", \"044\","
+ " \"045\", \"046\", \"047\", \"048\", \"049\","
+ " \"050\", \"051\", \"052\", \"053\", \"054\","
+ " \"055\", \"056\", \"057\", \"058\", \"059\","
+ " \"060\", \"061\", \"062\", \"063\", \"064\","
+ " \"065\", \"066\", \"067\", \"068\", \"069\","
+ " \"070\", \"071\", \"072\", \"073\", \"074\","
+ " \"075\", \"076\", \"077\", \"078\", \"079\","
+ " \"080\", \"081\", \"082\", \"083\", \"084\","
+ " \"085\", \"086\", \"087\", \"088\", \"089\","
+ " \"090\", \"091\", \"092\", \"093\", \"094\","
+ " \"095\", \"096\", \"097\", \"098\", \"099\""
+ // Truncated to 100 entries, those lexically first.
Marc Treib 2016/08/25 11:41:44 "lexically first" is really just how it happens to
sfiera 2016/08/25 11:58:07 Done.
+ " ]"
"}"));
}
@@ -378,6 +426,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldFetchSuccessfully) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(IsSingleArticle("http://localhost/foobar")));
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -413,6 +462,7 @@ TEST_F(NTPSnippetsContentSuggestionsFetcherTest, ShouldFetchSuccessfully) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(IsSingleArticle("http://localhost/foobar")));
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -465,6 +515,7 @@ TEST_F(NTPSnippetsContentSuggestionsFetcherTest, ServerCategories) {
EXPECT_CALL(mock_callback(), Run(_))
.WillOnce(WithArg<0>(MovePointeeTo(&snippets)));
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*force_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -505,6 +556,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldFetchSuccessfullyEmptyList) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(IsEmptyArticleList()));
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -522,6 +574,7 @@ TEST_F(NTPSnippetsFetcherHostRestrictedTest, ShouldReportEmptyHostsError) {
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(/*hosts=*/std::set<std::string>(),
/*language_code=*/"en-US",
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -543,7 +596,8 @@ TEST_F(NTPSnippetsFetcherHostRestrictedTest, ShouldReportEmptyHostsError) {
TEST_F(NTPSnippetsFetcherHostRestrictedTest, ShouldRestrictToHosts) {
net::TestURLFetcherFactory test_url_fetcher_factory;
snippets_fetcher().FetchSnippetsFromHosts(
- {"www.somehost1.com", "www.somehost2.com"}, test_lang(), /*count=*/17,
+ {"www.somehost1.com", "www.somehost2.com"}, test_lang(), test_excluded(),
+ /*count=*/17,
/*interactive_request=*/true);
net::TestURLFetcher* fetcher = test_url_fetcher_factory.GetFetcherByID(0);
ASSERT_THAT(fetcher, NotNull());
@@ -575,6 +629,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportUrlStatusError) {
net::URLRequestStatus::FAILED);
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -596,6 +651,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportHttpError) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -616,6 +672,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportJsonError) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -638,6 +695,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportJsonErrorForEmptyResponse) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -657,6 +715,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportInvalidListError) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -677,6 +736,7 @@ TEST_F(NTPSnippetsFetcherTest, ShouldReportHttpErrorForMissingBakedResponse) {
InitFakeURLFetcherFactory();
EXPECT_CALL(mock_callback(), Run(/*snippets=*/Not(HasValue()))).Times(1);
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();
@@ -688,11 +748,13 @@ TEST_F(NTPSnippetsFetcherTest, ShouldCancelOngoingFetch) {
net::URLRequestStatus::SUCCESS);
EXPECT_CALL(mock_callback(), Run(IsEmptyArticleList()));
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
// Second call to FetchSnippetsFromHosts() overrides/cancels the previous.
// Callback is expected to be called once.
snippets_fetcher().FetchSnippetsFromHosts(test_hosts(), test_lang(),
+ test_excluded(),
/*count=*/1,
/*interactive_request=*/true);
FastForwardUntilNoTasksRemain();

Powered by Google App Engine
This is Rietveld 408576698