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

Side by Side Diff: components/sync_driver/generic_change_processor_unittest.cc

Issue 548533003: Replace AttachmentStore's StoreAttachments with UploadAttachments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Call get() on scoped_refptr. Created 6 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/sync_driver/generic_change_processor.h" 5 #include "components/sync_driver/generic_change_processor.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h"
10 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
11 #include "components/sync_driver/data_type_error_handler_mock.h" 12 #include "components/sync_driver/data_type_error_handler_mock.h"
12 #include "components/sync_driver/sync_api_component_factory.h" 13 #include "components/sync_driver/sync_api_component_factory.h"
13 #include "sync/api/attachments/fake_attachment_store.h" 14 #include "sync/api/attachments/fake_attachment_store.h"
14 #include "sync/api/fake_syncable_service.h" 15 #include "sync/api/fake_syncable_service.h"
15 #include "sync/api/sync_change.h" 16 #include "sync/api/sync_change.h"
16 #include "sync/api/sync_merge_result.h" 17 #include "sync/api/sync_merge_result.h"
17 #include "sync/internal_api/public/attachments/attachment_service_impl.h" 18 #include "sync/internal_api/public/attachments/attachment_service_impl.h"
18 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h" 19 #include "sync/internal_api/public/attachments/fake_attachment_downloader.h"
19 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h" 20 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h"
20 #include "sync/internal_api/public/base/model_type.h" 21 #include "sync/internal_api/public/base/model_type.h"
21 #include "sync/internal_api/public/read_node.h" 22 #include "sync/internal_api/public/read_node.h"
22 #include "sync/internal_api/public/read_transaction.h" 23 #include "sync/internal_api/public/read_transaction.h"
23 #include "sync/internal_api/public/sync_encryption_handler.h" 24 #include "sync/internal_api/public/sync_encryption_handler.h"
24 #include "sync/internal_api/public/test/test_user_share.h" 25 #include "sync/internal_api/public/test/test_user_share.h"
25 #include "sync/internal_api/public/user_share.h" 26 #include "sync/internal_api/public/user_share.h"
26 #include "sync/internal_api/public/write_node.h" 27 #include "sync/internal_api/public/write_node.h"
27 #include "sync/internal_api/public/write_transaction.h" 28 #include "sync/internal_api/public/write_transaction.h"
29 #include "testing/gmock/include/gmock/gmock-matchers.h"
28 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
29 31
30 namespace sync_driver { 32 namespace sync_driver {
31 33
32 namespace { 34 namespace {
33 35
34 const char kTestData[] = "some data"; 36 const char kTestData[] = "some data";
35 37
36 // A mock that keeps track of attachments passed to StoreAttachments. 38 // A mock that keeps track of attachments passed to UploadAttachments.
37 class MockAttachmentService : public syncer::AttachmentServiceImpl { 39 class MockAttachmentService : public syncer::AttachmentServiceImpl {
38 public: 40 public:
39 MockAttachmentService(); 41 MockAttachmentService();
40 virtual ~MockAttachmentService(); 42 virtual ~MockAttachmentService();
41 virtual void StoreAttachments(const syncer::AttachmentList& attachments, 43 virtual void UploadAttachments(
42 const StoreCallback& callback) OVERRIDE; 44 const syncer::AttachmentIdSet& attachment_ids) OVERRIDE;
43 std::vector<syncer::AttachmentList>* attachment_lists(); 45 std::vector<syncer::AttachmentIdSet>* attachment_id_sets();
44 46
45 private: 47 private:
46 std::vector<syncer::AttachmentList> attachment_lists_; 48 std::vector<syncer::AttachmentIdSet> attachment_id_sets_;
47 }; 49 };
48 50
49 MockAttachmentService::MockAttachmentService() 51 MockAttachmentService::MockAttachmentService()
50 : AttachmentServiceImpl( 52 : AttachmentServiceImpl(
51 scoped_ptr<syncer::AttachmentStore>(new syncer::FakeAttachmentStore( 53 scoped_ptr<syncer::AttachmentStore>(new syncer::FakeAttachmentStore(
52 base::MessageLoopProxy::current())), 54 base::MessageLoopProxy::current())),
53 scoped_ptr<syncer::AttachmentUploader>( 55 scoped_ptr<syncer::AttachmentUploader>(
54 new syncer::FakeAttachmentUploader), 56 new syncer::FakeAttachmentUploader),
55 scoped_ptr<syncer::AttachmentDownloader>( 57 scoped_ptr<syncer::AttachmentDownloader>(
56 new syncer::FakeAttachmentDownloader), 58 new syncer::FakeAttachmentDownloader),
57 NULL) { 59 NULL) {
58 } 60 }
59 61
60 MockAttachmentService::~MockAttachmentService() { 62 MockAttachmentService::~MockAttachmentService() {
61 } 63 }
62 64
63 void MockAttachmentService::StoreAttachments( 65 void MockAttachmentService::UploadAttachments(
64 const syncer::AttachmentList& attachments, 66 const syncer::AttachmentIdSet& attachment_ids) {
65 const StoreCallback& callback) { 67 attachment_id_sets_.push_back(attachment_ids);
66 attachment_lists_.push_back(attachments); 68 AttachmentServiceImpl::UploadAttachments(attachment_ids);
67 AttachmentServiceImpl::StoreAttachments(attachments, callback);
68 } 69 }
69 70
70 std::vector<syncer::AttachmentList>* MockAttachmentService::attachment_lists() { 71 std::vector<syncer::AttachmentIdSet>*
71 return &attachment_lists_; 72 MockAttachmentService::attachment_id_sets() {
73 return &attachment_id_sets_;
72 } 74 }
73 75
74 // MockSyncApiComponentFactory needed to initialize GenericChangeProcessor and 76 // MockSyncApiComponentFactory needed to initialize GenericChangeProcessor and
75 // pass MockAttachmentService to it. 77 // pass MockAttachmentService to it.
76 class MockSyncApiComponentFactory : public SyncApiComponentFactory { 78 class MockSyncApiComponentFactory : public SyncApiComponentFactory {
77 public: 79 public:
78 MockSyncApiComponentFactory( 80 MockSyncApiComponentFactory(
79 scoped_ptr<syncer::AttachmentService> attachment_service) 81 scoped_ptr<syncer::AttachmentService> attachment_service)
80 : attachment_service_(attachment_service.Pass()) {} 82 : attachment_service_(attachment_service.Pass()) {}
81 83
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 } 156 }
155 157
156 syncer::UserShare* user_share() { 158 syncer::UserShare* user_share() {
157 return test_user_share_.user_share(); 159 return test_user_share_.user_share();
158 } 160 }
159 161
160 MockAttachmentService* mock_attachment_service() { 162 MockAttachmentService* mock_attachment_service() {
161 return mock_attachment_service_; 163 return mock_attachment_service_;
162 } 164 }
163 165
166 void RunLoop() {
167 base::RunLoop run_loop;
168 run_loop.RunUntilIdle();
169 }
170
164 private: 171 private:
165 base::MessageLoopForUI loop_; 172 base::MessageLoopForUI loop_;
166 173
167 syncer::SyncMergeResult sync_merge_result_; 174 syncer::SyncMergeResult sync_merge_result_;
168 base::WeakPtrFactory<syncer::SyncMergeResult> merge_result_ptr_factory_; 175 base::WeakPtrFactory<syncer::SyncMergeResult> merge_result_ptr_factory_;
169 176
170 syncer::FakeSyncableService fake_syncable_service_; 177 syncer::FakeSyncableService fake_syncable_service_;
171 base::WeakPtrFactory<syncer::FakeSyncableService> 178 base::WeakPtrFactory<syncer::FakeSyncableService>
172 syncable_service_ptr_factory_; 179 syncable_service_ptr_factory_;
173 180
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 349
343 // Add a SyncData with two attachments. 350 // Add a SyncData with two attachments.
344 syncer::SyncChangeList change_list; 351 syncer::SyncChangeList change_list;
345 change_list.push_back( 352 change_list.push_back(
346 syncer::SyncChange(FROM_HERE, 353 syncer::SyncChange(FROM_HERE,
347 syncer::SyncChange::ACTION_ADD, 354 syncer::SyncChange::ACTION_ADD,
348 syncer::SyncData::CreateLocalDataWithAttachments( 355 syncer::SyncData::CreateLocalDataWithAttachments(
349 tag, title, specifics, attachments))); 356 tag, title, specifics, attachments)));
350 ASSERT_FALSE( 357 ASSERT_FALSE(
351 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 358 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
359 RunLoop();
352 360
353 // Check that the AttachmentService received the new attachments. 361 // Check that the AttachmentService received the new attachments.
354 ASSERT_EQ(mock_attachment_service()->attachment_lists()->size(), 1U); 362 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U);
355 const syncer::AttachmentList& attachments_added = 363 const syncer::AttachmentIdSet& attachments_added =
356 mock_attachment_service()->attachment_lists()->front(); 364 mock_attachment_service()->attachment_id_sets()->front();
357 ASSERT_EQ(attachments_added.size(), 2U); 365 ASSERT_THAT(attachments_added,
358 ASSERT_EQ(attachments_added[0].GetId(), attachments[0].GetId()); 366 testing::UnorderedElementsAre(attachments[0].GetId(),
359 ASSERT_EQ(attachments_added[1].GetId(), attachments[1].GetId()); 367 attachments[1].GetId()));
360 368
361 // Update the SyncData, replacing its two attachments with one new attachment. 369 // Update the SyncData, replacing its two attachments with one new attachment.
362 syncer::AttachmentList new_attachments; 370 syncer::AttachmentList new_attachments;
363 new_attachments.push_back(syncer::Attachment::Create(attachment_data)); 371 new_attachments.push_back(syncer::Attachment::Create(attachment_data));
364 mock_attachment_service()->attachment_lists()->clear(); 372 mock_attachment_service()->attachment_id_sets()->clear();
365 change_list.clear(); 373 change_list.clear();
366 change_list.push_back( 374 change_list.push_back(
367 syncer::SyncChange(FROM_HERE, 375 syncer::SyncChange(FROM_HERE,
368 syncer::SyncChange::ACTION_UPDATE, 376 syncer::SyncChange::ACTION_UPDATE,
369 syncer::SyncData::CreateLocalDataWithAttachments( 377 syncer::SyncData::CreateLocalDataWithAttachments(
370 tag, title, specifics, new_attachments))); 378 tag, title, specifics, new_attachments)));
371 ASSERT_FALSE( 379 ASSERT_FALSE(
372 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 380 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
381 RunLoop();
373 382
374 // Check that the AttachmentService received it. 383 // Check that the AttachmentService received it.
375 ASSERT_EQ(mock_attachment_service()->attachment_lists()->size(), 1U); 384 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U);
376 const syncer::AttachmentList& new_attachments_added = 385 const syncer::AttachmentIdSet& new_attachments_added =
377 mock_attachment_service()->attachment_lists()->front(); 386 mock_attachment_service()->attachment_id_sets()->front();
378 ASSERT_EQ(new_attachments_added.size(), 1U); 387 ASSERT_THAT(new_attachments_added,
379 ASSERT_EQ(new_attachments_added[0].GetId(), new_attachments[0].GetId()); 388 testing::UnorderedElementsAre(new_attachments[0].GetId()));
380 } 389 }
381 390
382 // Verify that after attachment is uploaded GenericChangeProcessor updates 391 // Verify that after attachment is uploaded GenericChangeProcessor updates
383 // corresponding entries 392 // corresponding entries
384 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) { 393 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) {
385 std::string tag = "client_tag"; 394 std::string tag = "client_tag";
386 std::string title = "client_title"; 395 std::string title = "client_title";
387 sync_pb::EntitySpecifics specifics; 396 sync_pb::EntitySpecifics specifics;
388 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference(); 397 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference();
389 pref_specifics->set_name("test"); 398 pref_specifics->set_name("test");
(...skipping 23 matching lines...) Expand all
413 syncer::ReadNode node(&read_transaction); 422 syncer::ReadNode node(&read_transaction);
414 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag), 423 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag),
415 syncer::BaseNode::INIT_OK); 424 syncer::BaseNode::INIT_OK);
416 syncer::AttachmentIdList attachment_ids = node.GetAttachmentIds(); 425 syncer::AttachmentIdList attachment_ids = node.GetAttachmentIds();
417 EXPECT_EQ(1U, attachment_ids.size()); 426 EXPECT_EQ(1U, attachment_ids.size());
418 } 427 }
419 428
420 } // namespace 429 } // namespace
421 430
422 } // namespace sync_driver 431 } // namespace sync_driver
OLDNEW
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/internal_api/attachments/attachment_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698