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

Unified Diff: components/ntp_snippets/ntp_snippets_fetcher_unittest.cc

Issue 2146863002: More unittests of ntp_snippets_fetcher that depend on trial param value. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@finch-parameters-test
Patch Set: Rebase Created 4 years, 5 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/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 a0f7893ac6e11f2f6b2eccf3c5a587b2d7a6580e..aa5892cd7810c3d07e2ae0038e5892cc8d03f9e0 100644
--- a/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
+++ b/components/ntp_snippets/ntp_snippets_fetcher_unittest.cc
@@ -123,20 +123,9 @@ void ParseJsonDelayed(
base::TimeDelta::FromMilliseconds(kTestJsonParsingLatencyMs));
}
-class VariationParams {
- public:
- VariationParams(const std::string& trial_name,
- const std::map<std::string, std::string>& params)
- : field_trial_list_(new metrics::SHA1EntropyProvider("foo")) {
- variations::AssociateVariationParams(trial_name, "Group1", params);
- base::FieldTrialList::CreateFieldTrial(trial_name, "Group1");
- }
-
- ~VariationParams() { variations::testing::ClearAllVariationParams(); }
-
- private:
- base::FieldTrialList field_trial_list_;
-};
+GURL GetFetcherUrl(const char* url_format) {
+ return GURL(base::StringPrintf(url_format, google_apis::GetAPIKey().c_str()));
+}
} // namespace
@@ -144,13 +133,12 @@ class NTPSnippetsFetcherTest : public testing::Test {
public:
NTPSnippetsFetcherTest()
: NTPSnippetsFetcherTest(
- GURL(base::StringPrintf(kTestChromeReaderUrlFormat,
- google_apis::GetAPIKey().c_str())),
+ GetFetcherUrl(kTestChromeReaderUrlFormat),
std::map<std::string, std::string>()) {}
NTPSnippetsFetcherTest(const GURL& gurl,
const std::map<std::string, std::string>& params)
- : params_(ntp_snippets::kStudyName, params),
+ : params_manager_(ntp_snippets::kStudyName, params),
mock_task_runner_(new base::TestMockTimeTaskRunner()),
mock_task_runner_handle_(mock_task_runner_),
signin_client_(new TestSigninClient(nullptr)),
@@ -205,7 +193,7 @@ class NTPSnippetsFetcherTest : public testing::Test {
}
private:
- VariationParams params_;
+ variations::testing::VariationParamsManager params_manager_;
scoped_refptr<base::TestMockTimeTaskRunner> mock_task_runner_;
base::ThreadTaskRunnerHandle mock_task_runner_handle_;
FailingFakeURLFetcherFactory failing_url_fetcher_factory_;
@@ -229,12 +217,20 @@ class NTPSnippetsContentSuggestionsFetcherTest : public NTPSnippetsFetcherTest {
public:
NTPSnippetsContentSuggestionsFetcherTest()
: NTPSnippetsFetcherTest(
- GURL(base::StringPrintf(kTestChromeContentSuggestionsUrlFormat,
- google_apis::GetAPIKey().c_str())),
+ GetFetcherUrl(kTestChromeContentSuggestionsUrlFormat),
std::map<std::string, std::string>{
{"content_suggestions_backend", kContentSuggestionsBackend}}) {}
};
+class NTPSnippetsFetcherHostRestrictedTest : public NTPSnippetsFetcherTest {
+ public:
+ NTPSnippetsFetcherHostRestrictedTest()
+ : NTPSnippetsFetcherTest(
+ GetFetcherUrl(kTestChromeReaderUrlFormat),
+ std::map<std::string, std::string>{
+ {"fetching_host_restrict", "on"}}) {}
Marc Treib 2016/07/20 08:34:45 Out of curiosity: Is the "std::map<...>" required
jkrcal 2016/07/20 12:17:31 You are right, not needed. Thanks!
+};
+
TEST_F(NTPSnippetsFetcherTest, BuildRequestAuthenticated) {
NTPSnippetsFetcher::RequestParams params;
params.obfuscated_gaia_id = "0BFUSGAIA";
@@ -424,10 +420,56 @@ TEST_F(NTPSnippetsFetcherTest, ShouldFetchSuccessfullyEmptyList) {
ElementsAre(base::Bucket(/*min=*/200, /*count=*/1)));
}
-// TODO(jkrcal) Return the tests ShouldReportEmptyHostsError and
-// ShouldRestrictToHosts once we have a way to change variation parameters from
-// unittests. The tests were tailored to previous default value of the parameter
-// fetching_host_restrict, which changed now.
+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",
+ /*count=*/1);
+ FastForwardUntilNoTasksRemain();
+ EXPECT_THAT(snippets_fetcher().last_status(),
+ Eq("Cannot fetch for empty hosts list."));
+ EXPECT_THAT(snippets_fetcher().last_json(), IsEmpty());
+ EXPECT_THAT(
+ histogram_tester().GetAllSamples("NewTabPage.Snippets.FetchResult"),
+ ElementsAre(base::Bucket(/*min=*/1, /*count=*/1)));
+ EXPECT_THAT(histogram_tester().GetAllSamples(
+ "NewTabPage.Snippets.FetchHttpResponseOrErrorCode"),
+ IsEmpty());
+ // This particular error gets triggered prior to JSON parsing and hence tests
+ // observe no fetch latency.
+ EXPECT_THAT(histogram_tester().GetAllSamples("NewTabPage.Snippets.FetchTime"),
+ ElementsAre(base::Bucket(/*min=*/0, /*count=*/1)));
+}
+
+TEST_F(NTPSnippetsFetcherHostRestrictedTest, ShouldRestrictToHosts) {
+ net::TestURLFetcherFactory test_url_fetcher_factory;
+ snippets_fetcher().FetchSnippetsFromHosts(
+ {"www.somehost1.com", "www.somehost2.com"}, test_lang(), /*count=*/17);
+ net::TestURLFetcher* fetcher = test_url_fetcher_factory.GetFetcherByID(0);
+ ASSERT_THAT(fetcher, NotNull());
+ std::unique_ptr<base::Value> value =
+ base::JSONReader::Read(fetcher->upload_data());
+ ASSERT_TRUE(value) << " failed to parse JSON: "
+ << PrintToString(fetcher->upload_data());
+ const base::DictionaryValue* dict = nullptr;
+ ASSERT_TRUE(value->GetAsDictionary(&dict));
+ const base::DictionaryValue* local_scoring_params = nullptr;
+ ASSERT_TRUE(dict->GetDictionary("advanced_options.local_scoring_params",
+ &local_scoring_params));
+ const base::ListValue* content_selectors = nullptr;
+ ASSERT_TRUE(
+ local_scoring_params->GetList("content_selectors", &content_selectors));
+ ASSERT_THAT(content_selectors->GetSize(), Eq(static_cast<size_t>(2)));
+ const base::DictionaryValue* content_selector = nullptr;
+ ASSERT_TRUE(content_selectors->GetDictionary(0, &content_selector));
+ std::string content_selector_value;
+ EXPECT_TRUE(content_selector->GetString("value", &content_selector_value));
+ EXPECT_THAT(content_selector_value, Eq("www.somehost1.com"));
+ ASSERT_TRUE(content_selectors->GetDictionary(1, &content_selector));
+ EXPECT_TRUE(content_selector->GetString("value", &content_selector_value));
+ EXPECT_THAT(content_selector_value, Eq("www.somehost2.com"));
+}
+
TEST_F(NTPSnippetsFetcherTest, ShouldReportUrlStatusError) {
SetFakeResponse(/*data=*/std::string(), net::HTTP_NOT_FOUND,
net::URLRequestStatus::FAILED);
« 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