Index: sitescripts/notifications/test/notification.py |
=================================================================== |
--- a/sitescripts/notifications/test/notification.py |
+++ b/sitescripts/notifications/test/notification.py |
@@ -30,7 +30,9 @@ |
self.load_notifications_patcher.stop() |
def test_no_group(self): |
- self.load_notifications_mock.return_value = [{"id": "1"}] |
+ self.load_notifications_mock.return_value = [ |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}} |
Felix Dahlke
2015/09/04 09:08:40
Adding title and message this way to each notifica
Sebastian Noack
2015/09/04 11:38:12
DUMMY_TEXTS = {"title": {"en-US": ""}, "message":
Felix Dahlke
2015/09/07 07:54:36
Now that I've gotten rid of the "en-US" checking,
|
+ ] |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "1") |
@@ -38,10 +40,10 @@ |
def test_not_in_group(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
} |
] |
result = json.loads(notification.notification({ |
@@ -53,10 +55,10 @@ |
def test_in_group(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
} |
] |
result = json.loads(notification.notification({ |
@@ -68,18 +70,18 @@ |
def test_not_in_one_of_many_groups(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
}, |
{ |
"id": "b", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
}, |
{ |
"id": "c", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
} |
] |
result = json.loads(notification.notification({ |
@@ -91,18 +93,18 @@ |
def test_in_one_of_many_groups(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
}, |
{ |
"id": "b", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
}, |
{ |
"id": "c", |
- "variants": [{}] |
+ "variants": [{"title": {"en-US": ""}, "message": {"en-US": ""}}] |
} |
] |
result = json.loads(notification.notification({ |
@@ -114,10 +116,12 @@ |
def test_not_put_in_group(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{"sample": 0}] |
+ "variants": [ |
+ {"sample": 0, "title": {"en-US": ""}, "message": {"en-US": ""}} |
+ ] |
} |
] |
result = json.loads(notification.notification({ |
@@ -129,10 +133,12 @@ |
def test_put_in_group(self): |
self.load_notifications_mock.return_value = [ |
- {"id": "1"}, |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
{ |
"id": "a", |
- "variants": [{"sample": 1}] |
+ "variants": [ |
+ {"sample": 1, "title": {"en-US": ""}, "message": {"en-US": ""}} |
+ ] |
} |
] |
result = json.loads(notification.notification({ |
@@ -146,13 +152,12 @@ |
self.load_notifications_mock.return_value = [ |
{ |
"id": "a", |
- "title.en-GB": "default", |
- "message.en-GB": "default", |
- "message.de-DE": "vorgabe", |
+ "title": {"en-US": "default"}, |
Felix Dahlke
2015/09/04 09:08:40
No idea why I had that syntax there, it's not vali
|
+ "message": {"en-US": "default"}, |
"variants": [ |
{ |
"sample": 1, |
- "message.en-GB": "variant" |
+ "message": {"en-US": "variant"} |
} |
] |
} |
@@ -160,9 +165,8 @@ |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "a") |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "default") |
- self.assertEqual(result["notifications"][0]["message.en-GB"], "variant") |
- self.assertEqual(result["notifications"][0]["message.de-DE"], "vorgabe") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "default") |
+ self.assertEqual(result["notifications"][0]["message"]["en-US"], "variant") |
self.assertFalse("variants" in result["notifications"][0]) |
self.assertFalse("sample" in result["notifications"][0]) |
@@ -184,15 +188,18 @@ |
"variants": [ |
{ |
"sample": 0.5, |
- "title.en-GB": "1" |
+ "title": {"en-US": "1"}, |
+ "message": {"en-US": ""} |
}, |
{ |
"sample": 0.25, |
- "title.en-GB": "2" |
+ "title": {"en-US": "2"}, |
+ "message": {"en-US": ""} |
}, |
{ |
"sample": 0.25, |
- "title.en-GB": "3" |
+ "title": {"en-US": "3"}, |
+ "message": {"en-US": ""} |
} |
] |
} |
@@ -200,32 +207,32 @@ |
random_call.return_value = 0 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "1") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
self.assertRegexpMatches(result["version"], r"-a/1") |
random_call.return_value = 0.5 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "1") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
self.assertRegexpMatches(result["version"], r"-a/1") |
random_call.return_value = 0.51 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "2") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "2") |
self.assertRegexpMatches(result["version"], r"-a/2") |
random_call.return_value = 0.75 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "2") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "2") |
self.assertRegexpMatches(result["version"], r"-a/2") |
random_call.return_value = 0.751 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "3") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "3") |
self.assertRegexpMatches(result["version"], r"-a/3") |
random_call.return_value = 1 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "3") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "3") |
self.assertRegexpMatches(result["version"], r"-a/3") |
@mock.patch("random.random") |
@@ -236,11 +243,13 @@ |
"variants": [ |
{ |
"sample": 0.25, |
- "title.en-GB": "1" |
+ "title": {"en-US": "1"}, |
+ "message": {"en-US": ""} |
}, |
{ |
"sample": 0.25, |
- "title.en-GB": "2" |
+ "title": {"en-US": "2"}, |
+ "message": {"en-US": ""} |
} |
] |
}, |
@@ -249,11 +258,13 @@ |
"variants": [ |
{ |
"sample": 0.25, |
- "title.en-GB": "1" |
+ "title": {"en-US": "1"}, |
+ "message": {"en-US": ""} |
}, |
{ |
"sample": 0.25, |
- "title.en-GB": "2" |
+ "title": {"en-US": "2"}, |
+ "message": {"en-US": ""} |
} |
] |
} |
@@ -262,25 +273,25 @@ |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "a") |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "1") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
self.assertRegexpMatches(result["version"], r"-a/1-b/0") |
random_call.return_value = 0.251 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "a") |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "2") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "2") |
self.assertRegexpMatches(result["version"], r"-a/2-b/0") |
random_call.return_value = 0.51 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "b") |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "1") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "1") |
self.assertRegexpMatches(result["version"], r"-a/0-b/1") |
random_call.return_value = 0.751 |
result = json.loads(notification.notification({}, lambda *args: None)) |
self.assertEqual(len(result["notifications"]), 1) |
self.assertEqual(result["notifications"][0]["id"], "b") |
- self.assertEqual(result["notifications"][0]["title.en-GB"], "2") |
+ self.assertEqual(result["notifications"][0]["title"]["en-US"], "2") |
self.assertRegexpMatches(result["version"], r"-a/0-b/2") |
def test_invalid_last_version(self): |
@@ -295,7 +306,9 @@ |
lambda *args: None) |
def test_version_header_present(self): |
- self.load_notifications_mock.return_value = [{"id": "1"}] |
+ self.load_notifications_mock.return_value = [ |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}} |
+ ] |
response_header_map = {} |
def start_response(status, response_headers): |
for name, value in response_headers: |
@@ -304,5 +317,57 @@ |
self.assertEqual(result["version"], |
response_header_map["ABP-Notification-Version"]) |
+ def test_default_group_notification_returned_if_valid(self): |
+ self.load_notifications_mock.return_value = [ |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
+ { |
+ "id": "a", |
+ "title": {"en-US": "0"}, |
+ "message": {"en-US": "0"}, |
+ "variants": [ |
+ {"title": {"en-US": "1"}, "message": {"en-US": "1"}} |
+ ] |
+ } |
+ ] |
+ result = json.loads(notification.notification({ |
+ "QUERY_STRING": "lastVersion=197001010000-a/0" |
+ }, lambda *args: None)) |
+ self.assertEqual(len(result["notifications"]), 2) |
+ self.assertEqual(result["notifications"][0]["id"], "1") |
+ self.assertEqual(result["notifications"][1]["id"], "a") |
+ self.assertEqual(result["notifications"][1]["title"]["en-US"], "0") |
+ self.assertNotIn("variants", result["notifications"][1]) |
+ self.assertRegexpMatches(result["version"], r"-a/0") |
+ |
+ def test_default_group_notification_not_returned_if_invalid(self): |
+ self.load_notifications_mock.return_value = [ |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
+ { |
+ "id": "a", |
+ "title": {"en-US": "0"}, |
+ "variants": [ |
+ {"title": {"en-US": "1"}, "message": {"en-US": "1"}} |
+ ] |
+ } |
+ ] |
+ result = json.loads(notification.notification({ |
+ "QUERY_STRING": "lastVersion=197001010000-a/0" |
+ }, lambda *args: None)) |
+ self.assertEqual(len(result["notifications"]), 1) |
+ self.assertEqual(result["notifications"][0]["id"], "1") |
+ self.assertRegexpMatches(result["version"], r"-a/0") |
+ |
+ def test_invalid_notification_not_returned(self): |
+ self.load_notifications_mock.return_value = [ |
+ {"id": "1", "title": {"en-US": ""}, "message": {"en-US": ""}}, |
+ {"id": "2", "title": {"en-US": ""}}, |
+ {"id": "3", "title": {}, "message": {"en-US": ""}}, |
+ {"id": "4", "message": {"en-US": ""}}, |
+ {"id": "5", "title": {"en-US": ""}, "message": {}}, |
+ ] |
+ result = json.loads(notification.notification({}, lambda *args: None)) |
+ self.assertEqual(len(result["notifications"]), 1) |
+ self.assertEqual(result["notifications"][0]["id"], "1") |
+ |
if __name__ == '__main__': |
unittest.main() |