1 from __future__ import with_statement
7 sys.path.append("../src")
9 import util.coroutines as coroutines
14 logging.basicConfig(level=logging.DEBUG)
17 class MockBackend(object):
19 def __init__(self, conversationsData):
20 self.conversationsData = conversationsData
22 def get_messages(self):
23 return self.conversationsData
26 def generate_update_callback(callbackData):
29 @coroutines.expand_positional
30 def callback(conversations, updatedIds):
31 callbackData.append((conversations, updatedIds))
36 def test_no_conversations():
38 callback = generate_update_callback(callbackData)
40 backend = MockBackend([])
41 conversings = gvoice.conversations.Conversations(backend)
42 conversings.updateSignalHandler.register_sink(callback)
43 assert len(callbackData) == 0, "%r" % callbackData
46 assert len(callbackData) == 0, "%r" % callbackData
48 conversings.update(force=True)
49 assert len(callbackData) == 0, "%r" % callbackData
51 contacts = list(conversings.get_conversations())
52 assert len(contacts) == 0
55 def test_a_conversation():
57 callback = generate_update_callback(callbackData)
59 backend = MockBackend([
64 "time": datetime.datetime(2000, 1, 1),
65 "relTime": "Sometime back",
66 "prettyNumber": "(555) 555-1224",
67 "number": "5555551224",
70 ("Innocent Man", "Body of Message", "Forever ago")
74 conversings = gvoice.conversations.Conversations(backend)
75 conversings.updateSignalHandler.register_sink(callback)
76 assert len(callbackData) == 0, "%r" % callbackData
78 cons = list(conversings.get_conversations())
80 assert cons[0] == ("con1", "5555551224"), cons
83 assert len(callbackData) == 0, "%r" % callbackData
85 conversings.update(force=True)
86 assert len(callbackData) == 0, "%r" % callbackData
89 def test_adding_a_conversation():
91 callback = generate_update_callback(callbackData)
93 backend = MockBackend([
98 "time": datetime.datetime(2000, 1, 1),
99 "relTime": "Sometime back",
100 "prettyNumber": "(555) 555-1224",
101 "number": "5555551224",
104 ("Innocent Man", "Body of Message", "Forever ago")
108 conversings = gvoice.conversations.Conversations(backend)
109 conversings.updateSignalHandler.register_sink(callback)
110 assert len(callbackData) == 0, "%r" % callbackData
112 cons = list(conversings.get_conversations())
113 assert len(cons) == 1
114 assert cons[0] == ("con1", "5555551224"), cons
117 assert len(callbackData) == 0, "%r" % callbackData
119 conversings.update(force=True)
120 assert len(callbackData) == 0, "%r" % callbackData
122 backend.conversationsData.append(
126 "name": "Pretty Man",
127 "time": datetime.datetime(2003, 1, 1),
128 "relTime": "Somewhere over the rainbow",
129 "prettyNumber": "(555) 555-2244",
130 "number": "5555552244",
133 ("Con Man", "Body of Message somewhere", "Maybe")
139 assert len(callbackData) == 0, "%r" % callbackData
141 conversings.update(force=True)
142 assert len(callbackData) == 1, "%r" % callbackData
143 idsOnly = callbackData[0][1]
144 assert ("con2", "5555552244") in idsOnly, idsOnly
146 cons = list(conversings.get_conversations())
147 assert len(cons) == 2
148 assert ("con1", "5555551224") in cons, cons
149 assert ("con2", "5555552244") in cons, cons
152 def test_merging_a_conversation():
154 callback = generate_update_callback(callbackData)
156 backend = MockBackend([
161 "time": datetime.datetime(2000, 1, 1),
162 "relTime": "Sometime back",
163 "prettyNumber": "(555) 555-1224",
164 "number": "5555551224",
167 ("Innocent Man", "Body of Message", "Forever ago")
171 conversings = gvoice.conversations.Conversations(backend)
172 conversings.updateSignalHandler.register_sink(callback)
173 assert len(callbackData) == 0, "%r" % callbackData
175 cons = list(conversings.get_conversations())
176 assert len(cons) == 1
177 assert cons[0] == ("con1", "5555551224"), cons
180 assert len(callbackData) == 0, "%r" % callbackData
182 conversings.update(force=True)
183 assert len(callbackData) == 0, "%r" % callbackData
185 backend.conversationsData.append(
190 "time": datetime.datetime(2003, 1, 1),
191 "relTime": "Sometime back",
192 "prettyNumber": "(555) 555-1224",
193 "number": "5555551224",
196 ("Innocent Man", "Mwahahaah", "somewhat closer")
202 assert len(callbackData) == 0, "%r" % callbackData
204 conversings.update(force=True)
205 assert len(callbackData) == 1, "%r" % callbackData
206 idsOnly = callbackData[0][1]
207 assert ("con1", "5555551224") in idsOnly, idsOnly
208 convseration = conversings.get_conversation(idsOnly.pop())
209 assert len(convseration["messageParts"]) == 2, convseration["messageParts"]