~didrocks/unity/altf10

« back to all changes in this revision

Viewing changes to grackle/tests/test_client.py

  • Committer: Aaron Bentley
  • Date: 2012-01-13 10:44:28 UTC
  • Revision ID: aaron@canonical.com-20120113104428-wuwbg05jbz05df6t
Support thread_oldest order.

Show diffs side-by-side

added added

removed removed

Lines of Context:
63
63
        os.kill(self.pid, SIGKILL)
64
64
 
65
65
 
66
 
SUPPORTED_ORDERS = set(['date', 'author', 'subject', 'thread_subject'])
 
66
SUPPORTED_ORDERS = set(
 
67
    ['date', 'author', 'subject', 'thread_oldest', 'thread_subject'])
67
68
 
68
69
 
69
70
class FakeGrackleRequestHandler(BaseHTTPRequestHandler):
90
91
                self.send_response(httplib.BAD_REQUEST)
91
92
                self.wfile.write('Unsupported order')
92
93
                return
93
 
            elif order == 'thread_subject':
 
94
            elif order.startswith('thread_'):
94
95
                threaded = threaded_messages(messages)
95
96
                messages = []
96
 
                threaded.sort(key=lambda t: t[0]['subject'])
 
97
                if order == 'thread_subject':
 
98
                    threaded.sort(key=lambda t: t[0]['subject'])
 
99
                if order == 'thread_oldest':
 
100
                    threaded.sort(key=lambda t: min(m['date'] for m in t))
97
101
                for thread in threaded:
98
102
                    messages.extend(thread)
99
103
            else:
100
 
                messages = sorted(
101
 
                    self.server.messages[archive], key=lambda m: m[order])
 
104
                messages.sort(key=lambda m: m[order])
102
105
        messages = [m for m in messages
103
106
                    if 'message_ids' not in parameters or
104
107
                    m['message_id'] in parameters['message_ids']]
226
229
            response = client.get_messages('baz', order='thread_subject')
227
230
            self.assertIDOrder(['bar', 'qux', 'foo'], response['messages'])
228
231
 
 
232
    def test_get_messages_thread_oldest_order(self):
 
233
        client = GrackleClient('localhost', 8439)
 
234
        with fake_grackle_service(client, {'baz': [
 
235
            {'message_id': 'bar', 'date': 'x'},
 
236
            {'message_id': 'qux', 'date': 'z'},
 
237
            {'message_id': 'foo', 'date': 'y', 'in_reply_to': 'qux'},
 
238
            ]}):
 
239
            response = client.get_messages('baz')
 
240
            self.assertIDOrder(['bar', 'qux', 'foo'], response['messages'])
 
241
            response = client.get_messages('baz', order='date')
 
242
            self.assertIDOrder(['bar', 'foo', 'qux'], response['messages'])
 
243
            response = client.get_messages('baz', order='thread_oldest')
 
244
            self.assertIDOrder(['bar', 'qux', 'foo'], response['messages'])
 
245
 
229
246
    def test_get_messages_unsupported_order(self):
230
247
        client = GrackleClient('localhost', 8439)
231
248
        with fake_grackle_service(client,