| OLD | NEW |
| 1 # coding: utf-8 | 1 # coding: utf-8 |
| 2 | 2 |
| 3 # This file is part of the Adblock Plus web scripts, | 3 # This file is part of the Adblock Plus web scripts, |
| 4 # Copyright (C) 2006-2015 Eyeo GmbH | 4 # Copyright (C) 2006-2015 Eyeo GmbH |
| 5 # | 5 # |
| 6 # Adblock Plus is free software: you can redistribute it and/or modify | 6 # Adblock Plus is free software: you can redistribute it and/or modify |
| 7 # it under the terms of the GNU General Public License version 3 as | 7 # it under the terms of the GNU General Public License version 3 as |
| 8 # published by the Free Software Foundation. | 8 # published by the Free Software Foundation. |
| 9 # | 9 # |
| 10 # Adblock Plus is distributed in the hope that it will be useful, | 10 # Adblock Plus is distributed in the hope that it will be useful, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 class TestNotification(unittest.TestCase): | 24 class TestNotification(unittest.TestCase): |
| 25 def setUp(self): | 25 def setUp(self): |
| 26 self.load_notifications_patcher = mock.patch("sitescripts.notifications.web.
notification.load_notifications") | 26 self.load_notifications_patcher = mock.patch("sitescripts.notifications.web.
notification.load_notifications") |
| 27 self.load_notifications_mock = self.load_notifications_patcher.start() | 27 self.load_notifications_mock = self.load_notifications_patcher.start() |
| 28 | 28 |
| 29 def tearDown(self): | 29 def tearDown(self): |
| 30 self.load_notifications_patcher.stop() | 30 self.load_notifications_patcher.stop() |
| 31 | 31 |
| 32 def test_no_group(self): | 32 def test_no_group(self): |
| 33 self.load_notifications_mock.return_value = [ | 33 self.load_notifications_mock.return_value = [ |
| 34 {"id": "1", "title": {}, "message": {}} | 34 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}} |
| 35 ] | 35 ] |
| 36 result = json.loads(notification.notification({}, lambda *args: None)) | 36 result = json.loads(notification.notification({}, lambda *args: None)) |
| 37 self.assertEqual(len(result["notifications"]), 1) | 37 self.assertEqual(len(result["notifications"]), 1) |
| 38 self.assertEqual(result["notifications"][0]["id"], "1") | 38 self.assertEqual(result["notifications"][0]["id"], "1") |
| 39 self.assertFalse("-" in result["version"]) | 39 self.assertFalse("-" in result["version"]) |
| 40 | 40 |
| 41 def test_not_in_group(self): | 41 def test_not_in_group(self): |
| 42 self.load_notifications_mock.return_value = [ | 42 self.load_notifications_mock.return_value = [ |
| 43 {"id": "1", "title": {}, "message": {}}, | 43 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 44 {"id": "a", "variants": [{"title": {}, "message": {}}]} | 44 {"id": "a", "variants": [ |
| 45 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 46 ]} |
| 45 ] | 47 ] |
| 46 result = json.loads(notification.notification({ | 48 result = json.loads(notification.notification({ |
| 47 "QUERY_STRING": "lastVersion=197001010000-a/0" | 49 "QUERY_STRING": "lastVersion=197001010000-a/0" |
| 48 }, lambda *args: None)) | 50 }, lambda *args: None)) |
| 49 self.assertEqual(len(result["notifications"]), 1) | 51 self.assertEqual(len(result["notifications"]), 1) |
| 50 self.assertEqual(result["notifications"][0]["id"], "1") | 52 self.assertEqual(result["notifications"][0]["id"], "1") |
| 51 self.assertRegexpMatches(result["version"], r"-a/0") | 53 self.assertRegexpMatches(result["version"], r"-a/0") |
| 52 | 54 |
| 53 def test_in_group(self): | 55 def test_in_group(self): |
| 54 self.load_notifications_mock.return_value = [ | 56 self.load_notifications_mock.return_value = [ |
| 55 {"id": "1", "title": {}, "message": {}}, | 57 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 56 {"id": "a", "variants": [{"title": {}, "message": {}}]} | 58 {"id": "a", "variants": [ |
| 59 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 60 ]} |
| 57 ] | 61 ] |
| 58 result = json.loads(notification.notification({ | 62 result = json.loads(notification.notification({ |
| 59 "QUERY_STRING": "lastVersion=197001010000-a/1" | 63 "QUERY_STRING": "lastVersion=197001010000-a/1" |
| 60 }, lambda *args: None)) | 64 }, lambda *args: None)) |
| 61 self.assertEqual(len(result["notifications"]), 1) | 65 self.assertEqual(len(result["notifications"]), 1) |
| 62 self.assertEqual(result["notifications"][0]["id"], "a") | 66 self.assertEqual(result["notifications"][0]["id"], "a") |
| 63 self.assertRegexpMatches(result["version"], r"-a/1") | 67 self.assertRegexpMatches(result["version"], r"-a/1") |
| 64 | 68 |
| 65 def test_not_in_one_of_many_groups(self): | 69 def test_not_in_one_of_many_groups(self): |
| 66 self.load_notifications_mock.return_value = [ | 70 self.load_notifications_mock.return_value = [ |
| 67 {"id": "1", "title": {}, "message": {}}, | 71 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 68 {"id": "a", "variants": [{"title": {}, "message": {}}]}, | 72 {"id": "a", "variants": [ |
| 69 {"id": "b", "variants": [{"title": {}, "message": {}}]}, | 73 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 70 {"id": "c", "variants": [{"title": {}, "message": {}}]} | 74 ]}, |
| 75 {"id": "b", "variants": [ |
| 76 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 77 ]}, |
| 78 {"id": "c", "variants": [ |
| 79 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 80 ]} |
| 71 ] | 81 ] |
| 72 result = json.loads(notification.notification({ | 82 result = json.loads(notification.notification({ |
| 73 "QUERY_STRING": "lastVersion=197001010000-a/0-b/0-c/0" | 83 "QUERY_STRING": "lastVersion=197001010000-a/0-b/0-c/0" |
| 74 }, lambda *args: None)) | 84 }, lambda *args: None)) |
| 75 self.assertEqual(len(result["notifications"]), 1) | 85 self.assertEqual(len(result["notifications"]), 1) |
| 76 self.assertEqual(result["notifications"][0]["id"], "1") | 86 self.assertEqual(result["notifications"][0]["id"], "1") |
| 77 self.assertRegexpMatches(result["version"], r"-a/0-b/0-c/0") | 87 self.assertRegexpMatches(result["version"], r"-a/0-b/0-c/0") |
| 78 | 88 |
| 79 def test_in_one_of_many_groups(self): | 89 def test_in_one_of_many_groups(self): |
| 80 self.load_notifications_mock.return_value = [ | 90 self.load_notifications_mock.return_value = [ |
| 81 {"id": "1", "title": {}, "message": {}}, | 91 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 82 {"id": "a", "variants": [{"title": {}, "message": {}}]}, | 92 {"id": "a", "variants": [ |
| 83 {"id": "b", "variants": [{"title": {}, "message": {}}]}, | 93 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 84 {"id": "c", "variants": [{"title": {}, "message": {}}]} | 94 ]}, |
| 95 {"id": "b", "variants": [ |
| 96 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 97 ]}, |
| 98 {"id": "c", "variants": [ |
| 99 {"title": {"en-US": ""}, "message": {"en-US": ""}} |
| 100 ]} |
| 85 ] | 101 ] |
| 86 result = json.loads(notification.notification({ | 102 result = json.loads(notification.notification({ |
| 87 "QUERY_STRING": "lastVersion=197001010000-a/0-b/1-c/0" | 103 "QUERY_STRING": "lastVersion=197001010000-a/0-b/1-c/0" |
| 88 }, lambda *args: None)) | 104 }, lambda *args: None)) |
| 89 self.assertEqual(len(result["notifications"]), 1) | 105 self.assertEqual(len(result["notifications"]), 1) |
| 90 self.assertEqual(result["notifications"][0]["id"], "b") | 106 self.assertEqual(result["notifications"][0]["id"], "b") |
| 91 self.assertRegexpMatches(result["version"], r"-a/0-b/1-c/0") | 107 self.assertRegexpMatches(result["version"], r"-a/0-b/1-c/0") |
| 92 | 108 |
| 93 def test_not_put_in_group(self): | 109 def test_not_put_in_group(self): |
| 94 self.load_notifications_mock.return_value = [ | 110 self.load_notifications_mock.return_value = [ |
| 95 {"id": "1", "title": {}, "message": {}}, | 111 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 96 {"id": "a", "variants": [{"sample": 0, "title": {}, "message": {}}]} | 112 {"id": "a", "variants": [ |
| 113 {"sample": 0, "title": {"en-US": ""}, "message": {"en-US": ""}} |
| 114 ]} |
| 97 ] | 115 ] |
| 98 result = json.loads(notification.notification({ | 116 result = json.loads(notification.notification({ |
| 99 "QUERY_STRING": "lastVersion=197001010000" | 117 "QUERY_STRING": "lastVersion=197001010000" |
| 100 }, lambda *args: None)) | 118 }, lambda *args: None)) |
| 101 self.assertEqual(len(result["notifications"]), 1) | 119 self.assertEqual(len(result["notifications"]), 1) |
| 102 self.assertEqual(result["notifications"][0]["id"], "1") | 120 self.assertEqual(result["notifications"][0]["id"], "1") |
| 103 self.assertRegexpMatches(result["version"], r"-a/0") | 121 self.assertRegexpMatches(result["version"], r"-a/0") |
| 104 | 122 |
| 105 def test_put_in_group(self): | 123 def test_put_in_group(self): |
| 106 self.load_notifications_mock.return_value = [ | 124 self.load_notifications_mock.return_value = [ |
| 107 {"id": "1", "title": {}, "message": {}}, | 125 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 108 {"id": "a", "variants": [{"sample": 1, "title": {}, "message": {}}]} | 126 {"id": "a", "variants": [ |
| 127 {"sample": 1, "title": {"en-US": ""}, "message": {"en-US": ""}} |
| 128 ]} |
| 109 ] | 129 ] |
| 110 result = json.loads(notification.notification({ | 130 result = json.loads(notification.notification({ |
| 111 "QUERY_STRING": "lastVersion=197001010000" | 131 "QUERY_STRING": "lastVersion=197001010000" |
| 112 }, lambda *args: None)) | 132 }, lambda *args: None)) |
| 113 self.assertEqual(len(result["notifications"]), 1) | 133 self.assertEqual(len(result["notifications"]), 1) |
| 114 self.assertEqual(result["notifications"][0]["id"], "a") | 134 self.assertEqual(result["notifications"][0]["id"], "a") |
| 115 self.assertRegexpMatches(result["version"], r"-a/1") | 135 self.assertRegexpMatches(result["version"], r"-a/1") |
| 116 | 136 |
| 117 def test_notification_variant_merged(self): | 137 def test_notification_variant_merged(self): |
| 118 self.load_notifications_mock.return_value = [ | 138 self.load_notifications_mock.return_value = [ |
| (...skipping 20 matching lines...) Expand all Loading... |
| 139 ] | 159 ] |
| 140 result = json.loads(notification.notification({}, lambda *args: None)) | 160 result = json.loads(notification.notification({}, lambda *args: None)) |
| 141 self.assertEqual(len(result["notifications"]), 0) | 161 self.assertEqual(len(result["notifications"]), 0) |
| 142 | 162 |
| 143 @mock.patch("random.random") | 163 @mock.patch("random.random") |
| 144 def test_probability_distribution_single_group(self, random_call): | 164 def test_probability_distribution_single_group(self, random_call): |
| 145 self.load_notifications_mock.return_value = [ | 165 self.load_notifications_mock.return_value = [ |
| 146 { | 166 { |
| 147 "id": "a", | 167 "id": "a", |
| 148 "variants": [ | 168 "variants": [ |
| 149 {"sample": 0.5, "title": {"en-US": "1"}, "message": {}}, | 169 {"sample": 0.5, "title": {"en-US": "1"}, "message": {"en-US": ""}}, |
| 150 {"sample": 0.25, "title": {"en-US": "2"}, "message": {}}, | 170 {"sample": 0.25, "title": {"en-US": "2"}, "message": {"en-US": ""}}, |
| 151 {"sample": 0.25, "title": {"en-US": "3"}, "message": {}} | 171 {"sample": 0.25, "title": {"en-US": "3"}, "message": {"en-US": ""}} |
| 152 ] | 172 ] |
| 153 } | 173 } |
| 154 ] | 174 ] |
| 155 random_call.return_value = 0 | 175 random_call.return_value = 0 |
| 156 result = json.loads(notification.notification({}, lambda *args: None)) | 176 result = json.loads(notification.notification({}, lambda *args: None)) |
| 157 self.assertEqual(len(result["notifications"]), 1) | 177 self.assertEqual(len(result["notifications"]), 1) |
| 158 self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") | 178 self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
| 159 self.assertRegexpMatches(result["version"], r"-a/1") | 179 self.assertRegexpMatches(result["version"], r"-a/1") |
| 160 random_call.return_value = 0.5 | 180 random_call.return_value = 0.5 |
| 161 result = json.loads(notification.notification({}, lambda *args: None)) | 181 result = json.loads(notification.notification({}, lambda *args: None)) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 182 self.assertEqual(len(result["notifications"]), 1) | 202 self.assertEqual(len(result["notifications"]), 1) |
| 183 self.assertEqual(result["notifications"][0]["title"]["en-US"], "3") | 203 self.assertEqual(result["notifications"][0]["title"]["en-US"], "3") |
| 184 self.assertRegexpMatches(result["version"], r"-a/3") | 204 self.assertRegexpMatches(result["version"], r"-a/3") |
| 185 | 205 |
| 186 @mock.patch("random.random") | 206 @mock.patch("random.random") |
| 187 def test_probability_distribution_multiple_groups(self, random_call): | 207 def test_probability_distribution_multiple_groups(self, random_call): |
| 188 self.load_notifications_mock.return_value = [ | 208 self.load_notifications_mock.return_value = [ |
| 189 { | 209 { |
| 190 "id": "a", | 210 "id": "a", |
| 191 "variants": [ | 211 "variants": [ |
| 192 {"sample": 0.25, "title": {"en-US": "1"}, "message": {}}, | 212 {"sample": 0.25, "title": {"en-US": "1"}, "message": {"en-US": ""}}, |
| 193 {"sample": 0.25, "title": {"en-US": "2"}, "message": {}} | 213 {"sample": 0.25, "title": {"en-US": "2"}, "message": {"en-US": ""}} |
| 194 ] | 214 ] |
| 195 }, | 215 }, |
| 196 { | 216 { |
| 197 "id": "b", | 217 "id": "b", |
| 198 "variants": [ | 218 "variants": [ |
| 199 {"sample": 0.25, "title": {"en-US": "1"}, "message": {}}, | 219 {"sample": 0.25, "title": {"en-US": "1"}, "message": {"en-US": ""}}, |
| 200 {"sample": 0.25, "title": {"en-US": "2"}, "message": {}} | 220 {"sample": 0.25, "title": {"en-US": "2"}, "message": {"en-US": ""}} |
| 201 ] | 221 ] |
| 202 } | 222 } |
| 203 ] | 223 ] |
| 204 random_call.return_value = 0 | 224 random_call.return_value = 0 |
| 205 result = json.loads(notification.notification({}, lambda *args: None)) | 225 result = json.loads(notification.notification({}, lambda *args: None)) |
| 206 self.assertEqual(len(result["notifications"]), 1) | 226 self.assertEqual(len(result["notifications"]), 1) |
| 207 self.assertEqual(result["notifications"][0]["id"], "a") | 227 self.assertEqual(result["notifications"][0]["id"], "a") |
| 208 self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") | 228 self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
| 209 self.assertRegexpMatches(result["version"], r"-a/1-b/0") | 229 self.assertRegexpMatches(result["version"], r"-a/1-b/0") |
| 210 random_call.return_value = 0.251 | 230 random_call.return_value = 0.251 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 232 lambda *args: None) | 252 lambda *args: None) |
| 233 notification.notification({"QUERY_STRING": "lastVersion=-"}, | 253 notification.notification({"QUERY_STRING": "lastVersion=-"}, |
| 234 lambda *args: None) | 254 lambda *args: None) |
| 235 notification.notification({"QUERY_STRING": "lastVersion=-/"}, | 255 notification.notification({"QUERY_STRING": "lastVersion=-/"}, |
| 236 lambda *args: None) | 256 lambda *args: None) |
| 237 notification.notification({"QUERY_STRING": "lastVersion=-//"}, | 257 notification.notification({"QUERY_STRING": "lastVersion=-//"}, |
| 238 lambda *args: None) | 258 lambda *args: None) |
| 239 | 259 |
| 240 def test_version_header_present(self): | 260 def test_version_header_present(self): |
| 241 self.load_notifications_mock.return_value = [ | 261 self.load_notifications_mock.return_value = [ |
| 242 {"id": "1", "title": {}, "message": {}} | 262 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}} |
| 243 ] | 263 ] |
| 244 response_header_map = {} | 264 response_header_map = {} |
| 245 def start_response(status, response_headers): | 265 def start_response(status, response_headers): |
| 246 for name, value in response_headers: | 266 for name, value in response_headers: |
| 247 response_header_map[name] = value | 267 response_header_map[name] = value |
| 248 result = json.loads(notification.notification({}, start_response)) | 268 result = json.loads(notification.notification({}, start_response)) |
| 249 self.assertEqual(result["version"], | 269 self.assertEqual(result["version"], |
| 250 response_header_map["ABP-Notification-Version"]) | 270 response_header_map["ABP-Notification-Version"]) |
| 251 | 271 |
| 252 def test_default_group_notification_returned_if_valid(self): | 272 def test_default_group_notification_returned_if_valid(self): |
| 253 self.load_notifications_mock.return_value = [ | 273 self.load_notifications_mock.return_value = [ |
| 254 {"id": "1", "title": {}, "message": {}}, | 274 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 255 { | 275 { |
| 256 "id": "a", | 276 "id": "a", |
| 257 "title": {"en-US": "0"}, | 277 "title": {"en-US": "0"}, |
| 258 "message": {"en-US": "0"}, | 278 "message": {"en-US": "0"}, |
| 259 "variants": [ | 279 "variants": [ |
| 260 {"title": {"en-US": "1"}, "message": {"en-US": "1"}} | 280 {"title": {"en-US": "1"}, "message": {"en-US": "1"}} |
| 261 ] | 281 ] |
| 262 } | 282 } |
| 263 ] | 283 ] |
| 264 result = json.loads(notification.notification({ | 284 result = json.loads(notification.notification({ |
| 265 "QUERY_STRING": "lastVersion=197001010000-a/0" | 285 "QUERY_STRING": "lastVersion=197001010000-a/0" |
| 266 }, lambda *args: None)) | 286 }, lambda *args: None)) |
| 267 self.assertEqual(len(result["notifications"]), 2) | 287 self.assertEqual(len(result["notifications"]), 2) |
| 268 self.assertEqual(result["notifications"][0]["id"], "1") | 288 self.assertEqual(result["notifications"][0]["id"], "1") |
| 269 self.assertEqual(result["notifications"][1]["id"], "a") | 289 self.assertEqual(result["notifications"][1]["id"], "a") |
| 270 self.assertEqual(result["notifications"][1]["title"]["en-US"], "0") | 290 self.assertEqual(result["notifications"][1]["title"]["en-US"], "0") |
| 271 self.assertNotIn("variants", result["notifications"][1]) | 291 self.assertNotIn("variants", result["notifications"][1]) |
| 272 self.assertRegexpMatches(result["version"], r"-a/0") | 292 self.assertRegexpMatches(result["version"], r"-a/0") |
| 273 | 293 |
| 274 def test_default_group_notification_not_returned_if_invalid(self): | 294 def test_default_group_notification_not_returned_if_invalid(self): |
| 275 self.load_notifications_mock.return_value = [ | 295 self.load_notifications_mock.return_value = [ |
| 276 {"id": "1", "title": {}, "message": {}}, | 296 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 277 { | 297 { |
| 278 "id": "a", | 298 "id": "a", |
| 279 "title": {"en-US": "0"}, | 299 "title": {"en-US": "0"}, |
| 280 "variants": [ | 300 "variants": [ |
| 281 {"title": {"en-US": "1"}, "message": {"en-US": "1"}} | 301 {"title": {"en-US": "1"}, "message": {"en-US": "1"}} |
| 282 ] | 302 ] |
| 283 } | 303 } |
| 284 ] | 304 ] |
| 285 result = json.loads(notification.notification({ | 305 result = json.loads(notification.notification({ |
| 286 "QUERY_STRING": "lastVersion=197001010000-a/0" | 306 "QUERY_STRING": "lastVersion=197001010000-a/0" |
| 287 }, lambda *args: None)) | 307 }, lambda *args: None)) |
| 288 self.assertEqual(len(result["notifications"]), 1) | 308 self.assertEqual(len(result["notifications"]), 1) |
| 289 self.assertEqual(result["notifications"][0]["id"], "1") | 309 self.assertEqual(result["notifications"][0]["id"], "1") |
| 290 self.assertRegexpMatches(result["version"], r"-a/0") | 310 self.assertRegexpMatches(result["version"], r"-a/0") |
| 291 | 311 |
| 292 def test_invalid_notification_not_returned(self): | 312 def test_invalid_notification_not_returned(self): |
| 293 self.load_notifications_mock.return_value = [ | 313 self.load_notifications_mock.return_value = [ |
| 294 {"id": "1", "title": {}, "message": {}}, | 314 {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
| 295 {"id": "2", "title": {}}, | 315 {"id": "2", "title": {"en-US": ""}, "message": {}}, |
| 296 {"id": "3", "message": {}} | 316 {"id": "3", "title": {}, "message": {"en-US": ""}}, |
| 317 {"id": "4", "title": {}}, |
| 318 {"id": "5", "message": {}}, |
| 319 {"id": "6"} |
| 297 ] | 320 ] |
| 298 result = json.loads(notification.notification({}, lambda *args: None)) | 321 result = json.loads(notification.notification({}, lambda *args: None)) |
| 299 self.assertEqual(len(result["notifications"]), 1) | 322 self.assertEqual(len(result["notifications"]), 1) |
| 300 self.assertEqual(result["notifications"][0]["id"], "1") | 323 self.assertEqual(result["notifications"][0]["id"], "1") |
| 301 | 324 |
| 302 def test_stays_in_group_when_notification_present(self): | 325 def test_stays_in_group_when_notification_present(self): |
| 303 self.load_notifications_mock.return_value = [ | 326 self.load_notifications_mock.return_value = [ |
| 304 {"id": "a"} | 327 {"id": "a"} |
| 305 ] | 328 ] |
| 306 result = json.loads(notification.notification({ | 329 result = json.loads(notification.notification({ |
| (...skipping 15 matching lines...) Expand all Loading... |
| 322 {"id": "a", "inactive": True} | 345 {"id": "a", "inactive": True} |
| 323 ] | 346 ] |
| 324 result = json.loads(notification.notification({ | 347 result = json.loads(notification.notification({ |
| 325 "QUERY_STRING": "lastVersion=197001010000-a/0-b/1" | 348 "QUERY_STRING": "lastVersion=197001010000-a/0-b/1" |
| 326 }, lambda *args: None)) | 349 }, lambda *args: None)) |
| 327 self.assertEqual(len(result["notifications"]), 0) | 350 self.assertEqual(len(result["notifications"]), 0) |
| 328 self.assertRegexpMatches(result["version"], r"-a/0") | 351 self.assertRegexpMatches(result["version"], r"-a/0") |
| 329 | 352 |
| 330 def test_inactive_notifications_not_returned(self): | 353 def test_inactive_notifications_not_returned(self): |
| 331 self.load_notifications_mock.return_value = [ | 354 self.load_notifications_mock.return_value = [ |
| 332 {"id": "a", "title": {}, "message": {}, "inactive": True}, | 355 {"id": "a", "title": {"en-US": ""}, "message": {"en-US": ""}, "inactive":
True}, |
| 333 {"id": "b", "title": {}, "message": {}, "inactive": False}, | 356 {"id": "b", "title": {"en-US": ""}, "message": {"en-US": ""}, "inactive":
False}, |
| 334 {"id": "c", "title": {}, "message": {}} | 357 {"id": "c", "title": {"en-US": ""}, "message": {"en-US": ""}} |
| 335 ] | 358 ] |
| 336 result = json.loads(notification.notification({}, lambda *args: None)) | 359 result = json.loads(notification.notification({}, lambda *args: None)) |
| 337 self.assertEqual(len(result["notifications"]), 2) | 360 self.assertEqual(len(result["notifications"]), 2) |
| 338 self.assertEqual(result["notifications"][0]["id"], "b") | 361 self.assertEqual(result["notifications"][0]["id"], "b") |
| 339 self.assertEqual(result["notifications"][1]["id"], "c") | 362 self.assertEqual(result["notifications"][1]["id"], "c") |
| 340 | 363 |
| 341 if __name__ == '__main__': | 364 if __name__ == '__main__': |
| 342 unittest.main() | 365 unittest.main() |
| OLD | NEW |