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

Side by Side Diff: chrome/browser/sync/api/sync_change_unittest.cc

Issue 6995008: Implement new SyncAPI and convert Preferences to it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and fix compile Created 9 years, 7 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
« no previous file with comments | « chrome/browser/sync/api/sync_change_processor.cc ('k') | chrome/browser/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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/sync/api/sync_change.h"
6
7 #include <string>
8
9 #include "base/values.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "chrome/browser/sync/protocol/preference_specifics.pb.h"
12 #include "chrome/browser/sync/protocol/proto_value_conversions.h"
13
14 using browser_sync::EntitySpecificsToValue;
15
16 // Ordered list of SyncChange's.
17 typedef std::vector<SyncChange> SyncChangeList;
18
19 namespace {
20
21 typedef testing::Test SyncChangeTest;
22
23 TEST_F(SyncChangeTest, LocalDelete) {
24 SyncChange::SyncChangeType change_type = SyncChange::ACTION_DELETE;
25 std::string tag = "client_tag";
26 SyncChange e(change_type,
27 SyncData::CreateLocalData(tag));
28 EXPECT_EQ(change_type, e.change_type());
29 EXPECT_EQ(tag, e.sync_data().GetTag());
30 EXPECT_EQ(syncable::UNSPECIFIED, e.sync_data().GetDataType());
31 }
32
33 TEST_F(SyncChangeTest, LocalUpdate) {
34 SyncChange::SyncChangeType change_type = SyncChange::ACTION_UPDATE;
35 sync_pb::EntitySpecifics specifics;
36 sync_pb::PreferenceSpecifics* pref_specifics =
37 specifics.MutableExtension(sync_pb::preference);
38 pref_specifics->set_name("test");
39 std::string tag = "client_tag";
40 SyncChange e(change_type,
41 SyncData::CreateLocalData(tag, specifics));
42 EXPECT_EQ(change_type, e.change_type());
43 EXPECT_EQ(tag, e.sync_data().GetTag());
44 EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType());
45 scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue(specifics));
46 scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue(
47 e.sync_data().GetSpecifics()));
48 EXPECT_TRUE(ref_spec->Equals(e_spec.get()));
49 }
50
51 TEST_F(SyncChangeTest, LocalAdd) {
52 SyncChange::SyncChangeType change_type = SyncChange::ACTION_ADD;
53 sync_pb::EntitySpecifics specifics;
54 sync_pb::PreferenceSpecifics* pref_specifics =
55 specifics.MutableExtension(sync_pb::preference);
56 pref_specifics->set_name("test");
57 std::string tag = "client_tag";
58 SyncChange e(change_type,
59 SyncData::CreateLocalData(tag, specifics));
60 EXPECT_EQ(change_type, e.change_type());
61 EXPECT_EQ(tag, e.sync_data().GetTag());
62 EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType());
63 scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue(specifics));
64 scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue(
65 e.sync_data().GetSpecifics()));
66 EXPECT_TRUE(ref_spec->Equals(e_spec.get()));
67 }
68
69 TEST_F(SyncChangeTest, SyncerChanges) {
70 SyncChangeList change_list;
71
72 // Create an update.
73 sync_pb::EntitySpecifics update_specifics;
74 sync_pb::PreferenceSpecifics* pref_specifics =
75 update_specifics.MutableExtension(sync_pb::preference);
76 pref_specifics->set_name("update");
77 change_list.push_back(SyncChange(
78 SyncChange::ACTION_UPDATE,
79 SyncData::CreateRemoteData(update_specifics)));
80
81 // Create an add.
82 sync_pb::EntitySpecifics add_specifics;
83 pref_specifics =
84 add_specifics.MutableExtension(sync_pb::preference);
85 pref_specifics->set_name("add");
86 change_list.push_back(SyncChange(
87 SyncChange::ACTION_ADD,
88 SyncData::CreateRemoteData(add_specifics)));
89
90 // Create a delete.
91 sync_pb::EntitySpecifics delete_specifics;
92 pref_specifics =
93 delete_specifics.MutableExtension(sync_pb::preference);
94 pref_specifics->set_name("add");
95 change_list.push_back(SyncChange(
96 SyncChange::ACTION_DELETE,
97 SyncData::CreateRemoteData(delete_specifics)));
98
99 ASSERT_EQ(3U, change_list.size());
100
101 // Verify update.
102 SyncChange e = change_list[0];
103 EXPECT_EQ(SyncChange::ACTION_UPDATE, e.change_type());
104 EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType());
105 scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue(
106 update_specifics));
107 scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue(
108 e.sync_data().GetSpecifics()));
109 EXPECT_TRUE(ref_spec->Equals(e_spec.get()));
110
111 // Verify add.
112 e = change_list[1];
113 EXPECT_EQ(SyncChange::ACTION_ADD, e.change_type());
114 EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType());
115 ref_spec.reset(EntitySpecificsToValue(add_specifics));
116 e_spec.reset(EntitySpecificsToValue(e.sync_data().GetSpecifics()));
117 EXPECT_TRUE(ref_spec->Equals(e_spec.get()));
118
119 // Verify delete.
120 e = change_list[2];
121 EXPECT_EQ(SyncChange::ACTION_DELETE, e.change_type());
122 EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType());
123 ref_spec.reset(EntitySpecificsToValue(delete_specifics));
124 e_spec.reset(EntitySpecificsToValue(e.sync_data().GetSpecifics()));
125 EXPECT_TRUE(ref_spec->Equals(e_spec.get()));
126 }
127
128 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/sync/api/sync_change_processor.cc ('k') | chrome/browser/sync/api/sync_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698