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

Side by Side Diff: sitescripts/notifications/test/notification.py

Issue 29756624: Noissue - Adapt best practices for trailing commas (sitescripts) (Closed)
Patch Set: Re-run script on Python 2, added flake8-commas extension Created April 19, 2018, 2:35 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
OLDNEW
1 # This file is part of the Adblock Plus web scripts, 1 # This file is part of the Adblock Plus web scripts,
2 # Copyright (C) 2006-present eyeo GmbH 2 # Copyright (C) 2006-present eyeo GmbH
3 # 3 #
4 # Adblock Plus is free software: you can redistribute it and/or modify 4 # Adblock Plus is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License version 3 as 5 # it under the terms of the GNU General Public License version 3 as
6 # published by the Free Software Foundation. 6 # published by the Free Software Foundation.
7 # 7 #
8 # Adblock Plus is distributed in the hope that it will be useful, 8 # Adblock Plus is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
(...skipping 12 matching lines...) Expand all
23 class TestNotification(unittest.TestCase): 23 class TestNotification(unittest.TestCase):
24 def setUp(self): 24 def setUp(self):
25 self.load_notifications_patcher = mock.patch('sitescripts.notifications. web.notification.load_notifications') 25 self.load_notifications_patcher = mock.patch('sitescripts.notifications. web.notification.load_notifications')
26 self.load_notifications_mock = self.load_notifications_patcher.start() 26 self.load_notifications_mock = self.load_notifications_patcher.start()
27 27
28 def tearDown(self): 28 def tearDown(self):
29 self.load_notifications_patcher.stop() 29 self.load_notifications_patcher.stop()
30 30
31 def test_no_group(self): 31 def test_no_group(self):
32 self.load_notifications_mock.return_value = [ 32 self.load_notifications_mock.return_value = [
33 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}} 33 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
34 ] 34 ]
35 result = json.loads(notification.notification({}, lambda *args: None)) 35 result = json.loads(notification.notification({}, lambda *args: None))
36 self.assertEqual(len(result['notifications']), 1) 36 self.assertEqual(len(result['notifications']), 1)
37 self.assertEqual(result['notifications'][0]['id'], '1') 37 self.assertEqual(result['notifications'][0]['id'], '1')
38 self.assertFalse('-' in result['version']) 38 self.assertFalse('-' in result['version'])
39 39
40 def test_not_in_group(self): 40 def test_not_in_group(self):
41 self.load_notifications_mock.return_value = [ 41 self.load_notifications_mock.return_value = [
42 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 42 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
43 {'id': 'a', 'variants': [ 43 {'id': 'a', 'variants': [
44 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 44 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
45 ]} 45 ]},
46 ] 46 ]
47 result = json.loads(notification.notification({ 47 result = json.loads(notification.notification({
48 'QUERY_STRING': 'lastVersion=197001010000-a/0' 48 'QUERY_STRING': 'lastVersion=197001010000-a/0',
49 }, lambda *args: None)) 49 }, lambda *args: None))
50 self.assertEqual(len(result['notifications']), 1) 50 self.assertEqual(len(result['notifications']), 1)
51 self.assertEqual(result['notifications'][0]['id'], '1') 51 self.assertEqual(result['notifications'][0]['id'], '1')
52 self.assertRegexpMatches(result['version'], r'-a/0') 52 self.assertRegexpMatches(result['version'], r'-a/0')
53 53
54 def test_in_group(self): 54 def test_in_group(self):
55 self.load_notifications_mock.return_value = [ 55 self.load_notifications_mock.return_value = [
56 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 56 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
57 {'id': 'a', 'variants': [ 57 {'id': 'a', 'variants': [
58 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 58 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
59 ]} 59 ]},
60 ] 60 ]
61 result = json.loads(notification.notification({ 61 result = json.loads(notification.notification({
62 'QUERY_STRING': 'lastVersion=197001010000-a/1' 62 'QUERY_STRING': 'lastVersion=197001010000-a/1',
63 }, lambda *args: None)) 63 }, lambda *args: None))
64 self.assertEqual(len(result['notifications']), 1) 64 self.assertEqual(len(result['notifications']), 1)
65 self.assertEqual(result['notifications'][0]['id'], 'a') 65 self.assertEqual(result['notifications'][0]['id'], 'a')
66 self.assertRegexpMatches(result['version'], r'-a/1') 66 self.assertRegexpMatches(result['version'], r'-a/1')
67 67
68 def test_not_in_one_of_many_groups(self): 68 def test_not_in_one_of_many_groups(self):
69 self.load_notifications_mock.return_value = [ 69 self.load_notifications_mock.return_value = [
70 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 70 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
71 {'id': 'a', 'variants': [ 71 {'id': 'a', 'variants': [
72 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 72 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
73 ]}, 73 ]},
74 {'id': 'b', 'variants': [ 74 {'id': 'b', 'variants': [
75 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 75 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
76 ]}, 76 ]},
77 {'id': 'c', 'variants': [ 77 {'id': 'c', 'variants': [
78 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 78 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
79 ]} 79 ]},
80 ] 80 ]
81 result = json.loads(notification.notification({ 81 result = json.loads(notification.notification({
82 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/0-c/0' 82 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/0-c/0',
83 }, lambda *args: None)) 83 }, lambda *args: None))
84 self.assertEqual(len(result['notifications']), 1) 84 self.assertEqual(len(result['notifications']), 1)
85 self.assertEqual(result['notifications'][0]['id'], '1') 85 self.assertEqual(result['notifications'][0]['id'], '1')
86 self.assertRegexpMatches(result['version'], r'-a/0-b/0-c/0') 86 self.assertRegexpMatches(result['version'], r'-a/0-b/0-c/0')
87 87
88 def test_in_one_of_many_groups(self): 88 def test_in_one_of_many_groups(self):
89 self.load_notifications_mock.return_value = [ 89 self.load_notifications_mock.return_value = [
90 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 90 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
91 {'id': 'a', 'variants': [ 91 {'id': 'a', 'variants': [
92 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 92 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
93 ]}, 93 ]},
94 {'id': 'b', 'variants': [ 94 {'id': 'b', 'variants': [
95 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 95 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
96 ]}, 96 ]},
97 {'id': 'c', 'variants': [ 97 {'id': 'c', 'variants': [
98 {'title': {'en-US': ''}, 'message': {'en-US': ''}} 98 {'title': {'en-US': ''}, 'message': {'en-US': ''}},
99 ]} 99 ]},
100 ] 100 ]
101 result = json.loads(notification.notification({ 101 result = json.loads(notification.notification({
102 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1-c/0' 102 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1-c/0',
103 }, lambda *args: None)) 103 }, lambda *args: None))
104 self.assertEqual(len(result['notifications']), 1) 104 self.assertEqual(len(result['notifications']), 1)
105 self.assertEqual(result['notifications'][0]['id'], 'b') 105 self.assertEqual(result['notifications'][0]['id'], 'b')
106 self.assertRegexpMatches(result['version'], r'-a/0-b/1-c/0') 106 self.assertRegexpMatches(result['version'], r'-a/0-b/1-c/0')
107 107
108 def test_not_put_in_group(self): 108 def test_not_put_in_group(self):
109 self.load_notifications_mock.return_value = [ 109 self.load_notifications_mock.return_value = [
110 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 110 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
111 {'id': 'a', 'variants': [ 111 {'id': 'a', 'variants': [
112 {'sample': 0, 'title': {'en-US': ''}, 'message': {'en-US': ''}} 112 {'sample': 0, 'title': {'en-US': ''}, 'message': {'en-US': ''}},
113 ]} 113 ]},
114 ] 114 ]
115 result = json.loads(notification.notification({ 115 result = json.loads(notification.notification({
116 'QUERY_STRING': 'lastVersion=197001010000' 116 'QUERY_STRING': 'lastVersion=197001010000',
117 }, lambda *args: None)) 117 }, lambda *args: None))
118 self.assertEqual(len(result['notifications']), 1) 118 self.assertEqual(len(result['notifications']), 1)
119 self.assertEqual(result['notifications'][0]['id'], '1') 119 self.assertEqual(result['notifications'][0]['id'], '1')
120 self.assertRegexpMatches(result['version'], r'-a/0') 120 self.assertRegexpMatches(result['version'], r'-a/0')
121 121
122 def test_put_in_group(self): 122 def test_put_in_group(self):
123 self.load_notifications_mock.return_value = [ 123 self.load_notifications_mock.return_value = [
124 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 124 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
125 {'id': 'a', 'variants': [ 125 {'id': 'a', 'variants': [
126 {'sample': 1, 'title': {'en-US': ''}, 'message': {'en-US': ''}} 126 {'sample': 1, 'title': {'en-US': ''}, 'message': {'en-US': ''}},
127 ]} 127 ]},
128 ] 128 ]
129 result = json.loads(notification.notification({ 129 result = json.loads(notification.notification({
130 'QUERY_STRING': 'lastVersion=197001010000' 130 'QUERY_STRING': 'lastVersion=197001010000',
131 }, lambda *args: None)) 131 }, lambda *args: None))
132 self.assertEqual(len(result['notifications']), 1) 132 self.assertEqual(len(result['notifications']), 1)
133 self.assertEqual(result['notifications'][0]['id'], 'a') 133 self.assertEqual(result['notifications'][0]['id'], 'a')
134 self.assertRegexpMatches(result['version'], r'-a/1') 134 self.assertRegexpMatches(result['version'], r'-a/1')
135 135
136 def test_notification_variant_merged(self): 136 def test_notification_variant_merged(self):
137 self.load_notifications_mock.return_value = [ 137 self.load_notifications_mock.return_value = [
138 { 138 {
139 'id': 'a', 139 'id': 'a',
140 'title': {'en-US': 'default'}, 140 'title': {'en-US': 'default'},
141 'message': {'en-US': 'default'}, 141 'message': {'en-US': 'default'},
142 'variants': [ 142 'variants': [
143 {'sample': 1, 'message': {'en-US': 'variant'}} 143 {'sample': 1, 'message': {'en-US': 'variant'}},
144 ] 144 ],
145 } 145 },
146 ] 146 ]
147 result = json.loads(notification.notification({}, lambda *args: None)) 147 result = json.loads(notification.notification({}, lambda *args: None))
148 self.assertEqual(len(result['notifications']), 1) 148 self.assertEqual(len(result['notifications']), 1)
149 self.assertEqual(result['notifications'][0]['id'], 'a') 149 self.assertEqual(result['notifications'][0]['id'], 'a')
150 self.assertEqual(result['notifications'][0]['title']['en-US'], 'default' ) 150 self.assertEqual(result['notifications'][0]['title']['en-US'], 'default' )
151 self.assertEqual(result['notifications'][0]['message']['en-US'], 'varian t') 151 self.assertEqual(result['notifications'][0]['message']['en-US'], 'varian t')
152 self.assertFalse('variants' in result['notifications'][0]) 152 self.assertFalse('variants' in result['notifications'][0])
153 self.assertFalse('sample' in result['notifications'][0]) 153 self.assertFalse('sample' in result['notifications'][0])
154 154
155 def test_no_variant_no_notifications(self): 155 def test_no_variant_no_notifications(self):
156 self.load_notifications_mock.return_value = [ 156 self.load_notifications_mock.return_value = [
157 {'id': 'a', 'variants': [{'sample': 0}]} 157 {'id': 'a', 'variants': [{'sample': 0}]},
158 ] 158 ]
159 result = json.loads(notification.notification({}, lambda *args: None)) 159 result = json.loads(notification.notification({}, lambda *args: None))
160 self.assertEqual(len(result['notifications']), 0) 160 self.assertEqual(len(result['notifications']), 0)
161 161
162 @mock.patch('random.random') 162 @mock.patch('random.random')
163 def test_probability_distribution_single_group(self, random_call): 163 def test_probability_distribution_single_group(self, random_call):
164 self.load_notifications_mock.return_value = [ 164 self.load_notifications_mock.return_value = [
165 { 165 {
166 'id': 'a', 166 'id': 'a',
167 'variants': [ 167 'variants': [
168 {'sample': 0.5, 'title': {'en-US': '1'}, 'message': {'en-US' : ''}}, 168 {'sample': 0.5, 'title': {'en-US': '1'}, 'message': {'en-US' : ''}},
169 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}}, 169 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}},
170 {'sample': 0.25, 'title': {'en-US': '3'}, 'message': {'en-US ': ''}} 170 {'sample': 0.25, 'title': {'en-US': '3'}, 'message': {'en-US ': ''}},
171 ] 171 ],
172 } 172 },
173 ] 173 ]
174 random_call.return_value = 0 174 random_call.return_value = 0
175 result = json.loads(notification.notification({}, lambda *args: None)) 175 result = json.loads(notification.notification({}, lambda *args: None))
176 self.assertEqual(len(result['notifications']), 1) 176 self.assertEqual(len(result['notifications']), 1)
177 self.assertEqual(result['notifications'][0]['title']['en-US'], '1') 177 self.assertEqual(result['notifications'][0]['title']['en-US'], '1')
178 self.assertRegexpMatches(result['version'], r'-a/1') 178 self.assertRegexpMatches(result['version'], r'-a/1')
179 random_call.return_value = 0.5 179 random_call.return_value = 0.5
180 result = json.loads(notification.notification({}, lambda *args: None)) 180 result = json.loads(notification.notification({}, lambda *args: None))
181 self.assertEqual(len(result['notifications']), 1) 181 self.assertEqual(len(result['notifications']), 1)
182 self.assertEqual(result['notifications'][0]['title']['en-US'], '1') 182 self.assertEqual(result['notifications'][0]['title']['en-US'], '1')
(...skipping 19 matching lines...) Expand all
202 self.assertEqual(result['notifications'][0]['title']['en-US'], '3') 202 self.assertEqual(result['notifications'][0]['title']['en-US'], '3')
203 self.assertRegexpMatches(result['version'], r'-a/3') 203 self.assertRegexpMatches(result['version'], r'-a/3')
204 204
205 @mock.patch('random.random') 205 @mock.patch('random.random')
206 def test_probability_distribution_multiple_groups(self, random_call): 206 def test_probability_distribution_multiple_groups(self, random_call):
207 self.load_notifications_mock.return_value = [ 207 self.load_notifications_mock.return_value = [
208 { 208 {
209 'id': 'a', 209 'id': 'a',
210 'variants': [ 210 'variants': [
211 {'sample': 0.25, 'title': {'en-US': '1'}, 'message': {'en-US ': ''}}, 211 {'sample': 0.25, 'title': {'en-US': '1'}, 'message': {'en-US ': ''}},
212 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}} 212 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}},
213 ] 213 ],
214 }, 214 },
215 { 215 {
216 'id': 'b', 216 'id': 'b',
217 'variants': [ 217 'variants': [
218 {'sample': 0.25, 'title': {'en-US': '1'}, 'message': {'en-US ': ''}}, 218 {'sample': 0.25, 'title': {'en-US': '1'}, 'message': {'en-US ': ''}},
219 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}} 219 {'sample': 0.25, 'title': {'en-US': '2'}, 'message': {'en-US ': ''}},
220 ] 220 ],
221 } 221 },
222 ] 222 ]
223 random_call.return_value = 0 223 random_call.return_value = 0
224 result = json.loads(notification.notification({}, lambda *args: None)) 224 result = json.loads(notification.notification({}, lambda *args: None))
225 self.assertEqual(len(result['notifications']), 1) 225 self.assertEqual(len(result['notifications']), 1)
226 self.assertEqual(result['notifications'][0]['id'], 'a') 226 self.assertEqual(result['notifications'][0]['id'], 'a')
227 self.assertEqual(result['notifications'][0]['title']['en-US'], '1') 227 self.assertEqual(result['notifications'][0]['title']['en-US'], '1')
228 self.assertRegexpMatches(result['version'], r'-a/1-b/0') 228 self.assertRegexpMatches(result['version'], r'-a/1-b/0')
229 random_call.return_value = 0.251 229 random_call.return_value = 0.251
230 result = json.loads(notification.notification({}, lambda *args: None)) 230 result = json.loads(notification.notification({}, lambda *args: None))
231 self.assertEqual(len(result['notifications']), 1) 231 self.assertEqual(len(result['notifications']), 1)
(...skipping 19 matching lines...) Expand all
251 lambda *args: None) 251 lambda *args: None)
252 notification.notification({'QUERY_STRING': 'lastVersion=-'}, 252 notification.notification({'QUERY_STRING': 'lastVersion=-'},
253 lambda *args: None) 253 lambda *args: None)
254 notification.notification({'QUERY_STRING': 'lastVersion=-/'}, 254 notification.notification({'QUERY_STRING': 'lastVersion=-/'},
255 lambda *args: None) 255 lambda *args: None)
256 notification.notification({'QUERY_STRING': 'lastVersion=-//'}, 256 notification.notification({'QUERY_STRING': 'lastVersion=-//'},
257 lambda *args: None) 257 lambda *args: None)
258 258
259 def test_version_header_present(self): 259 def test_version_header_present(self):
260 self.load_notifications_mock.return_value = [ 260 self.load_notifications_mock.return_value = [
261 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}} 261 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
262 ] 262 ]
263 response_header_map = {} 263 response_header_map = {}
264 264
265 def start_response(status, response_headers): 265 def start_response(status, response_headers):
266 for name, value in response_headers: 266 for name, value in response_headers:
267 response_header_map[name] = value 267 response_header_map[name] = value
268 result = json.loads(notification.notification({}, start_response)) 268 result = json.loads(notification.notification({}, start_response))
269 self.assertEqual(result['version'], 269 self.assertEqual(result['version'],
270 response_header_map['ABP-Notification-Version']) 270 response_header_map['ABP-Notification-Version'])
271 271
272 def test_default_group_notification_returned_if_valid(self): 272 def test_default_group_notification_returned_if_valid(self):
273 self.load_notifications_mock.return_value = [ 273 self.load_notifications_mock.return_value = [
274 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 274 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
275 { 275 {
276 'id': 'a', 276 'id': 'a',
277 'title': {'en-US': '0'}, 277 'title': {'en-US': '0'},
278 'message': {'en-US': '0'}, 278 'message': {'en-US': '0'},
279 'variants': [ 279 'variants': [
280 {'title': {'en-US': '1'}, 'message': {'en-US': '1'}} 280 {'title': {'en-US': '1'}, 'message': {'en-US': '1'}},
281 ] 281 ],
282 } 282 },
283 ] 283 ]
284 result = json.loads(notification.notification({ 284 result = json.loads(notification.notification({
285 'QUERY_STRING': 'lastVersion=197001010000-a/0' 285 'QUERY_STRING': 'lastVersion=197001010000-a/0',
286 }, lambda *args: None)) 286 }, lambda *args: None))
287 self.assertEqual(len(result['notifications']), 2) 287 self.assertEqual(len(result['notifications']), 2)
288 self.assertEqual(result['notifications'][0]['id'], '1') 288 self.assertEqual(result['notifications'][0]['id'], '1')
289 self.assertEqual(result['notifications'][1]['id'], 'a') 289 self.assertEqual(result['notifications'][1]['id'], 'a')
290 self.assertEqual(result['notifications'][1]['title']['en-US'], '0') 290 self.assertEqual(result['notifications'][1]['title']['en-US'], '0')
291 self.assertNotIn('variants', result['notifications'][1]) 291 self.assertNotIn('variants', result['notifications'][1])
292 self.assertRegexpMatches(result['version'], r'-a/0') 292 self.assertRegexpMatches(result['version'], r'-a/0')
293 293
294 def test_default_group_notification_not_returned_if_invalid(self): 294 def test_default_group_notification_not_returned_if_invalid(self):
295 self.load_notifications_mock.return_value = [ 295 self.load_notifications_mock.return_value = [
296 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 296 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
297 { 297 {
298 'id': 'a', 298 'id': 'a',
299 'title': {'en-US': '0'}, 299 'title': {'en-US': '0'},
300 'variants': [ 300 'variants': [
301 {'title': {'en-US': '1'}, 'message': {'en-US': '1'}} 301 {'title': {'en-US': '1'}, 'message': {'en-US': '1'}},
302 ] 302 ],
303 } 303 },
304 ] 304 ]
305 result = json.loads(notification.notification({ 305 result = json.loads(notification.notification({
306 'QUERY_STRING': 'lastVersion=197001010000-a/0' 306 'QUERY_STRING': 'lastVersion=197001010000-a/0',
307 }, lambda *args: None)) 307 }, lambda *args: None))
308 self.assertEqual(len(result['notifications']), 1) 308 self.assertEqual(len(result['notifications']), 1)
309 self.assertEqual(result['notifications'][0]['id'], '1') 309 self.assertEqual(result['notifications'][0]['id'], '1')
310 self.assertRegexpMatches(result['version'], r'-a/0') 310 self.assertRegexpMatches(result['version'], r'-a/0')
311 311
312 def test_invalid_notification_not_returned(self): 312 def test_invalid_notification_not_returned(self):
313 self.load_notifications_mock.return_value = [ 313 self.load_notifications_mock.return_value = [
314 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}}, 314 {'id': '1', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
315 {'id': '2', 'title': {'en-US': ''}, 'message': {}}, 315 {'id': '2', 'title': {'en-US': ''}, 'message': {}},
316 {'id': '3', 'title': {}, 'message': {'en-US': ''}}, 316 {'id': '3', 'title': {}, 'message': {'en-US': ''}},
317 {'id': '4', 'title': {}}, 317 {'id': '4', 'title': {}},
318 {'id': '5', 'message': {}}, 318 {'id': '5', 'message': {}},
319 {'id': '6'} 319 {'id': '6'},
320 ] 320 ]
321 result = json.loads(notification.notification({}, lambda *args: None)) 321 result = json.loads(notification.notification({}, lambda *args: None))
322 self.assertEqual(len(result['notifications']), 1) 322 self.assertEqual(len(result['notifications']), 1)
323 self.assertEqual(result['notifications'][0]['id'], '1') 323 self.assertEqual(result['notifications'][0]['id'], '1')
324 324
325 def test_stays_in_group_when_notification_present(self): 325 def test_stays_in_group_when_notification_present(self):
326 self.load_notifications_mock.return_value = [ 326 self.load_notifications_mock.return_value = [
327 {'id': 'a'} 327 {'id': 'a'},
328 ] 328 ]
329 result = json.loads(notification.notification({ 329 result = json.loads(notification.notification({
330 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1' 330 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1',
331 }, lambda *args: None)) 331 }, lambda *args: None))
332 self.assertEqual(len(result['notifications']), 0) 332 self.assertEqual(len(result['notifications']), 0)
333 self.assertRegexpMatches(result['version'], r'-a/0') 333 self.assertRegexpMatches(result['version'], r'-a/0')
334 334
335 def test_leaves_group_when_notification_absent(self): 335 def test_leaves_group_when_notification_absent(self):
336 self.load_notifications_mock.return_value = [] 336 self.load_notifications_mock.return_value = []
337 result = json.loads(notification.notification({ 337 result = json.loads(notification.notification({
338 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1' 338 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1',
339 }, lambda *args: None)) 339 }, lambda *args: None))
340 self.assertEqual(len(result['notifications']), 0) 340 self.assertEqual(len(result['notifications']), 0)
341 self.assertRegexpMatches(result['version'], r'[^-]*') 341 self.assertRegexpMatches(result['version'], r'[^-]*')
342 342
343 def test_stays_in_group_when_notification_inactive(self): 343 def test_stays_in_group_when_notification_inactive(self):
344 self.load_notifications_mock.return_value = [ 344 self.load_notifications_mock.return_value = [
345 {'id': 'a', 'inactive': True} 345 {'id': 'a', 'inactive': True},
346 ] 346 ]
347 result = json.loads(notification.notification({ 347 result = json.loads(notification.notification({
348 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1' 348 'QUERY_STRING': 'lastVersion=197001010000-a/0-b/1',
349 }, lambda *args: None)) 349 }, lambda *args: None))
350 self.assertEqual(len(result['notifications']), 0) 350 self.assertEqual(len(result['notifications']), 0)
351 self.assertRegexpMatches(result['version'], r'-a/0') 351 self.assertRegexpMatches(result['version'], r'-a/0')
352 352
353 def test_stays_in_group_when_notification_inactive_assign_new_group(self): 353 def test_stays_in_group_when_notification_inactive_assign_new_group(self):
354 # See: https://issues.adblockplus.org/ticket/5827 354 # See: https://issues.adblockplus.org/ticket/5827
355 self.load_notifications_mock.return_value = [ 355 self.load_notifications_mock.return_value = [
356 {'id': '1', 'inactive': True}, 356 {'id': '1', 'inactive': True},
357 {'id': '2', 'variants': [ 357 {'id': '2', 'variants': [
358 {'sample': 1, 'title': {'en-US': '2.1'}, 'message': {'en-US': '2 .1'}}, 358 {'sample': 1, 'title': {'en-US': '2.1'}, 'message': {'en-US': '2 .1'}},
359 ]}, 359 ]},
360 ] 360 ]
361 result = json.loads(notification.notification({ 361 result = json.loads(notification.notification({
362 'QUERY_STRING': 'lastVersion=197001010000-1/0' 362 'QUERY_STRING': 'lastVersion=197001010000-1/0',
363 }, lambda *args: None)) 363 }, lambda *args: None))
364 self.assertEqual(len(result['notifications']), 1) 364 self.assertEqual(len(result['notifications']), 1)
365 self.assertRegexpMatches(result['version'], r'-1/0-2/1') 365 self.assertRegexpMatches(result['version'], r'-1/0-2/1')
366 366
367 def test_inactive_notifications_not_returned(self): 367 def test_inactive_notifications_not_returned(self):
368 self.load_notifications_mock.return_value = [ 368 self.load_notifications_mock.return_value = [
369 {'id': 'a', 'title': {'en-US': ''}, 'message': {'en-US': ''}, 'inact ive': True}, 369 {'id': 'a', 'title': {'en-US': ''}, 'message': {'en-US': ''}, 'inact ive': True},
370 {'id': 'b', 'title': {'en-US': ''}, 'message': {'en-US': ''}, 'inact ive': False}, 370 {'id': 'b', 'title': {'en-US': ''}, 'message': {'en-US': ''}, 'inact ive': False},
371 {'id': 'c', 'title': {'en-US': ''}, 'message': {'en-US': ''}} 371 {'id': 'c', 'title': {'en-US': ''}, 'message': {'en-US': ''}},
372 ] 372 ]
373 result = json.loads(notification.notification({}, lambda *args: None)) 373 result = json.loads(notification.notification({}, lambda *args: None))
374 self.assertEqual(len(result['notifications']), 2) 374 self.assertEqual(len(result['notifications']), 2)
375 self.assertEqual(result['notifications'][0]['id'], 'b') 375 self.assertEqual(result['notifications'][0]['id'], 'b')
376 self.assertEqual(result['notifications'][1]['id'], 'c') 376 self.assertEqual(result['notifications'][1]['id'], 'c')
377 377
378 def test_inactive_notification_variant_not_returned(self): 378 def test_inactive_notification_variant_not_returned(self):
379 self.load_notifications_mock.return_value = [ 379 self.load_notifications_mock.return_value = [
380 {'id': 'a', 'inactive': True} 380 {'id': 'a', 'inactive': True},
381 ] 381 ]
382 result = json.loads(notification.notification({ 382 result = json.loads(notification.notification({
383 'QUERY_STRING': 'lastVersion=197001010000-a/1' 383 'QUERY_STRING': 'lastVersion=197001010000-a/1',
384 }, lambda *args: None)) 384 }, lambda *args: None))
385 self.assertEqual(len(result['notifications']), 0) 385 self.assertEqual(len(result['notifications']), 0)
386 386
387 387
388 if __name__ == '__main__': 388 if __name__ == '__main__':
389 unittest.main() 389 unittest.main()
OLDNEW
« no previous file with comments | « sitescripts/management/bin/installChanges.py ('k') | sitescripts/notifications/web/notification.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld