From 0156e723526fa39b2a83228c7cdf37b032fed04b Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Fri, 22 Nov 2013 14:30:36 -0500 Subject: [PATCH] Add tests for our event queues data structure. (imported from commit 5c00251998d25cf2283737173e5af0b26ccbdad4) --- zerver/tests.py | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/zerver/tests.py b/zerver/tests.py index 091bfe92f8..cfd2b25f2b 100644 --- a/zerver/tests.py +++ b/zerver/tests.py @@ -2476,6 +2476,103 @@ class POSTRequestMock(object): self.session = DummySession() self.META = {'PATH_INFO': 'test'} +from zerver.lib.event_queue import EventQueue +class EventQueueTest(TestCase): + def test_one_event(self): + queue = EventQueue("1") + queue.push({"type": "pointer", + "pointer": 1, + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 0, + 'type': 'pointer', + "pointer": 1, + "timestamp": "1"}]) + + def test_event_collapsing(self): + queue = EventQueue("1") + for pointer_val in xrange(1, 10): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + self.assertEqual(queue.contents(), + [{'id': 8, + 'type': 'pointer', + "pointer": 9, + "timestamp": "9"}]) + + queue = EventQueue("2") + for pointer_val in xrange(1, 10): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + queue.push({"type": "unknown"}) + for pointer_val in xrange(11, 20): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + self.assertEqual(queue.contents(), + [{"type": "unknown", + "id": 9,}, + {'id': 18, + 'type': 'pointer', + "pointer": 19, + "timestamp": "19"}]) + for pointer_val in xrange(21, 23): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + self.assertEqual(queue.contents(), + [{"type": "unknown", + "id": 9,}, + {'id': 18, + 'type': 'pointer', + "pointer": 19, + "timestamp": "19"}, + {'id': 20, + 'type': 'pointer', + "pointer": 22, + "timestamp": "22"},]) + + def test_flag_collapsing(self): + queue = EventQueue("1") + queue.push({"type": "update_message_flags", + "flag": "read", + "operation": "add", + "all": False, + "messages": [1, 2, 3, 4], + "timestamp": "1"}) + queue.push({"type": "update_message_flags", + "flag": "read", + "all": False, + "operation": "add", + "messages": [5, 6], + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 1, + 'type': 'update_message_flags', + "all": False, + "flag": "read", + "operation": "add", + "messages": [1,2,3,4,5,6], + "timestamp": "1"}]) + + def test_collapse_event(self): + queue = EventQueue("1") + queue.push({"type": "pointer", + "pointer": 1, + "timestamp": "1"}) + queue.push({"type": "unknown", + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 0, + 'type': 'pointer', + "pointer": 1, + "timestamp": "1"}, + {'id': 1, + 'type': 'unknown', + "timestamp": "1"}]) + class GetProfileTest(AuthedTestCase): def common_update_pointer(self, email, pointer):