Exercises ORDER BY clause generation. Tests simple, compound, aliased and DESC clauses.
(self, connection)
| 478 | |
| 479 | @testing.requires.nullsordering |
| 480 | def test_order_by_nulls(self, connection): |
| 481 | """Exercises ORDER BY clause generation. |
| 482 | |
| 483 | Tests simple, compound, aliased and DESC clauses. |
| 484 | """ |
| 485 | |
| 486 | users = self.tables.users |
| 487 | |
| 488 | connection.execute(users.insert(), dict(user_id=1)) |
| 489 | connection.execute(users.insert(), dict(user_id=2, user_name="b")) |
| 490 | connection.execute(users.insert(), dict(user_id=3, user_name="a")) |
| 491 | |
| 492 | def a_eq(executable, wanted): |
| 493 | got = list(connection.execute(executable)) |
| 494 | eq_(got, wanted) |
| 495 | |
| 496 | for labels in False, True: |
| 497 | label_style = ( |
| 498 | LABEL_STYLE_NONE |
| 499 | if labels is False |
| 500 | else LABEL_STYLE_TABLENAME_PLUS_COL |
| 501 | ) |
| 502 | a_eq( |
| 503 | users.select() |
| 504 | .order_by(users.c.user_name.nulls_first()) |
| 505 | .set_label_style(label_style), |
| 506 | [(1, None), (3, "a"), (2, "b")], |
| 507 | ) |
| 508 | |
| 509 | a_eq( |
| 510 | users.select() |
| 511 | .order_by(users.c.user_name.nulls_last()) |
| 512 | .set_label_style(label_style), |
| 513 | [(3, "a"), (2, "b"), (1, None)], |
| 514 | ) |
| 515 | |
| 516 | a_eq( |
| 517 | users.select() |
| 518 | .order_by(asc(users.c.user_name).nulls_first()) |
| 519 | .set_label_style(label_style), |
| 520 | [(1, None), (3, "a"), (2, "b")], |
| 521 | ) |
| 522 | |
| 523 | a_eq( |
| 524 | users.select() |
| 525 | .order_by(asc(users.c.user_name).nulls_last()) |
| 526 | .set_label_style(label_style), |
| 527 | [(3, "a"), (2, "b"), (1, None)], |
| 528 | ) |
| 529 | |
| 530 | a_eq( |
| 531 | users.select() |
| 532 | .order_by(users.c.user_name.desc().nulls_first()) |
| 533 | .set_label_style(label_style), |
| 534 | [(1, None), (2, "b"), (3, "a")], |
| 535 | ) |
| 536 | |
| 537 | a_eq( |
nothing calls this directly
no test coverage detected