Exercises ORDER BY clause generation. Tests simple, compound, aliased and DESC clauses.
(self, connection)
| 454 | |
| 455 | @testing.requires.nullsordering |
| 456 | def test_order_by_nulls(self, connection): |
| 457 | """Exercises ORDER BY clause generation. |
| 458 | |
| 459 | Tests simple, compound, aliased and DESC clauses. |
| 460 | """ |
| 461 | |
| 462 | users = self.tables.users |
| 463 | |
| 464 | connection.execute(users.insert(), dict(user_id=1)) |
| 465 | connection.execute(users.insert(), dict(user_id=2, user_name="b")) |
| 466 | connection.execute(users.insert(), dict(user_id=3, user_name="a")) |
| 467 | |
| 468 | def a_eq(executable, wanted): |
| 469 | got = list(connection.execute(executable)) |
| 470 | eq_(got, wanted) |
| 471 | |
| 472 | for labels in False, True: |
| 473 | label_style = ( |
| 474 | LABEL_STYLE_NONE |
| 475 | if labels is False |
| 476 | else LABEL_STYLE_TABLENAME_PLUS_COL |
| 477 | ) |
| 478 | a_eq( |
| 479 | users.select() |
| 480 | .order_by(users.c.user_name.nulls_first()) |
| 481 | .set_label_style(label_style), |
| 482 | [(1, None), (3, "a"), (2, "b")], |
| 483 | ) |
| 484 | |
| 485 | a_eq( |
| 486 | users.select() |
| 487 | .order_by(users.c.user_name.nulls_last()) |
| 488 | .set_label_style(label_style), |
| 489 | [(3, "a"), (2, "b"), (1, None)], |
| 490 | ) |
| 491 | |
| 492 | a_eq( |
| 493 | users.select() |
| 494 | .order_by(asc(users.c.user_name).nulls_first()) |
| 495 | .set_label_style(label_style), |
| 496 | [(1, None), (3, "a"), (2, "b")], |
| 497 | ) |
| 498 | |
| 499 | a_eq( |
| 500 | users.select() |
| 501 | .order_by(asc(users.c.user_name).nulls_last()) |
| 502 | .set_label_style(label_style), |
| 503 | [(3, "a"), (2, "b"), (1, None)], |
| 504 | ) |
| 505 | |
| 506 | a_eq( |
| 507 | users.select() |
| 508 | .order_by(users.c.user_name.desc().nulls_first()) |
| 509 | .set_label_style(label_style), |
| 510 | [(1, None), (2, "b"), (3, "a")], |
| 511 | ) |
| 512 | |
| 513 | a_eq( |
nothing calls this directly
no test coverage detected