|
2 | 2 | import datetime |
3 | 3 | import json |
4 | 4 |
|
5 | | -from sqlalchemy import desc |
6 | | - |
7 | | -from inbox.models import Block, Category, Message, Namespace, Thread |
| 5 | +from inbox.models import Block, Category, Namespace, Thread |
8 | 6 | from inbox.util.misc import dt_to_timestamp |
9 | 7 | from tests.util.base import add_fake_message, add_fake_thread, test_client |
10 | 8 |
|
@@ -256,27 +254,46 @@ def test_query_target(db, api_client, thread, default_namespace): |
256 | 254 |
|
257 | 255 |
|
258 | 256 | def test_ordering(api_client, db, default_namespace): |
| 257 | + thr = add_fake_thread(db.session, default_namespace.id) |
| 258 | + messages = [] |
259 | 259 | for i in range(3): |
260 | | - thr = add_fake_thread(db.session, default_namespace.id) |
261 | 260 | received_date = datetime.datetime.utcnow() + datetime.timedelta( |
262 | 261 | seconds=22 * (i + 1) |
263 | 262 | ) |
264 | | - add_fake_message( |
265 | | - db.session, default_namespace.id, thr, received_date=received_date |
| 263 | + messages.append( |
| 264 | + add_fake_message( |
| 265 | + db.session, |
| 266 | + default_namespace.id, |
| 267 | + thr, |
| 268 | + received_date=received_date, |
| 269 | + ) |
266 | 270 | ) |
| 271 | + |
267 | 272 | ordered_results = api_client.get_data("/messages") |
| 273 | + ordered_ids = [result["id"] for result in ordered_results] |
268 | 274 | ordered_dates = [result["date"] for result in ordered_results] |
| 275 | + assert ordered_ids == list(reversed([m.public_id for m in messages])) |
269 | 276 | assert ordered_dates == sorted(ordered_dates, reverse=True) |
270 | 277 |
|
271 | | - ordered_results = api_client.get_data("/messages?limit=3") |
272 | | - expected_public_ids = [ |
273 | | - public_id |
274 | | - for public_id, in db.session.query(Message.public_id) |
275 | | - .filter(Message.namespace_id == default_namespace.id) |
276 | | - .order_by(desc(Message.received_date)) |
277 | | - .limit(3) |
278 | | - ] |
279 | | - assert expected_public_ids == [r["id"] for r in ordered_results] |
| 278 | + ordered_results = api_client.get_data("/messages?order_by=received_date") |
| 279 | + ordered_ids = [result["id"] for result in ordered_results] |
| 280 | + ordered_dates = [result["date"] for result in ordered_results] |
| 281 | + assert ordered_ids == [m.public_id for m in messages] |
| 282 | + assert ordered_dates == sorted(ordered_dates) |
| 283 | + |
| 284 | + ordered_results = api_client.get_data("/messages?order_by=-received_date") |
| 285 | + ordered_ids = [result["id"] for result in ordered_results] |
| 286 | + ordered_dates = [result["date"] for result in ordered_results] |
| 287 | + assert ordered_ids == list(reversed([m.public_id for m in messages])) |
| 288 | + assert ordered_dates == sorted(ordered_dates, reverse=True) |
| 289 | + |
| 290 | + response = api_client.get_data("/messages?order_by=nonsense") |
| 291 | + assert response == { |
| 292 | + "message": ( |
| 293 | + "An internal error occured. If this issue persists, please contact" |
| 294 | + " [email protected] and include this request_uid: None" |
| 295 | + ) |
| 296 | + } |
280 | 297 |
|
281 | 298 |
|
282 | 299 | def test_strict_argument_parsing(api_client): |
|
0 commit comments