Chromium Code Reviews| Index: sync/engine/syncer_unittest.cc |
| diff --git a/sync/engine/syncer_unittest.cc b/sync/engine/syncer_unittest.cc |
| index c630fe4aa38db8fdb885786594590d0198858682..f2bbc639b1d9139fb374266c4ece05c745ad01b5 100644 |
| --- a/sync/engine/syncer_unittest.cc |
| +++ b/sync/engine/syncer_unittest.cc |
| @@ -4336,6 +4336,8 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) { |
| tag2_metahandle = tag2.GetMetahandle(); |
| // Preferences type root should have been created by the updates above. |
| + ASSERT_TRUE(directory()->InitialSyncEndedForType(&trans, PREFERENCES)); |
| + |
| Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES); |
| ASSERT_TRUE(pref_root.good()); |
| @@ -4378,6 +4380,8 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) { |
| EXPECT_EQ(tag2_metahandle, tag2.GetMetahandle()); |
| // Preferences type root should have been created by the updates above. |
| + ASSERT_TRUE(directory()->InitialSyncEndedForType(&trans, PREFERENCES)); |
| + |
| Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES); |
| ASSERT_TRUE(pref_root.good()); |
| @@ -4460,6 +4464,8 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) { |
| EXPECT_EQ("tag c", tag_c.GetUniqueClientTag()); |
| // Preferences type root should have been created by the updates above. |
| + ASSERT_TRUE(directory()->InitialSyncEndedForType(&trans, PREFERENCES)); |
| + |
| Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES); |
| ASSERT_TRUE(pref_root.good()); |
| @@ -4483,6 +4489,9 @@ TEST_F(SyncerTest, EntryWithParentIdUpdatedWithEntryWithoutParentId) { |
| // Preferences type root should have been created by the update above. |
| // We need it in order to get its ID. |
| syncable::ReadTransaction trans(FROM_HERE, directory()); |
| + |
| + ASSERT_TRUE(directory()->InitialSyncEndedForType(&trans, PREFERENCES)); |
| + |
| Entry pref_root(&trans, GET_TYPE_ROOT, PREFERENCES); |
| ASSERT_TRUE(pref_root.good()); |
| pref_root_id = pref_root.GetId(); |
| @@ -4710,30 +4719,36 @@ TEST_F(SyncerTest, ConfigureFailsDontApplyUpdates) { |
| mock_server_->FailNthPostBufferToPathCall(2); |
| // Construct the first GetUpdates response. |
| - mock_server_->AddUpdateDirectory(node1, ids_.root(), "one", 1, 10, |
| - foreign_cache_guid(), "-1"); |
| + mock_server_->AddUpdatePref(node1.GetServerId(), "", "one", 1, 10); |
| mock_server_->SetChangesRemaining(1); |
| mock_server_->NextUpdateBatch(); |
| - // Consutrct the second GetUpdates response. |
| - mock_server_->AddUpdateDirectory(node2, ids_.root(), "two", 1, 20, |
| - foreign_cache_guid(), "-2"); |
| + // Construct the second GetUpdates response. |
| + mock_server_->AddUpdatePref(node2.GetServerId(), "", "two", 2, 20); |
| SyncShareConfigure(); |
| - syncable::ReadTransaction trans(FROM_HERE, directory()); |
| + // The type shouldn't be marked as having the initial sync completed. |
| + EXPECT_FALSE(directory()->InitialSyncEndedForType(PREFERENCES)); |
| - // The first node was downloaded, but not applied. |
| - Entry n1(&trans, GET_BY_ID, node1); |
| - ASSERT_TRUE(n1.good()); |
| - EXPECT_TRUE(n1.GetIsUnappliedUpdate()); |
| + { |
| + syncable::ReadTransaction trans(FROM_HERE, directory()); |
| - // The second node was not downloaded. |
| - Entry n2(&trans, GET_BY_ID, node2); |
| - EXPECT_FALSE(n2.good()); |
| + // The first node was downloaded, but not applied. |
| + Entry n1(&trans, GET_BY_ID, node1); |
| + ASSERT_TRUE(n1.good()); |
| + EXPECT_TRUE(n1.GetIsUnappliedUpdate()); |
| - // One update remains undownloaded. |
| - mock_server_->ClearUpdatesQueue(); |
| + // The second node was not downloaded. |
| + Entry n2(&trans, GET_BY_ID, node2); |
| + EXPECT_FALSE(n2.good()); |
| + } |
| + |
| + // Finish the download and verify that the type is now marked as |
| + // having the initial sync completed. |
| + SyncShareNudge(); |
| + |
| + EXPECT_TRUE(directory()->InitialSyncEndedForType(PREFERENCES)); |
| } |
| TEST_F(SyncerTest, GetKeySuccess) { |
| @@ -4767,6 +4782,20 @@ TEST_F(SyncerTest, GetKeyEmpty) { |
| } |
| } |
| +// Trigger an update that contains a progress marker only and verify that |
| +// the type gets marked as having initial sync complete. |
| +TEST_F(SyncerTest, ProgressMarkerOnlyUpdate) { |
|
Nicolas Zea
2015/10/13 17:51:37
This is to test the the implicit permanent folder
stanisc
2015/10/13 21:23:11
Right. Added a comment. Also added a check that ve
|
| + EXPECT_FALSE(directory()->InitialSyncEndedForType(PREFERENCES)); |
| + sync_pb::DataTypeProgressMarker* marker = |
| + mock_server_->AddUpdateProgressMarker(); |
| + marker->set_data_type_id(GetSpecificsFieldNumberFromModelType(PREFERENCES)); |
| + marker->set_token("foobar"); |
| + |
| + SyncShareNudge(); |
| + |
| + EXPECT_TRUE(directory()->InitialSyncEndedForType(PREFERENCES)); |
| +} |
| + |
| // Tests specifically related to bookmark (and therefore no client tags) sync |
| // logic. Entities without client tags have custom logic in parts of the code, |
| // and hence are not covered by e.g. the Undeletion tests below. |