Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/Notification.cpp

Issue 29419629: Issue 5164 - Remove NotificationPtr (Closed) Base URL: https://hg.adblockplus.org/libadblockplus/
Patch Set: Added move assignment operator. Created April 24, 2017, 7:08 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« src/Notification.cpp ('K') | « src/Notification.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2017 eyeo GmbH 3 * Copyright (C) 2006-2017 eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 30 matching lines...) Expand all
41 } 41 }
42 42
43 void AddNotification(const std::string& notification) 43 void AddNotification(const std::string& notification)
44 { 44 {
45 jsEngine->Evaluate("(function()" 45 jsEngine->Evaluate("(function()"
46 "{" 46 "{"
47 "require('notification').Notification.addNotification(" + notification + ");" 47 "require('notification').Notification.addNotification(" + notification + ");"
48 "})();"); 48 "})();");
49 } 49 }
50 50
51 NotificationPtr PeekNotification(const std::string& url = std::string()) 51 std::unique_ptr<Notification> PeekNotification(const std::string& url = std: :string())
52 { 52 {
53 NotificationPtr retValue; 53 std::unique_ptr<Notification> retValue;
54 filterEngine->SetShowNotificationCallback(std::bind( 54 filterEngine->SetShowNotificationCallback(
55 &NotificationTest::NotificationAvailableCallback, 55 [&retValue](Notification& notification) {
56 std::placeholders::_1, std::ref(retValue))); 56 retValue.reset(new Notification(std::move(notification)));
57 });
57 filterEngine->ShowNextNotification(url); 58 filterEngine->ShowNextNotification(url);
58 filterEngine->RemoveShowNotificationCallback(); 59 filterEngine->RemoveShowNotificationCallback();
59 return retValue; 60 return retValue;
60 } 61 }
61
62 static void NotificationAvailableCallback(const NotificationPtr& src, Notifi cationPtr& dst)
63 {
64 EXPECT_TRUE(src);
65 dst = src;
66 }
67 }; 62 };
68 63
69 class MockWebRequest : public WebRequest 64 class MockWebRequest : public WebRequest
70 { 65 {
71 public: 66 public:
72 std::string responseText; 67 std::string responseText;
73 explicit MockWebRequest(const std::string& notification) 68 explicit MockWebRequest(const std::string& notification)
74 : responseText(notification) 69 : responseText(notification)
75 { 70 {
76 } 71 }
(...skipping 30 matching lines...) Expand all
107 "\"type\": \"information\"," 102 "\"type\": \"information\","
108 "\"message\": {" 103 "\"message\": {"
109 "\"en-US\": \"message\"" 104 "\"en-US\": \"message\""
110 "}," 105 "},"
111 "\"title\": \"Title\"" 106 "\"title\": \"Title\""
112 "}]" 107 "}]"
113 "}"; 108 "}";
114 jsEngine->SetWebRequest(std::shared_ptr<MockWebRequest>( 109 jsEngine->SetWebRequest(std::shared_ptr<MockWebRequest>(
115 new MockWebRequest(responseJsonText))); 110 new MockWebRequest(responseJsonText)));
116 jsEngine->SetLogSystem(LogSystemPtr(new DefaultLogSystem())); 111 jsEngine->SetLogSystem(LogSystemPtr(new DefaultLogSystem()));
117 filterEngine.reset(new FilterEngine(jsEngine)); 112 filterEngine = FilterEngine::Create(jsEngine);
118 filterEngine->SetShowNotificationCallback( 113 filterEngine->SetShowNotificationCallback(
119 std::bind(&NotificationMockWebRequestTest::OnNotification, 114 [this](Notification& notification) {
120 this, std::placeholders::_1)); 115 isNotificationCallbackCalled = true;
121 } 116 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notificatio n.GetType());
122 117 EXPECT_EQ("Title", notification.GetTexts().title);
123 void OnNotification(const NotificationPtr& notification) 118 EXPECT_EQ("message", notification.GetTexts().message);
124 { 119 notification.MarkAsShown();
125 isNotificationCallbackCalled = true; 120 });
126 ASSERT_TRUE(notification);
127 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification->G etType());
128 EXPECT_EQ("Title", notification->GetTexts().title);
129 EXPECT_EQ("message", notification->GetTexts().message);
130 notification->MarkAsShown();
131 } 121 }
132 }; 122 };
133 #endif 123 #endif
134 } 124 }
135 125
136 TEST_F(NotificationTest, NoNotifications) 126 TEST_F(NotificationTest, NoNotifications)
137 { 127 {
138 EXPECT_FALSE(PeekNotification()); 128 EXPECT_FALSE(PeekNotification());
139 } 129 }
140 130
141 #ifdef NotificationMockWebRequestTest_ENABLED 131 #ifdef NotificationMockWebRequestTest_ENABLED
142 TEST_F(NotificationMockWebRequestTest, SingleNotification) 132 TEST_F(NotificationMockWebRequestTest, SingleNotification)
143 { 133 {
144 AdblockPlus::Sleep(5000/*msec*/); // it's a hack 134 AdblockPlus::Sleep(5000/*msec*/); // it's a hack
145 EXPECT_TRUE(isNotificationCallbackCalled); 135 EXPECT_TRUE(isNotificationCallbackCalled);
146 } 136 }
147 #endif 137 #endif
148 138
149 TEST_F(NotificationTest, AddNotification) 139 TEST_F(NotificationTest, AddNotification)
150 { 140 {
151 AddNotification("{" 141 AddNotification("{"
152 "type: 'critical'," 142 "type: 'critical',"
153 "title: 'testTitle'," 143 "title: 'testTitle',"
154 "message: 'testMessage'," 144 "message: 'testMessage',"
155 "}"); 145 "}");
156 NotificationPtr notification = PeekNotification(); 146 auto notification = PeekNotification();
157 ASSERT_TRUE(notification); 147 ASSERT_TRUE(notification);
158 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType( )); 148 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType( ));
159 EXPECT_EQ("testTitle", notification->GetTexts().title); 149 EXPECT_EQ("testTitle", notification->GetTexts().title);
160 EXPECT_EQ("testMessage", notification->GetTexts().message); 150 EXPECT_EQ("testMessage", notification->GetTexts().message);
161 } 151 }
162 152
163 TEST_F(NotificationTest, FilterByUrl) 153 TEST_F(NotificationTest, FilterByUrl)
164 { 154 {
165 AddNotification("{ id: 'no-filter', type: 'critical' }"); 155 AddNotification("{ id: 'no-filter', type: 'critical' }");
166 AddNotification("{ id: 'www.com', type: 'information'," 156 AddNotification("{ id: 'www.com', type: 'information',"
167 "urlFilters:['||www.com$document']" 157 "urlFilters:['||www.com$document']"
168 "}"); 158 "}");
169 AddNotification("{ id: 'www.de', type: 'question'," 159 AddNotification("{ id: 'www.de', type: 'question',"
170 "urlFilters:['||www.de$document']" 160 "urlFilters:['||www.de$document']"
171 "}"); 161 "}");
172 162
173 NotificationPtr notification = PeekNotification(); 163 auto notification = PeekNotification();
174 ASSERT_TRUE(notification); 164 ASSERT_TRUE(notification);
175 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType( )); 165 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_CRITICAL, notification->GetType( ));
176 166
177 notification = PeekNotification("http://www.de"); 167 notification = PeekNotification("http://www.de");
178 ASSERT_TRUE(notification); 168 ASSERT_TRUE(notification);
179 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_QUESTION, notification->GetType( )); 169 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_QUESTION, notification->GetType( ));
180 170
181 notification = PeekNotification("http://www.com"); 171 notification = PeekNotification("http://www.com");
182 ASSERT_TRUE(notification); 172 ASSERT_TRUE(notification);
183 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification->GetTy pe()); 173 EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification->GetTy pe());
184 } 174 }
185 175
186 TEST_F(NotificationTest, MarkAsShown) 176 TEST_F(NotificationTest, MarkAsShown)
187 { 177 {
188 AddNotification("{ id: 'id', type: 'question' }"); 178 AddNotification("{ id: 'id', type: 'question' }");
189 EXPECT_TRUE(PeekNotification()); 179 EXPECT_TRUE(PeekNotification());
190 NotificationPtr notification = PeekNotification(); 180 auto notification = PeekNotification();
191 ASSERT_TRUE(notification); 181 ASSERT_TRUE(notification);
192 notification->MarkAsShown(); 182 notification->MarkAsShown();
193 EXPECT_FALSE(PeekNotification()); 183 EXPECT_FALSE(PeekNotification());
194 } 184 }
195 185
196 TEST_F(NotificationTest, NoLinks) 186 TEST_F(NotificationTest, NoLinks)
197 { 187 {
198 AddNotification("{ id: 'id'}"); 188 AddNotification("{ id: 'id'}");
199 NotificationPtr notification = PeekNotification(); 189 auto notification = PeekNotification();
200 ASSERT_TRUE(notification); 190 ASSERT_TRUE(notification);
201 EXPECT_EQ(0u, notification->GetLinks().size()); 191 EXPECT_EQ(0u, notification->GetLinks().size());
202 } 192 }
203 193
204 TEST_F(NotificationTest, Links) 194 TEST_F(NotificationTest, Links)
205 { 195 {
206 AddNotification("{ id: 'id', links: ['link1', 'link2'] }"); 196 AddNotification("{ id: 'id', links: ['link1', 'link2'] }");
207 NotificationPtr notification = PeekNotification(); 197 auto notification = PeekNotification();
208 ASSERT_TRUE(notification); 198 ASSERT_TRUE(notification);
209 std::vector<std::string> notificationLinks = notification->GetLinks(); 199 std::vector<std::string> notificationLinks = notification->GetLinks();
210 ASSERT_EQ(2u, notificationLinks.size()); 200 ASSERT_EQ(2u, notificationLinks.size());
211 EXPECT_EQ("link1", notificationLinks[0]); 201 EXPECT_EQ("link1", notificationLinks[0]);
212 EXPECT_EQ("link2", notificationLinks[1]); 202 EXPECT_EQ("link2", notificationLinks[1]);
213 } 203 }
OLDNEW
« src/Notification.cpp ('K') | « src/Notification.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld