~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:
64
64
 
65
65
 
66
66
SUPPORTED_ORDERS = set(
67
 
    ['date', 'author', 'subject', 'thread_newest', 'thread_oldest',
68
 
     'thread_subject'])
 
67
    ['date', 'author', 'subject', 'thread_oldest', 'thread_subject'])
69
68
 
70
69
 
71
70
class FakeGrackleRequestHandler(BaseHTTPRequestHandler):
82
81
    def do_GET(self):
83
82
        scheme, netloc, path, params, query_string, fragments = (
84
83
            urlparse(self.path))
85
 
        parts = path.split('/')
86
 
        if parts[1] == 'archive':
87
 
            self.get_messages(parts[2], query_string)
88
 
 
89
 
    def get_messages(self, archive_id, query_string):
 
84
        archive = os.path.split(path)[1]
90
85
        query = parse_qs(query_string)
91
86
        parameters = simplejson.loads(query['parameters'][0])
92
87
        order = parameters.get('order')
93
 
        messages = self.server.messages[archive_id]
 
88
        messages = self.server.messages[archive]
94
89
        if order is not None :
95
90
            if order not in SUPPORTED_ORDERS:
96
91
                self.send_response(httplib.BAD_REQUEST)
103
98
                    threaded.sort(key=lambda t: t[0]['subject'])
104
99
                if order == 'thread_oldest':
105
100
                    threaded.sort(key=lambda t: min(m['date'] for m in t))
106
 
                if order == 'thread_newest':
107
 
                    threaded.sort(key=lambda t: max(m['date'] for m in t))
108
101
                for thread in threaded:
109
102
                    messages.extend(thread)
110
103
            else:
250
243
            response = client.get_messages('baz', order='thread_oldest')
251
244
            self.assertIDOrder(['bar', 'qux', 'foo'], response['messages'])
252
245
 
253
 
    def test_get_messages_thread_newest_order(self):
254
 
        client = GrackleClient('localhost', 8439)
255
 
        with fake_grackle_service(client, {'baz': [
256
 
            {'message_id': 'bar', 'date': 'x'},
257
 
            {'message_id': 'qux', 'date': 'w'},
258
 
            {'message_id': 'foo', 'date': 'y', 'in_reply_to': 'bar'},
259
 
            {'message_id': 'baz', 'date': 'z', 'in_reply_to': 'qux'},
260
 
            ]}):
261
 
            response = client.get_messages('baz', order='date')
262
 
            self.assertIDOrder(
263
 
                ['qux', 'bar', 'foo', 'baz'], response['messages'])
264
 
            response = client.get_messages('baz', order='thread_newest')
265
 
            self.assertIDOrder(
266
 
                ['bar', 'foo', 'qux', 'baz'], response['messages'])
267
 
 
268
246
    def test_get_messages_unsupported_order(self):
269
247
        client = GrackleClient('localhost', 8439)
270
248
        with fake_grackle_service(client,