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

Side by Side Diff: chrome/browser/sync/glue/autofill_profile_syncable_service_unittest.cc

Issue 8065016: [Sync] Refactor non-frontend DTC to handle new API properly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reffffactor Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/location.h" 5 #include "base/location.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/autofill/autofill_profile.h" 7 #include "chrome/browser/autofill/autofill_profile.h"
8 #include "chrome/browser/sync/glue/autofill_profile_syncable_service.h" 8 #include "chrome/browser/sync/glue/autofill_profile_syncable_service.h"
9 #include "chrome/browser/sync/internal_api/read_node_mock.h" 9 #include "chrome/browser/sync/internal_api/read_node_mock.h"
10 #include "chrome/browser/sync/internal_api/syncapi_mock.h" 10 #include "chrome/browser/sync/internal_api/syncapi_mock.h"
(...skipping 16 matching lines...) Expand all
27 class MockAutofillProfileSyncableService 27 class MockAutofillProfileSyncableService
28 : public browser_sync::AutofillProfileSyncableService { 28 : public browser_sync::AutofillProfileSyncableService {
29 public: 29 public:
30 MockAutofillProfileSyncableService() { 30 MockAutofillProfileSyncableService() {
31 } 31 }
32 virtual ~MockAutofillProfileSyncableService() {} 32 virtual ~MockAutofillProfileSyncableService() {}
33 33
34 MOCK_METHOD1(LoadAutofillData, bool(std::vector<AutofillProfile*>*)); 34 MOCK_METHOD1(LoadAutofillData, bool(std::vector<AutofillProfile*>*));
35 MOCK_METHOD1(SaveChangesToWebData, 35 MOCK_METHOD1(SaveChangesToWebData,
36 bool(const AutofillProfileSyncableService::DataBundle&)); 36 bool(const AutofillProfileSyncableService::DataBundle&));
37
38 // Helper for tests that do not need to setup service completely through the
39 // MergeDataAndStartSyncing().
40 class AutoSetSyncProcessor {
41 public:
42 AutoSetSyncProcessor(MockAutofillProfileSyncableService* service,
43 SyncChangeProcessor* sync_processor)
44 : service_(service) {
45 service->set_sync_processor(sync_processor);
46 }
47 ~AutoSetSyncProcessor() {
48 service_->set_sync_processor(NULL);
49 }
50 MockAutofillProfileSyncableService* service_;
51 };
52 }; 37 };
53 38
54 ACTION_P(CopyData, data) { 39 ACTION_P(CopyData, data) {
55 arg0->resize(data->size()); 40 arg0->resize(data->size());
56 std::copy(data->begin(), data->end(), arg0->begin()); 41 std::copy(data->begin(), data->end(), arg0->begin());
57 } 42 }
58 43
59 MATCHER_P(CheckSyncChanges, n_sync_changes_list, "") { 44 MATCHER_P(CheckSyncChanges, n_sync_changes_list, "") {
60 if (arg.size() != n_sync_changes_list.size()) 45 if (arg.size() != n_sync_changes_list.size())
61 return false; 46 return false;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 MOCK_METHOD2(ProcessSyncChanges, 92 MOCK_METHOD2(ProcessSyncChanges,
108 SyncError(const tracked_objects::Location&, 93 SyncError(const tracked_objects::Location&,
109 const SyncChangeList&)); 94 const SyncChangeList&));
110 }; 95 };
111 96
112 class AutofillProfileSyncableServiceTest : public testing::Test { 97 class AutofillProfileSyncableServiceTest : public testing::Test {
113 public: 98 public:
114 AutofillProfileSyncableServiceTest() 99 AutofillProfileSyncableServiceTest()
115 : db_thread_(BrowserThread::DB, &message_loop_) {} 100 : db_thread_(BrowserThread::DB, &message_loop_) {}
116 101
102 virtual void SetUp() OVERRIDE {
103 sync_processor_.reset(new MockSyncChangeProcessor);
104 }
105
106 virtual void TearDown() OVERRIDE {
107 // Each test passes ownership of the sync processor to the SyncableService.
108 // We don't release it immediately so we can verify the mock calls, so
109 // release it at teardown. Any test that doesn't call
110 // MergeDataAndStartSyncing or set_sync_processor must ensure the
111 // sync_processor_ gets properly reset.
112 ignore_result(sync_processor_.release());
113 }
117 protected: 114 protected:
118 MessageLoop message_loop_; 115 MessageLoop message_loop_;
119 BrowserThread db_thread_; 116 BrowserThread db_thread_;
120 MockAutofillProfileSyncableService autofill_syncable_service_; 117 MockAutofillProfileSyncableService autofill_syncable_service_;
121 MockSyncChangeProcessor sync_processor_; 118 scoped_ptr<MockSyncChangeProcessor> sync_processor_;
122 }; 119 };
123 120
124 TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) { 121 TEST_F(AutofillProfileSyncableServiceTest, MergeDataAndStartSyncing) {
125 std::vector<AutofillProfile *> profiles_from_web_db; 122 std::vector<AutofillProfile *> profiles_from_web_db;
126 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 123 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
127 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 124 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
128 std::string guid_synced1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44D"; 125 std::string guid_synced1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44D";
129 std::string guid_synced2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44E"; 126 std::string guid_synced2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44E";
130 127
131 profiles_from_web_db.push_back(new AutofillProfile(guid_present1)); 128 profiles_from_web_db.push_back(new AutofillProfile(guid_present1));
(...skipping 24 matching lines...) Expand all
156 expected_bundle.profiles_to_add.push_back(&profile2); 153 expected_bundle.profiles_to_add.push_back(&profile2);
157 expected_bundle.profiles_to_update.push_back(&profile3); 154 expected_bundle.profiles_to_update.push_back(&profile3);
158 155
159 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_)) 156 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
160 .Times(1) 157 .Times(1)
161 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true))); 158 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
162 EXPECT_CALL(autofill_syncable_service_, 159 EXPECT_CALL(autofill_syncable_service_,
163 SaveChangesToWebData(DataBundleCheck(expected_bundle))) 160 SaveChangesToWebData(DataBundleCheck(expected_bundle)))
164 .Times(1) 161 .Times(1)
165 .WillOnce(Return(true)); 162 .WillOnce(Return(true));
166 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 163 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
167 .WillByDefault(Return(SyncError())); 164 .WillByDefault(Return(SyncError()));
168 EXPECT_CALL(sync_processor_, 165 EXPECT_CALL(*sync_processor_,
169 ProcessSyncChanges(_, CheckSyncChanges(expected_change_list))) 166 ProcessSyncChanges(_, CheckSyncChanges(expected_change_list)))
170 .Times(1) 167 .Times(1)
171 .WillOnce(Return(SyncError())); 168 .WillOnce(Return(SyncError()));
172 169
170 // Takes ownership of sync_processor_.
173 autofill_syncable_service_.MergeDataAndStartSyncing( 171 autofill_syncable_service_.MergeDataAndStartSyncing(
174 syncable::AUTOFILL_PROFILE, data_list, &sync_processor_); 172 syncable::AUTOFILL_PROFILE, data_list, sync_processor_.get());
175 autofill_syncable_service_.StopSyncing(syncable::AUTOFILL_PROFILE); 173 autofill_syncable_service_.StopSyncing(syncable::AUTOFILL_PROFILE);
176 } 174 }
177 175
178 TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) { 176 TEST_F(AutofillProfileSyncableServiceTest, GetAllSyncData) {
179 std::vector<AutofillProfile *> profiles_from_web_db; 177 std::vector<AutofillProfile *> profiles_from_web_db;
180 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 178 std::string guid_present1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
181 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 179 std::string guid_present2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
182 180
183 profiles_from_web_db.push_back(new AutofillProfile(guid_present1)); 181 profiles_from_web_db.push_back(new AutofillProfile(guid_present1));
184 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("John")); 182 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("John"));
185 profiles_from_web_db.push_back(new AutofillProfile(guid_present2)); 183 profiles_from_web_db.push_back(new AutofillProfile(guid_present2));
186 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("Jane")); 184 profiles_from_web_db.back()->SetInfo(NAME_FIRST, UTF8ToUTF16("Jane"));
187 185
188 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_)) 186 EXPECT_CALL(autofill_syncable_service_, LoadAutofillData(_))
189 .Times(1) 187 .Times(1)
190 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true))); 188 .WillOnce(DoAll(CopyData(&profiles_from_web_db), Return(true)));
191 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(_)) 189 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(_))
192 .Times(1) 190 .Times(1)
193 .WillOnce(Return(true)); 191 .WillOnce(Return(true));
194 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 192 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
195 .WillByDefault(Return(SyncError())); 193 .WillByDefault(Return(SyncError()));
196 EXPECT_CALL(sync_processor_, 194 EXPECT_CALL(*sync_processor_,
197 ProcessSyncChanges(_, Property(&SyncChangeList::size, Eq(2U)))) 195 ProcessSyncChanges(_, Property(&SyncChangeList::size, Eq(2U))))
198 .Times(1) 196 .Times(1)
199 .WillOnce(Return(SyncError())); 197 .WillOnce(Return(SyncError()));
200 198
201 SyncDataList data_list; 199 SyncDataList data_list;
200 // Takes ownership of sync_processor_.
202 autofill_syncable_service_.MergeDataAndStartSyncing( 201 autofill_syncable_service_.MergeDataAndStartSyncing(
203 syncable::AUTOFILL_PROFILE, data_list, &sync_processor_); 202 syncable::AUTOFILL_PROFILE, data_list, sync_processor_.get());
204 203
205 SyncDataList data = 204 SyncDataList data =
206 autofill_syncable_service_.GetAllSyncData(syncable::AUTOFILL_PROFILE); 205 autofill_syncable_service_.GetAllSyncData(syncable::AUTOFILL_PROFILE);
207 206
208 EXPECT_EQ(2U, data.size()); 207 EXPECT_EQ(2U, data.size());
209 EXPECT_EQ(guid_present1, data.front().GetSpecifics() 208 EXPECT_EQ(guid_present1, data.front().GetSpecifics()
210 .GetExtension(sync_pb::autofill_profile).guid()); 209 .GetExtension(sync_pb::autofill_profile).guid());
211 EXPECT_EQ(guid_present2, data.back().GetSpecifics() 210 EXPECT_EQ(guid_present2, data.back().GetSpecifics()
212 .GetExtension(sync_pb::autofill_profile).guid()); 211 .GetExtension(sync_pb::autofill_profile).guid());
213 } 212 }
(...skipping 16 matching lines...) Expand all
230 229
231 AutofillProfileSyncableService::DataBundle expected_bundle; 230 AutofillProfileSyncableService::DataBundle expected_bundle;
232 expected_bundle.profiles_to_delete.push_back(guid_present); 231 expected_bundle.profiles_to_delete.push_back(guid_present);
233 expected_bundle.profiles_to_add.push_back(&profile); 232 expected_bundle.profiles_to_add.push_back(&profile);
234 233
235 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData( 234 EXPECT_CALL(autofill_syncable_service_, SaveChangesToWebData(
236 DataBundleCheck(expected_bundle))) 235 DataBundleCheck(expected_bundle)))
237 .Times(1) 236 .Times(1)
238 .WillOnce(Return(true)); 237 .WillOnce(Return(true));
239 238
240 MockAutofillProfileSyncableService::AutoSetSyncProcessor temp( 239 autofill_syncable_service_.set_sync_processor(sync_processor_.get());
241 &autofill_syncable_service_, &sync_processor_);
242 SyncError error = autofill_syncable_service_.ProcessSyncChanges( 240 SyncError error = autofill_syncable_service_.ProcessSyncChanges(
243 FROM_HERE, change_list); 241 FROM_HERE, change_list);
244 242
245 EXPECT_FALSE(error.IsSet()); 243 EXPECT_FALSE(error.IsSet());
246 } 244 }
247 245
248 TEST_F(AutofillProfileSyncableServiceTest, ActOnChange) { 246 TEST_F(AutofillProfileSyncableServiceTest, ActOnChange) {
249 std::string guid1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B"; 247 std::string guid1 = "EDC609ED-7EEE-4F27-B00C-423242A9C44B";
250 std::string guid2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C"; 248 std::string guid2 = "EDC609ED-7EEE-4F27-B00C-423242A9C44C";
251 249
252 AutofillProfile profile(guid1); 250 AutofillProfile profile(guid1);
253 profile.SetInfo(NAME_FIRST, UTF8ToUTF16("Jane")); 251 profile.SetInfo(NAME_FIRST, UTF8ToUTF16("Jane"));
254 AutofillProfileChange change1(AutofillProfileChange::ADD, guid1, &profile); 252 AutofillProfileChange change1(AutofillProfileChange::ADD, guid1, &profile);
255 AutofillProfileChange change2(AutofillProfileChange::REMOVE, guid2, NULL); 253 AutofillProfileChange change2(AutofillProfileChange::REMOVE, guid2, NULL);
256 ON_CALL(sync_processor_, ProcessSyncChanges(_, _)) 254 ON_CALL(*sync_processor_, ProcessSyncChanges(_, _))
257 .WillByDefault(Return(SyncError(FROM_HERE, std::string("an error"), 255 .WillByDefault(Return(SyncError(FROM_HERE, std::string("an error"),
258 syncable::AUTOFILL_PROFILE))); 256 syncable::AUTOFILL_PROFILE)));
259 257
260 MockAutofillProfileSyncableService::AutoSetSyncProcessor temp( 258 autofill_syncable_service_.set_sync_processor(sync_processor_.get());
261 &autofill_syncable_service_, &sync_processor_);
262 autofill_syncable_service_.ActOnChange(change1); 259 autofill_syncable_service_.ActOnChange(change1);
263 autofill_syncable_service_.ActOnChange(change2); 260 autofill_syncable_service_.ActOnChange(change2);
264 } 261 }
265 262
266 } // namespace browser_sync 263 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698