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

Side by Side Diff: components/ntp_snippets/ntp_snippets_service_unittest.cc

Issue 1677073002: Fetch snippets from ChromeReader and show them on the NTP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix asan Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/macros.h" 5 #include "base/macros.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/thread_task_runner_handle.h"
6 #include "base/time/time.h" 8 #include "base/time/time.h"
7 #include "components/ntp_snippets/ntp_snippet.h" 9 #include "components/ntp_snippets/ntp_snippet.h"
10 #include "components/ntp_snippets/ntp_snippets_fetcher.h"
8 #include "components/ntp_snippets/ntp_snippets_service.h" 11 #include "components/ntp_snippets/ntp_snippets_service.h"
12 #include "components/signin/core/browser/account_tracker_service.h"
13 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
14 #include "components/signin/core/browser/fake_signin_manager.h"
15 #include "components/signin/core/browser/test_signin_client.h"
16 #include "net/url_request/url_request_test_util.h"
9 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
10 18
11 namespace { 19 namespace ntp_snippets {
12 20
13 class SnippetObserver : public ntp_snippets::NTPSnippetsServiceObserver { 21 class SnippetObserver : public NTPSnippetsServiceObserver {
14 public: 22 public:
15 SnippetObserver() : loaded_(false), shutdown_(false) {} 23 SnippetObserver() : loaded_(false), shutdown_(false) {}
16 ~SnippetObserver() override {} 24 ~SnippetObserver() override {}
17 25
18 void NTPSnippetsServiceLoaded( 26 void NTPSnippetsServiceLoaded(NTPSnippetsService* service) override {
19 ntp_snippets::NTPSnippetsService* service) override {
20 loaded_ = true; 27 loaded_ = true;
21 } 28 }
22 29
23 void NTPSnippetsServiceShutdown( 30 void NTPSnippetsServiceShutdown(NTPSnippetsService* service) override {
24 ntp_snippets::NTPSnippetsService* service) override {
25 shutdown_ = true; 31 shutdown_ = true;
26 loaded_ = false; 32 loaded_ = false;
27 } 33 }
28 34
29 bool loaded_; 35 bool loaded_;
30 bool shutdown_; 36 bool shutdown_;
31 37
32 private: 38 private:
33 DISALLOW_COPY_AND_ASSIGN(SnippetObserver); 39 DISALLOW_COPY_AND_ASSIGN(SnippetObserver);
34 }; 40 };
35 41
36 class NTPSnippetsServiceTest : public testing::Test { 42 class NTPSnippetsServiceTest : public testing::Test {
37 public: 43 public:
38 NTPSnippetsServiceTest() {} 44 NTPSnippetsServiceTest() {}
39 ~NTPSnippetsServiceTest() override {} 45 ~NTPSnippetsServiceTest() override {}
40 46
41 private: 47 private:
48 base::MessageLoop message_loop_;
42 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsServiceTest); 49 DISALLOW_COPY_AND_ASSIGN(NTPSnippetsServiceTest);
43 }; 50 };
44 51
52 scoped_ptr<NTPSnippetsService> CreateSnippetService(
53 const std::string& language_code) {
54
55 scoped_refptr<base::SingleThreadTaskRunner> task_runner(
56 base::ThreadTaskRunnerHandle::Get());
57 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter =
58 new net::TestURLRequestContextGetter(task_runner.get());
59 FakeProfileOAuth2TokenService* token_service =
60 new FakeProfileOAuth2TokenService();
61 scoped_ptr<TestSigninClient> signin_client(new TestSigninClient(nullptr));
62 scoped_ptr<AccountTrackerService> account_tracker(
63 new AccountTrackerService());
Marc Treib 2016/02/23 15:28:21 Waaait, now these will be deleted when CreateSnipp
May 2016/02/23 21:34:19 You're right, I didn't look into what the FakeSign
64 FakeSigninManagerBase* signin_manager = new FakeSigninManagerBase(
65 signin_client.get(), account_tracker.get());
66
67 scoped_ptr<NTPSnippetsService> service(
68 new NTPSnippetsService(task_runner.get(), language_code,
69 make_scoped_ptr(new NTPSnippetsFetcher(task_runner.get(),
70 signin_manager, token_service, request_context_getter,
71 base::FilePath()))));
72 return service;
73 }
74
45 TEST_F(NTPSnippetsServiceTest, Create) { 75 TEST_F(NTPSnippetsServiceTest, Create) {
46 std::string language_code("fr"); 76 std::string language_code("fr");
noyau (Ping after 24h) 2016/02/23 14:23:45 Right now it's always passing language code "fr" s
May 2016/02/23 21:34:18 Done.
47 scoped_ptr<ntp_snippets::NTPSnippetsService> service( 77 scoped_ptr<NTPSnippetsService> service(CreateSnippetService(language_code));
48 new ntp_snippets::NTPSnippetsService(language_code));
49
50 EXPECT_FALSE(service->is_loaded()); 78 EXPECT_FALSE(service->is_loaded());
51 } 79 }
52 80
53 TEST_F(NTPSnippetsServiceTest, Loop) { 81 TEST_F(NTPSnippetsServiceTest, Loop) {
54 std::string language_code("fr"); 82 std::string language_code("fr");
55 scoped_ptr<ntp_snippets::NTPSnippetsService> service( 83 scoped_ptr<NTPSnippetsService> service(CreateSnippetService(language_code));
56 new ntp_snippets::NTPSnippetsService(language_code));
57 84
58 EXPECT_FALSE(service->is_loaded()); 85 EXPECT_FALSE(service->is_loaded());
59 86
60 std::string json_str( 87 std::string json_str(
61 "{ \"recos\": [ " 88 "{ \"recos\": [ "
62 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 89 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
63 "]}"); 90 "]}");
64 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 91 EXPECT_TRUE(service->LoadFromJSONString(json_str));
65 92
66 EXPECT_TRUE(service->is_loaded()); 93 EXPECT_TRUE(service->is_loaded());
67 94
68 // The same for loop without the '&' should not compile. 95 // The same for loop without the '&' should not compile.
69 for (auto& snippet : *service) { 96 for (auto& snippet : *service) {
70 // Snippet here is a const. 97 // Snippet here is a const.
71 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar")); 98 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar"));
72 } 99 }
73 // Without the const, this should not compile. 100 // Without the const, this should not compile.
74 for (const ntp_snippets::NTPSnippet& snippet : *service) { 101 for (const NTPSnippet& snippet : *service) {
75 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar")); 102 EXPECT_EQ(snippet.url(), GURL("http://localhost/foobar"));
76 } 103 }
77 } 104 }
78 105
79 TEST_F(NTPSnippetsServiceTest, Full) { 106 TEST_F(NTPSnippetsServiceTest, Full) {
80 std::string language_code("fr"); 107 std::string language_code("fr");
81 scoped_ptr<ntp_snippets::NTPSnippetsService> service( 108 scoped_ptr<NTPSnippetsService> service(CreateSnippetService(language_code));
82 new ntp_snippets::NTPSnippetsService(language_code));
83 109
84 std::string json_str( 110 std::string json_str(
85 "{ \"recos\": [ " 111 "{ \"recos\": [ "
86 "{ \"contentInfo\": {" 112 "{ \"contentInfo\": {"
87 "\"url\" : \"http://localhost/foobar\"," 113 "\"url\" : \"http://localhost/foobar\","
88 "\"site_title\" : \"Site Title\"," 114 "\"site_title\" : \"Site Title\","
89 "\"favicon_url\" : \"http://localhost/favicon\"," 115 "\"favicon_url\" : \"http://localhost/favicon\","
90 "\"title\" : \"Title\"," 116 "\"title\" : \"Title\","
91 "\"snippet\" : \"Snippet\"," 117 "\"snippet\" : \"Snippet\","
92 "\"thumbnailUrl\" : \"http://localhost/salient_image\"," 118 "\"thumbnailUrl\" : \"http://localhost/salient_image\","
(...skipping 13 matching lines...) Expand all
106 EXPECT_EQ(snippet.salient_image_url(), 132 EXPECT_EQ(snippet.salient_image_url(),
107 GURL("http://localhost/salient_image")); 133 GURL("http://localhost/salient_image"));
108 base::Time then = 134 base::Time then =
109 base::Time::FromUTCExploded({2015, 11, 4, 25, 13, 46, 45}); 135 base::Time::FromUTCExploded({2015, 11, 4, 25, 13, 46, 45});
110 EXPECT_EQ(then, snippet.publish_date()); 136 EXPECT_EQ(then, snippet.publish_date());
111 } 137 }
112 } 138 }
113 139
114 TEST_F(NTPSnippetsServiceTest, ObserverNotLoaded) { 140 TEST_F(NTPSnippetsServiceTest, ObserverNotLoaded) {
115 std::string language_code("fr"); 141 std::string language_code("fr");
116 scoped_ptr<ntp_snippets::NTPSnippetsService> service( 142 scoped_ptr<NTPSnippetsService> service(CreateSnippetService(language_code));
117 new ntp_snippets::NTPSnippetsService(language_code));
118 143
119 SnippetObserver observer; 144 SnippetObserver observer;
120 service->AddObserver(&observer); 145 service->AddObserver(&observer);
121 EXPECT_FALSE(observer.loaded_); 146 EXPECT_FALSE(observer.loaded_);
122 147
123 std::string json_str( 148 std::string json_str(
124 "{ \"recos\": [ " 149 "{ \"recos\": [ "
125 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 150 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
126 "]}"); 151 "]}");
127 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 152 EXPECT_TRUE(service->LoadFromJSONString(json_str));
128 EXPECT_TRUE(observer.loaded_); 153 EXPECT_TRUE(observer.loaded_);
129 154
130 service->RemoveObserver(&observer); 155 service->RemoveObserver(&observer);
131 } 156 }
132 157
133 TEST_F(NTPSnippetsServiceTest, ObserverLoaded) { 158 TEST_F(NTPSnippetsServiceTest, ObserverLoaded) {
134 std::string language_code("fr"); 159 std::string language_code("fr");
135 scoped_ptr<ntp_snippets::NTPSnippetsService> service( 160 scoped_ptr<NTPSnippetsService> service(CreateSnippetService(language_code));
136 new ntp_snippets::NTPSnippetsService(language_code));
137 161
138 std::string json_str( 162 std::string json_str(
139 "{ \"recos\": [ " 163 "{ \"recos\": [ "
140 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}" 164 "{ \"contentInfo\": { \"url\" : \"http://localhost/foobar\" }}"
141 "]}"); 165 "]}");
142 EXPECT_TRUE(service->LoadFromJSONString(json_str)); 166 EXPECT_TRUE(service->LoadFromJSONString(json_str));
143 167
144 SnippetObserver observer; 168 SnippetObserver observer;
145 service->AddObserver(&observer); 169 service->AddObserver(&observer);
146 170
147 EXPECT_TRUE(observer.loaded_); 171 EXPECT_TRUE(observer.loaded_);
148 172
149 service->RemoveObserver(&observer); 173 service->RemoveObserver(&observer);
150 } 174 }
151 } // namespace 175 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698