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

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

Issue 567053002: Pass AttachmentIdList instead of AttachmentList to SyncData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Fix test. Apply feedback. 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
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/api/sync_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/run_loop.h"
(...skipping 15 matching lines...) Expand all
26 #include "sync/internal_api/public/user_share.h" 26 #include "sync/internal_api/public/user_share.h"
27 #include "sync/internal_api/public/write_node.h" 27 #include "sync/internal_api/public/write_node.h"
28 #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" 29 #include "testing/gmock/include/gmock/gmock-matchers.h"
30 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
31 31
32 namespace sync_driver { 32 namespace sync_driver {
33 33
34 namespace { 34 namespace {
35 35
36 const char kTestData[] = "some data";
37
38 // A mock that keeps track of attachments passed to UploadAttachments. 36 // A mock that keeps track of attachments passed to UploadAttachments.
39 class MockAttachmentService : public syncer::AttachmentServiceImpl { 37 class MockAttachmentService : public syncer::AttachmentServiceImpl {
40 public: 38 public:
41 MockAttachmentService( 39 MockAttachmentService(
42 const scoped_refptr<syncer::AttachmentStore>& attachment_store); 40 const scoped_refptr<syncer::AttachmentStore>& attachment_store);
43 virtual ~MockAttachmentService(); 41 virtual ~MockAttachmentService();
44 virtual void UploadAttachments( 42 virtual void UploadAttachments(
45 const syncer::AttachmentIdSet& attachment_ids) OVERRIDE; 43 const syncer::AttachmentIdSet& attachment_ids) OVERRIDE;
46 std::vector<syncer::AttachmentIdSet>* attachment_id_sets(); 44 std::vector<syncer::AttachmentIdSet>* attachment_id_sets();
47 45
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 338
341 // Verify that attachments on newly added or updated SyncData are passed to the 339 // Verify that attachments on newly added or updated SyncData are passed to the
342 // AttachmentService. 340 // AttachmentService.
343 TEST_F(SyncGenericChangeProcessorTest, 341 TEST_F(SyncGenericChangeProcessorTest,
344 ProcessSyncChanges_AddUpdateWithAttachment) { 342 ProcessSyncChanges_AddUpdateWithAttachment) {
345 std::string tag = "client_tag"; 343 std::string tag = "client_tag";
346 std::string title = "client_title"; 344 std::string title = "client_title";
347 sync_pb::EntitySpecifics specifics; 345 sync_pb::EntitySpecifics specifics;
348 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference(); 346 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference();
349 pref_specifics->set_name("test"); 347 pref_specifics->set_name("test");
350 syncer::AttachmentList attachments; 348
351 scoped_refptr<base::RefCountedString> attachment_data = 349 syncer::AttachmentIdList attachment_ids;
352 new base::RefCountedString; 350 attachment_ids.push_back(syncer::AttachmentId::Create());
353 attachment_data->data() = kTestData; 351 attachment_ids.push_back(syncer::AttachmentId::Create());
354 attachments.push_back(syncer::Attachment::Create(attachment_data));
355 attachments.push_back(syncer::Attachment::Create(attachment_data));
356 352
357 // Add a SyncData with two attachments. 353 // Add a SyncData with two attachments.
358 syncer::SyncChangeList change_list; 354 syncer::SyncChangeList change_list;
359 change_list.push_back( 355 change_list.push_back(
360 syncer::SyncChange(FROM_HERE, 356 syncer::SyncChange(FROM_HERE,
361 syncer::SyncChange::ACTION_ADD, 357 syncer::SyncChange::ACTION_ADD,
362 syncer::SyncData::CreateLocalDataWithAttachments( 358 syncer::SyncData::CreateLocalDataWithAttachments(
363 tag, title, specifics, attachments))); 359 tag, title, specifics, attachment_ids)));
364 ASSERT_FALSE( 360 ASSERT_FALSE(
365 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 361 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
366 RunLoop(); 362 RunLoop();
367 363
368 // Check that the AttachmentService received the new attachments. 364 // Check that the AttachmentService received the new attachments.
369 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U); 365 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U);
370 const syncer::AttachmentIdSet& attachments_added = 366 const syncer::AttachmentIdSet& attachments_added =
371 mock_attachment_service()->attachment_id_sets()->front(); 367 mock_attachment_service()->attachment_id_sets()->front();
372 ASSERT_THAT(attachments_added, 368 ASSERT_THAT(
373 testing::UnorderedElementsAre(attachments[0].GetId(), 369 attachments_added,
374 attachments[1].GetId())); 370 testing::UnorderedElementsAre(attachment_ids[0], attachment_ids[1]));
375 371
376 // Update the SyncData, replacing its two attachments with one new attachment. 372 // Update the SyncData, replacing its two attachments with one new attachment.
377 syncer::AttachmentList new_attachments; 373 syncer::AttachmentIdList new_attachment_ids;
378 new_attachments.push_back(syncer::Attachment::Create(attachment_data)); 374 new_attachment_ids.push_back(syncer::AttachmentId::Create());
379 mock_attachment_service()->attachment_id_sets()->clear(); 375 mock_attachment_service()->attachment_id_sets()->clear();
380 change_list.clear(); 376 change_list.clear();
381 change_list.push_back( 377 change_list.push_back(
382 syncer::SyncChange(FROM_HERE, 378 syncer::SyncChange(FROM_HERE,
383 syncer::SyncChange::ACTION_UPDATE, 379 syncer::SyncChange::ACTION_UPDATE,
384 syncer::SyncData::CreateLocalDataWithAttachments( 380 syncer::SyncData::CreateLocalDataWithAttachments(
385 tag, title, specifics, new_attachments))); 381 tag, title, specifics, new_attachment_ids)));
386 ASSERT_FALSE( 382 ASSERT_FALSE(
387 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 383 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
388 RunLoop(); 384 RunLoop();
389 385
390 // Check that the AttachmentService received it. 386 // Check that the AttachmentService received it.
391 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U); 387 ASSERT_EQ(mock_attachment_service()->attachment_id_sets()->size(), 1U);
392 const syncer::AttachmentIdSet& new_attachments_added = 388 const syncer::AttachmentIdSet& new_attachments_added =
393 mock_attachment_service()->attachment_id_sets()->front(); 389 mock_attachment_service()->attachment_id_sets()->front();
394 ASSERT_THAT(new_attachments_added, 390 ASSERT_THAT(new_attachments_added,
395 testing::UnorderedElementsAre(new_attachments[0].GetId())); 391 testing::UnorderedElementsAre(new_attachment_ids[0]));
396 } 392 }
397 393
398 // Verify that after attachment is uploaded GenericChangeProcessor updates 394 // Verify that after attachment is uploaded GenericChangeProcessor updates
399 // corresponding entries 395 // corresponding entries
400 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) { 396 TEST_F(SyncGenericChangeProcessorTest, AttachmentUploaded) {
401 std::string tag = "client_tag"; 397 std::string tag = "client_tag";
402 std::string title = "client_title"; 398 std::string title = "client_title";
403 sync_pb::EntitySpecifics specifics; 399 sync_pb::EntitySpecifics specifics;
404 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference(); 400 sync_pb::PreferenceSpecifics* pref_specifics = specifics.mutable_preference();
405 pref_specifics->set_name("test"); 401 pref_specifics->set_name("test");
406 syncer::AttachmentList attachments; 402
407 scoped_refptr<base::RefCountedString> attachment_data = 403 syncer::AttachmentIdList attachment_ids;
408 new base::RefCountedString; 404 attachment_ids.push_back(syncer::AttachmentId::Create());
409 attachment_data->data() = kTestData;
410 attachments.push_back(syncer::Attachment::Create(attachment_data));
411 405
412 // Add a SyncData with two attachments. 406 // Add a SyncData with two attachments.
413 syncer::SyncChangeList change_list; 407 syncer::SyncChangeList change_list;
414 change_list.push_back( 408 change_list.push_back(
415 syncer::SyncChange(FROM_HERE, 409 syncer::SyncChange(FROM_HERE,
416 syncer::SyncChange::ACTION_ADD, 410 syncer::SyncChange::ACTION_ADD,
417 syncer::SyncData::CreateLocalDataWithAttachments( 411 syncer::SyncData::CreateLocalDataWithAttachments(
418 tag, title, specifics, attachments))); 412 tag, title, specifics, attachment_ids)));
419 ASSERT_FALSE( 413 ASSERT_FALSE(
420 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet()); 414 change_processor()->ProcessSyncChanges(FROM_HERE, change_list).IsSet());
421 415
422 sync_pb::AttachmentIdProto attachment_id_proto = 416 sync_pb::AttachmentIdProto attachment_id_proto = attachment_ids[0].GetProto();
423 attachments[0].GetId().GetProto();
424 syncer::AttachmentId attachment_id = 417 syncer::AttachmentId attachment_id =
425 syncer::AttachmentId::CreateFromProto(attachment_id_proto); 418 syncer::AttachmentId::CreateFromProto(attachment_id_proto);
426 419
427 change_processor()->OnAttachmentUploaded(attachment_id); 420 change_processor()->OnAttachmentUploaded(attachment_id);
428 syncer::ReadTransaction read_transaction(FROM_HERE, user_share()); 421 syncer::ReadTransaction read_transaction(FROM_HERE, user_share());
429 syncer::ReadNode node(&read_transaction); 422 syncer::ReadNode node(&read_transaction);
430 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag), 423 ASSERT_EQ(node.InitByClientTagLookup(syncer::PREFERENCES, tag),
431 syncer::BaseNode::INIT_OK); 424 syncer::BaseNode::INIT_OK);
432 syncer::AttachmentIdList attachment_ids = node.GetAttachmentIds(); 425 attachment_ids = node.GetAttachmentIds();
433 EXPECT_EQ(1U, attachment_ids.size()); 426 EXPECT_EQ(1U, attachment_ids.size());
434 } 427 }
435 428
436 } // namespace 429 } // namespace
437 430
438 } // namespace sync_driver 431 } // namespace sync_driver
OLDNEW
« no previous file with comments | « components/sync_driver/generic_change_processor.cc ('k') | sync/api/sync_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698