Chromium Code Reviews| Index: chrome/browser/search/suggestions/suggestions_service_unittest.cc |
| diff --git a/chrome/browser/search/suggestions/suggestions_service_unittest.cc b/chrome/browser/search/suggestions/suggestions_service_unittest.cc |
| index 913927feb67944f43b5632fc1701f53ba18637b1..cad6335204ff0b99b1e47aacfa90e730b0f0aba1 100644 |
| --- a/chrome/browser/search/suggestions/suggestions_service_unittest.cc |
| +++ b/chrome/browser/search/suggestions/suggestions_service_unittest.cc |
| @@ -29,9 +29,12 @@ |
| namespace { |
| const char kFakeSuggestionsURL[] = "https://mysuggestions.com/proto"; |
| +const char kFakeSuggestionsSuffix[] = "?foo=bar"; |
| +const char kFakeBlacklistSuffix[] = "/blacklist?foo=bar&baz="; |
| const char kTestTitle[] = "a title"; |
| const char kTestUrl[] = "http://go.com"; |
| +const char kBlacklistUrl[] = "http://blacklist.com"; |
| scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( |
| const GURL& url, net::URLFetcherDelegate* delegate, |
| @@ -53,6 +56,18 @@ scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( |
| namespace suggestions { |
| +namespace { |
| + |
| +scoped_ptr<SuggestionsProfile> CreateSuggestionsProfile() { |
| + scoped_ptr<SuggestionsProfile> profile(new SuggestionsProfile()); |
| + ChromeSuggestion* suggestion = profile->add_suggestions(); |
| + suggestion->set_title(kTestTitle); |
| + suggestion->set_url(kTestUrl); |
| + return profile.Pass(); |
| +} |
| + |
| +} // namespace |
| + |
| class SuggestionsServiceTest : public testing::Test { |
| public: |
| void CheckSuggestionsData(const SuggestionsProfile& suggestions_profile) { |
| @@ -80,7 +95,9 @@ class SuggestionsServiceTest : public testing::Test { |
| virtual ~SuggestionsServiceTest() {} |
| // Enables the "ChromeSuggestions.Group1" field trial. |
| - void EnableFieldTrial(const std::string& url) { |
| + void EnableFieldTrial(const std::string& url, |
| + const std::string& suggestions_suffix, |
| + const std::string& blacklist_suffix) { |
| // Clear the existing |field_trial_list_| to avoid firing a DCHECK. |
| field_trial_list_.reset(NULL); |
| field_trial_list_.reset( |
| @@ -91,6 +108,8 @@ class SuggestionsServiceTest : public testing::Test { |
| params[kSuggestionsFieldTrialStateParam] = |
| kSuggestionsFieldTrialStateEnabled; |
| params[kSuggestionsFieldTrialURLParam] = url; |
| + params[kSuggestionsFieldTrialSuggestionsSuffixParam] = suggestions_suffix; |
| + params[kSuggestionsFieldTrialBlacklistSuffixParam] = blacklist_suffix; |
| chrome_variations::AssociateVariationParams(kSuggestionsFieldTrialName, |
| "Group1", params); |
| field_trial_ = base::FieldTrialList::CreateFieldTrial( |
| @@ -122,22 +141,23 @@ TEST_F(SuggestionsServiceTest, ServiceBeingCreated) { |
| EXPECT_TRUE(CreateSuggestionsService() == NULL); |
| // Field trial enabled. |
| - EnableFieldTrial(""); |
| + EnableFieldTrial("", "", ""); |
| EXPECT_TRUE(CreateSuggestionsService() != NULL); |
| } |
| TEST_F(SuggestionsServiceTest, FetchSuggestionsData) { |
| // Field trial enabled with a specific suggestions URL. |
| - EnableFieldTrial(kFakeSuggestionsURL); |
| + EnableFieldTrial(kFakeSuggestionsURL, kFakeSuggestionsSuffix, |
| + kFakeBlacklistSuffix); |
| SuggestionsService* suggestions_service = CreateSuggestionsService(); |
| EXPECT_TRUE(suggestions_service != NULL); |
| - SuggestionsProfile suggestions_profile; |
| - ChromeSuggestion* suggestion = suggestions_profile.add_suggestions(); |
| - suggestion->set_title(kTestTitle); |
| - suggestion->set_url(kTestUrl); |
| - factory_.SetFakeResponse(GURL(kFakeSuggestionsURL), |
| - suggestions_profile.SerializeAsString(), |
| + std::string expected_url = std::string(kFakeSuggestionsURL) + |
| + kFakeSuggestionsSuffix; |
| + scoped_ptr<SuggestionsProfile> suggestions_profile( |
| + CreateSuggestionsProfile()); |
| + factory_.SetFakeResponse(GURL(expected_url), |
| + suggestions_profile->SerializeAsString(), |
| net::HTTP_OK, |
| net::URLRequestStatus::SUCCESS); |
| @@ -160,12 +180,15 @@ TEST_F(SuggestionsServiceTest, FetchSuggestionsData) { |
| TEST_F(SuggestionsServiceTest, FetchSuggestionsDataRequestError) { |
| // Field trial enabled with a specific suggestions URL. |
| - EnableFieldTrial(kFakeSuggestionsURL); |
| + EnableFieldTrial(kFakeSuggestionsURL, kFakeSuggestionsSuffix, |
| + kFakeBlacklistSuffix); |
| SuggestionsService* suggestions_service = CreateSuggestionsService(); |
| EXPECT_TRUE(suggestions_service != NULL); |
| // Fake a request error. |
| - factory_.SetFakeResponse(GURL(kFakeSuggestionsURL), |
| + std::string expected_url = std::string(kFakeSuggestionsURL) + |
| + kFakeSuggestionsSuffix; |
| + factory_.SetFakeResponse(GURL(expected_url), |
| "irrelevant", |
| net::HTTP_OK, |
| net::URLRequestStatus::FAILED); |
| @@ -184,12 +207,15 @@ TEST_F(SuggestionsServiceTest, FetchSuggestionsDataRequestError) { |
| TEST_F(SuggestionsServiceTest, FetchSuggestionsDataResponseNotOK) { |
| // Field trial enabled with a specific suggestions URL. |
| - EnableFieldTrial(kFakeSuggestionsURL); |
| + EnableFieldTrial(kFakeSuggestionsURL, kFakeSuggestionsSuffix, |
| + kFakeBlacklistSuffix); |
| SuggestionsService* suggestions_service = CreateSuggestionsService(); |
| EXPECT_TRUE(suggestions_service != NULL); |
| // Response code != 200. |
| - factory_.SetFakeResponse(GURL(kFakeSuggestionsURL), |
| + std::string expected_url = std::string(kFakeSuggestionsURL) + |
| + kFakeSuggestionsSuffix; |
| + factory_.SetFakeResponse(GURL(expected_url), |
| "irrelevant", |
| net::HTTP_BAD_REQUEST, |
| net::URLRequestStatus::SUCCESS); |
| @@ -206,4 +232,34 @@ TEST_F(SuggestionsServiceTest, FetchSuggestionsDataResponseNotOK) { |
| EXPECT_EQ(1, suggestions_empty_data_count_); |
| } |
| +TEST_F(SuggestionsServiceTest, AddBlacklistedURL) { |
| + EnableFieldTrial(kFakeSuggestionsURL, kFakeSuggestionsSuffix, |
| + kFakeBlacklistSuffix); |
| + SuggestionsService* suggestions_service = CreateSuggestionsService(); |
| + EXPECT_TRUE(suggestions_service != NULL); |
| + |
| + std::string expected_url(kFakeSuggestionsURL); |
| + expected_url.append(kFakeBlacklistSuffix) |
| + .append(net::EscapeQueryParamValue(kBlacklistUrl, true)); |
| + LOG(INFO) << expected_url; |
|
Mathieu
2014/05/22 21:50:49
fix
manzagop (departed)
2014/05/23 15:20:02
Done.
|
| + scoped_ptr<SuggestionsProfile> suggestions_profile( |
| + CreateSuggestionsProfile()); |
| + factory_.SetFakeResponse(GURL(expected_url), |
| + suggestions_profile->SerializeAsString(), |
| + net::HTTP_OK, |
| + net::URLRequestStatus::SUCCESS); |
| + |
| + // Send the request. The data will be returned to the callback. |
| + suggestions_service->AddBlacklistedURL( |
| + kBlacklistUrl, |
| + base::Bind(&SuggestionsServiceTest::CheckSuggestionsData, |
| + base::Unretained(this))); |
| + |
| + // (Testing only) wait until suggestion fetch is complete. |
|
Mathieu
2014/05/22 21:50:49
blacklist request
manzagop (departed)
2014/05/23 15:20:02
Done.
|
| + base::MessageLoop::current()->RunUntilIdle(); |
| + |
| + // Ensure that CheckSuggestionsData() ran twice. |
|
Mathieu
2014/05/22 21:50:49
Once?
manzagop (departed)
2014/05/23 15:20:02
Done.
|
| + EXPECT_EQ(1, suggestions_data_check_count_); |
| +} |
| + |
| } // namespace suggestions |