OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2013 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 <string> | |
6 | |
7 #include "base/memory/scoped_ptr.h" | |
8 #include "chrome/browser/notifier/synced_notification.h" | |
9 #include "sync/api/sync_data.h" | |
10 #include "sync/protocol/sync.pb.h" | |
11 #include "sync/protocol/synced_notification_specifics.pb.h" | |
12 #include "testing/gtest/include/gtest/gtest.h" | |
13 | |
14 using syncer::SyncData; | |
15 using notifier::SyncedNotification; | |
16 using sync_pb::EntitySpecifics; | |
17 using sync_pb::SyncedNotificationSpecifics; | |
18 using sync_pb::SyncedNotificationRenderInfo_Layout_LayoutType_TITLE_AND_SUBTEXT; | |
19 | |
20 namespace { | |
21 | |
22 const int64 kFakeCreationTime = 42; | |
23 | |
24 const char kTitle1[] = "New appointment at 2:15"; | |
25 const char kTitle2[] = "Email from Mark: Upcoming Ski trip"; | |
26 const char kAppId1[] = "fboilmbenheemaomgaeehigklolhkhnf"; | |
27 const char kAppId2[] = "fbcmoldooppoahjhfflnmljoanccekpf"; | |
28 const char kCoalescingKey1[] = "foo"; | |
29 const char kCoalescingKey2[] = "bar"; | |
30 const char kBody1[] = "Space Needle, 12:00 pm"; | |
31 const char kBody2[] = "Stevens Pass is our first choice."; | |
32 const char kIconUrl1[] = "http://www.google.com/icon1.jpg"; | |
33 const char kIconUrl2[]= "http://www.google.com/icon2.jpg"; | |
34 | |
35 } // namespace | |
36 | |
37 class SyncedNotificationTest : public testing::Test { | |
38 public: | |
39 SyncedNotificationTest() : notification1(NULL), | |
40 notification2(NULL) {} | |
41 ~SyncedNotificationTest() {} | |
42 | |
43 // Methods from testing::Test. | |
44 | |
45 virtual void SetUp() OVERRIDE { | |
46 syncer::SyncData sync_data1 = CreateSyncData(kTitle1, kBody1, kIconUrl1, | |
47 kAppId1, kCoalescingKey1); | |
48 syncer::SyncData sync_data2 = CreateSyncData(kTitle2, kBody2, kIconUrl2, | |
49 kAppId2, kCoalescingKey2); | |
50 | |
51 notification1.reset(new SyncedNotification(sync_data1)); | |
52 notification2.reset(new SyncedNotification(sync_data2)); | |
53 } | |
54 | |
55 virtual void TearDown() OVERRIDE { | |
56 } | |
57 | |
58 scoped_ptr<SyncedNotification> notification1; | |
59 scoped_ptr<SyncedNotification> notification2; | |
60 | |
61 private: | |
62 // Helper to create syncer::SyncData. | |
63 static SyncData CreateSyncData(const std::string& title, | |
64 const std::string& body, | |
65 const std::string& icon_url, | |
66 const std::string& app_id, | |
67 const std::string& coalescing_key) { | |
68 // CreateLocalData makes a copy of this, so this can safely live | |
69 // on the stack. | |
70 EntitySpecifics entity_specifics; | |
71 | |
72 // Get a writeable pointer to the sync notifications specifics inside the | |
73 // entity specifics. | |
74 SyncedNotificationSpecifics* specifics = | |
75 entity_specifics.mutable_synced_notification(); | |
76 | |
77 specifics->mutable_coalesced_notification()-> | |
78 mutable_render_info()-> | |
79 mutable_layout()-> | |
80 set_layout_type( | |
81 SyncedNotificationRenderInfo_Layout_LayoutType_TITLE_AND_SUBTEXT); | |
82 | |
83 specifics->mutable_coalesced_notification()-> | |
84 mutable_id()-> | |
85 set_app_id(app_id); | |
86 | |
87 specifics->mutable_coalesced_notification()-> | |
88 mutable_id()-> | |
89 set_coalescing_key(coalescing_key); | |
90 | |
91 specifics->mutable_coalesced_notification()-> | |
92 mutable_render_info()-> | |
93 mutable_layout()-> | |
94 mutable_title_and_subtext_data()-> | |
95 set_title(title); | |
96 | |
97 specifics->mutable_coalesced_notification()-> | |
98 mutable_render_info()-> | |
99 mutable_layout()-> | |
100 mutable_title_and_subtext_data()-> | |
101 add_subtext(body); | |
102 | |
103 specifics->mutable_coalesced_notification()-> | |
104 mutable_render_info()-> | |
105 mutable_layout()-> | |
106 mutable_title_and_subtext_data()-> | |
107 mutable_icon()-> | |
108 set_url(icon_url); | |
109 | |
110 specifics->mutable_coalesced_notification()-> | |
111 set_creation_time_msec(kFakeCreationTime); | |
112 | |
113 specifics->mutable_coalesced_notification()-> | |
114 add_notification(); | |
115 | |
116 SyncData sync_data = SyncData::CreateLocalData( | |
117 "syncer::SYNCED_NOTIFICATIONS", | |
118 "SyncedNotificationTest", | |
119 entity_specifics); | |
120 | |
121 return sync_data; | |
122 } | |
123 | |
124 private: | |
125 DISALLOW_COPY_AND_ASSIGN(SyncedNotificationTest); | |
126 }; | |
127 | |
128 // test simple accessors | |
129 | |
130 TEST_F(SyncedNotificationTest, GetAppIdTest) { | |
131 std::string found_app_id = notification1->GetAppId(); | |
132 std::string expected_app_id(kAppId1); | |
133 | |
134 EXPECT_EQ(found_app_id, expected_app_id); | |
135 } | |
136 | |
137 TEST_F(SyncedNotificationTest, GetCoalescingKeyTest) { | |
138 std::string found_key = notification1->GetCoalescingKey(); | |
139 std::string expected_key(kCoalescingKey1); | |
140 | |
141 EXPECT_EQ(found_key, expected_key); | |
142 } | |
143 | |
144 TEST_F(SyncedNotificationTest, GetTitleTest) { | |
145 std::string found_title = notification1->GetTitle(); | |
146 std::string expected_title(kTitle1); | |
147 | |
148 EXPECT_EQ(found_title, expected_title); | |
149 } | |
150 | |
151 TEST_F(SyncedNotificationTest, GetIconURLTest) { | |
152 std::string found_icon_url = notification1->GetIconUrl().spec(); | |
153 std::string expected_icon_url(kIconUrl1); | |
154 | |
155 EXPECT_EQ(found_icon_url, expected_icon_url); | |
156 } | |
157 | |
158 // TODO: test with a multi-line body | |
dcheng
2013/01/23 18:39:43
TODO(petewil)
Pete Williamson
2013/01/24 01:48:11
Done.
| |
159 TEST_F(SyncedNotificationTest, GetBodyTest) { | |
160 std::string found_body = notification1->GetBody(); | |
161 std::string expected_body(kBody1); | |
162 | |
163 EXPECT_EQ(found_body, expected_body); | |
164 } | |
165 | |
166 TEST_F(SyncedNotificationTest, GetNotificationIdTest) { | |
167 std::string found_id = notification1->GetNotificationId(); | |
168 std::string expected_id(kAppId1); | |
169 expected_id += "/"; | |
170 expected_id += kCoalescingKey1; | |
171 | |
172 EXPECT_EQ(found_id, expected_id); | |
173 } | |
174 | |
175 // test that equals works as we expect | |
176 TEST_F(SyncedNotificationTest, EqualsTest) { | |
177 EXPECT_TRUE(notification1->Equals(*notification1)); | |
178 EXPECT_TRUE(notification2->Equals(*notification2)); | |
179 EXPECT_FALSE(notification1->Equals(*notification2)); | |
180 } | |
181 | |
182 // Add a test for set_local_changes and has_local_changes together | |
183 // Add a test for a notification being read and or deleted | |
OLD | NEW |