| 540 | | basic = paginate("data", default_order="id")(basic) |
|---|
| 541 | | basic = expose("turbogears.tests.paginate")(basic) |
|---|
| 542 | | |
|---|
| 543 | | def reversed(self, method=None): |
|---|
| 544 | | if method=="Q": |
|---|
| 545 | | data = session.query(Address) |
|---|
| 546 | | elif method=="SR": |
|---|
| 547 | | data = SASelectResults(session.query(Address)) |
|---|
| 548 | | elif method == "SO": |
|---|
| 549 | | data = SOAddress.select() |
|---|
| 550 | | else: |
|---|
| 551 | | raise Exception("method must be 'Q' (Query) or 'SR' (SelectResults)") |
|---|
| 552 | | |
|---|
| 553 | | spy = Spy(var_name='data', pages=[1,2], limit=10, page_count=2, |
|---|
| 554 | | order=None, row_count=16) |
|---|
| 555 | | return dict(data=data, spy=spy) |
|---|
| 556 | | reversed = paginate("data", default_order="id", default_reversed=True)(reversed) |
|---|
| 557 | | reversed = expose("turbogears.tests.paginate")(reversed) |
|---|
| | 541 | |
|---|
| | 542 | # default_order = basestring |
|---|
| | 543 | basic1 = paginate("data", default_order="id")(__common) |
|---|
| | 544 | basic1 = expose("turbogears.tests.paginate")(basic1) |
|---|
| | 545 | |
|---|
| | 546 | # default_order = list |
|---|
| | 547 | basic2 = paginate("data", default_order=["id"])(__common) |
|---|
| | 548 | basic2 = expose("turbogears.tests.paginate")(basic2) |
|---|
| | 549 | |
|---|
| | 550 | # default_order = basestring with default_reversed (deprecated) |
|---|
| | 551 | reversed1 = paginate("data", default_order="id", default_reversed=True)(__common) |
|---|
| | 552 | reversed1 = expose("turbogears.tests.paginate")(reversed1) |
|---|
| | 553 | |
|---|
| | 554 | # default_order = basestring |
|---|
| | 555 | reversed2 = paginate("data", default_order="-id")(__common) |
|---|
| | 556 | reversed2 = expose("turbogears.tests.paginate")(reversed2) |
|---|
| | 557 | |
|---|
| | 558 | # default_order = list with default_reversed (WRONG !!!!) |
|---|
| | 559 | wrong_reversed = paginate("data", default_order=["id"], default_reversed=True)(__common) |
|---|
| | 560 | wrong_reversed = expose("turbogears.tests.paginate")(wrong_reversed) |
|---|
| | 561 | |
|---|
| | 562 | # default_order = list |
|---|
| | 563 | reversed3 = paginate("data", default_order=["-id"])(__common) |
|---|
| | 564 | reversed3 = expose("turbogears.tests.paginate")(reversed3) |
|---|
| | 565 | |
|---|
| | 566 | # +/+ |
|---|
| | 567 | default_compound_ordering1 = paginate("data", default_order=["city", "street"])(__common) |
|---|
| | 568 | default_compound_ordering1 = expose("turbogears.tests.paginate")(default_compound_ordering1) |
|---|
| | 569 | |
|---|
| | 570 | # +/- |
|---|
| | 571 | default_compound_ordering2 = paginate("data", default_order=["city", "-street"])(__common) |
|---|
| | 572 | default_compound_ordering2 = expose("turbogears.tests.paginate")(default_compound_ordering2) |
|---|
| | 573 | |
|---|
| | 574 | # -/+ |
|---|
| | 575 | default_compound_ordering3 = paginate("data", default_order=["-city", "street"])(__common) |
|---|
| | 576 | default_compound_ordering3 = expose("turbogears.tests.paginate")(default_compound_ordering3) |
|---|
| | 577 | |
|---|
| | 578 | # -/- |
|---|
| | 579 | default_compound_ordering4 = paginate("data", default_order=["-city", "-street"])(__common) |
|---|
| | 580 | default_compound_ordering4 = expose("turbogears.tests.paginate")(default_compound_ordering4) |
|---|
| | 604 | for test in "basic1", "basic2": |
|---|
| | 605 | for method in "Q", "SR", "SO": |
|---|
| | 606 | self.request("/%s/?method=%s" % (test, method)) |
|---|
| | 607 | self.assert_order(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) |
|---|
| | 608 | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| | 609 | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| | 610 | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| | 611 | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| | 612 | |
|---|
| | 613 | # old style |
|---|
| | 614 | self.request("/%s/?method=%s&tg_paginate_no=2" % (test, method)) |
|---|
| | 615 | self.assert_order(11, 12, 13, 14, 15, 16) |
|---|
| | 616 | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| | 617 | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| | 618 | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| | 619 | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| | 620 | |
|---|
| | 621 | # new style |
|---|
| | 622 | self.request("/%s/?method=%s&data_tgp_no=2" % (test, method)) |
|---|
| | 623 | self.assert_order(11, 12, 13, 14, 15, 16) |
|---|
| | 624 | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| | 625 | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| | 626 | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| | 627 | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| | 628 | |
|---|
| | 629 | def test_ordering(self): |
|---|
| | 630 | for test in "basic1", "basic2": |
|---|
| | 631 | for method in "Q", "SR", "SO": |
|---|
| | 632 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 633 | (test, method, quote(str({'street': [0, True]})))) |
|---|
| | 634 | self.assert_order(16, 2, 3, 4, 5, 6, 7, 8, 9, 10) |
|---|
| | 635 | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| | 636 | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| | 637 | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| | 638 | Spy.assert_ok(self.body, 'ordering', {'street': [0, True]}) |
|---|
| | 639 | |
|---|
| | 640 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 641 | (test, method, quote(str({'street': [0, True]})))) |
|---|
| | 642 | self.assert_order(11, 12, 13, 14, 15, 1) |
|---|
| | 643 | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| | 644 | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| | 645 | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| | 646 | Spy.assert_ok(self.body, 'ordering', {'street': [0, True]}) |
|---|
| | 647 | |
|---|
| | 648 | def test_default_reversed(self): |
|---|
| | 649 | for test in "reversed1", "reversed2", "reversed3": |
|---|
| | 650 | for method in "Q", "SR", "SO": |
|---|
| | 651 | self.request("/%s/?method=%s" % (test, method)) |
|---|
| | 652 | self.assert_order(16, 15, 14, 13, 12, 11, 10, 9, 8, 7) |
|---|
| | 653 | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| | 654 | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| | 655 | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| | 656 | Spy.assert_ok(self.body, 'ordering', {'id': [0, False]}) |
|---|
| | 657 | |
|---|
| | 658 | self.request("/%s/?method=%s&data_tgp_no=2" % (test, method)) |
|---|
| | 659 | self.assert_order(6, 5, 4, 3, 2, 1) |
|---|
| | 660 | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| | 661 | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| | 662 | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| | 663 | Spy.assert_ok(self.body, 'ordering', {'id': [0, False]}) |
|---|
| | 664 | |
|---|
| | 665 | def test_invalid_default_reversed(self): |
|---|
| 580 | | self.request("/basic/?method=%s" % method) |
|---|
| 581 | | self.assert_order(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) |
|---|
| 582 | | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| 583 | | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| 584 | | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| 585 | | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| 586 | | |
|---|
| 587 | | # old style |
|---|
| 588 | | self.request("/basic/?method=%s&tg_paginate_no=2" % method) |
|---|
| 589 | | self.assert_order(11, 12, 13, 14, 15, 16) |
|---|
| 590 | | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| 591 | | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| 592 | | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| 593 | | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| 594 | | |
|---|
| 595 | | # new style |
|---|
| 596 | | self.request("/basic/?method=%s&data_tgp_no=2" % method) |
|---|
| 597 | | self.assert_order(11, 12, 13, 14, 15, 16) |
|---|
| 598 | | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| 599 | | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| 600 | | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| 601 | | Spy.assert_ok(self.body, 'ordering', {'id': [0, True]}) |
|---|
| 602 | | |
|---|
| 603 | | def test_ordering(self): |
|---|
| | 667 | self.request("/wrong_reversed/?method=%s" % method) |
|---|
| | 668 | print self.body |
|---|
| | 669 | assert 'StandardError: default_reversed (deprecated) is only allowed' in self.body |
|---|
| | 670 | |
|---|
| | 671 | def test_reverse_ordering(self): |
|---|
| | 672 | for test in "basic1", "basic2": |
|---|
| | 673 | for method in "Q", "SR", "SO": |
|---|
| | 674 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 675 | (test, method, quote(str({'street': [0, False]})))) |
|---|
| | 676 | self.assert_order(1, 15, 14, 13, 12, 11, 10, 9, 8, 7) |
|---|
| | 677 | Spy.assert_ok(self.body, 'ordering', {'street': [0, False]}) |
|---|
| | 678 | |
|---|
| | 679 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 680 | (test, method, quote(str({'street': [0, False]})))) |
|---|
| | 681 | self.assert_order(6, 5, 4, 3, 2, 16) |
|---|
| | 682 | Spy.assert_ok(self.body, 'ordering', {'street': [0, False]}) |
|---|
| | 683 | |
|---|
| | 684 | def test_compound_ordering(self): |
|---|
| | 685 | for test in "basic1", "basic2": |
|---|
| | 686 | for method in "Q", "SR", "SO": |
|---|
| | 687 | # True/True |
|---|
| | 688 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 689 | (test, method, quote(str({'city': [0, True], 'street': [1, True]})))) |
|---|
| | 690 | self.assert_order(16, 3, 9, 10, 12, 13, 1, 4, 7, 8) |
|---|
| | 691 | Spy.assert_ok(self.body, 'ordering', {'city': [0, True], 'street': [1, True]}) |
|---|
| | 692 | |
|---|
| | 693 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 694 | (test, method, quote(str({'city': [0, True], 'street': [1, True]})))) |
|---|
| | 695 | self.assert_order(14, 15, 2, 5, 6, 11) |
|---|
| | 696 | Spy.assert_ok(self.body, 'ordering', {'city': [0, True], 'street': [1, True]}) |
|---|
| | 697 | |
|---|
| | 698 | # True/False |
|---|
| | 699 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 700 | (test, method, quote(str({'city': [0, True], 'street': [1, False]})))) |
|---|
| | 701 | self.assert_order(1, 13, 12, 10, 9, 3, 16, 15, 14, 8) |
|---|
| | 702 | Spy.assert_ok(self.body, 'ordering', {'city': [0, True], 'street': [1, False]}) |
|---|
| | 703 | |
|---|
| | 704 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 705 | (test, method, quote(str({'city': [0, True], 'street': [1, False]})))) |
|---|
| | 706 | self.assert_order(7, 4, 11, 6, 5, 2) |
|---|
| | 707 | Spy.assert_ok(self.body, 'ordering', {'city': [0, True], 'street': [1, False]}) |
|---|
| | 708 | |
|---|
| | 709 | # False/True |
|---|
| | 710 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 711 | (test, method, quote(str({'city': [0, False], 'street': [1, True]})))) |
|---|
| | 712 | self.assert_order(2, 5, 6, 11, 4, 7, 8, 14, 15, 16) |
|---|
| | 713 | Spy.assert_ok(self.body, 'ordering', {'city': [0, False], 'street': [1, True]}) |
|---|
| | 714 | |
|---|
| | 715 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 716 | (test, method, quote(str({'city': [0, False], 'street': [1, True]})))) |
|---|
| | 717 | self.assert_order(3, 9, 10, 12, 13, 1) |
|---|
| | 718 | Spy.assert_ok(self.body, 'ordering', {'city': [0, False], 'street': [1, True]}) |
|---|
| | 719 | |
|---|
| | 720 | # False/False |
|---|
| | 721 | self.request("/%s/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| | 722 | (test, method, quote(str({'city': [0, False], 'street': [1, False]})))) |
|---|
| | 723 | self.assert_order(11, 6, 5, 2, 15, 14, 8, 7, 4, 1) |
|---|
| | 724 | Spy.assert_ok(self.body, 'ordering', {'city': [0, False], 'street': [1, False]}) |
|---|
| | 725 | |
|---|
| | 726 | self.request("/%s/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| | 727 | (test, method, quote(str({'city': [0, False], 'street': [1, False]})))) |
|---|
| | 728 | self.assert_order(13, 12, 10, 9, 3, 16) |
|---|
| | 729 | Spy.assert_ok(self.body, 'ordering', {'city': [0, False], 'street': [1, False]}) |
|---|
| | 730 | |
|---|
| | 731 | def test_default_compound_ordering_1(self): |
|---|
| | 732 | # True/True |
|---|
| 605 | | self.request("/basic/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| 606 | | (method, quote(str({'street': [0, True]})))) |
|---|
| 607 | | self.assert_order(16, 2, 3, 4, 5, 6, 7, 8, 9, 10) |
|---|
| 608 | | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| 609 | | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| 610 | | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| 611 | | Spy.assert_ok(self.body, 'ordering', {'street': [0, True]}) |
|---|
| 612 | | |
|---|
| 613 | | self.request("/basic/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| 614 | | (method, quote(str({'street': [0, True]})))) |
|---|
| 615 | | self.assert_order(11, 12, 13, 14, 15, 1) |
|---|
| 616 | | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| 617 | | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| 618 | | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| 619 | | Spy.assert_ok(self.body, 'ordering', {'street': [0, True]}) |
|---|
| 620 | | |
|---|
| 621 | | def test_default_reversed(self): |
|---|
| 622 | | for method in "Q", "SR", "SO": |
|---|
| 623 | | self.request("/reversed/?method=%s" % method) |
|---|
| 624 | | self.assert_order(16, 15, 14, 13, 12, 11, 10, 9, 8, 7) |
|---|
| 625 | | Spy.assert_ok(self.body, 'current_page', 1) |
|---|
| 626 | | Spy.assert_ok(self.body, 'first_item', 1) |
|---|
| 627 | | Spy.assert_ok(self.body, 'last_item', 10) |
|---|
| 628 | | Spy.assert_ok(self.body, 'ordering', {'id': [0, False]}) |
|---|
| 629 | | |
|---|
| 630 | | self.request("/reversed/?method=%s&data_tgp_no=2" % method) |
|---|
| 631 | | self.assert_order(6, 5, 4, 3, 2, 1) |
|---|
| 632 | | Spy.assert_ok(self.body, 'current_page', 2) |
|---|
| 633 | | Spy.assert_ok(self.body, 'first_item', 11) |
|---|
| 634 | | Spy.assert_ok(self.body, 'last_item', 16) |
|---|
| 635 | | Spy.assert_ok(self.body, 'ordering', {'id': [0, False]}) |
|---|
| 636 | | |
|---|
| 637 | | def test_reverse_ordering(self): |
|---|
| 638 | | for method in "Q", "SR", "SO": |
|---|
| 639 | | self.request("/basic/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| 640 | | (method, quote(str({'street': [0, False]})))) |
|---|
| 641 | | self.assert_order(1, 15, 14, 13, 12, 11, 10, 9, 8, 7) |
|---|
| 642 | | Spy.assert_ok(self.body, 'ordering', {'street': [0, False]}) |
|---|
| 643 | | |
|---|
| 644 | | self.request("/basic/?method=%s&tg_paginate_no=2&tg_paginate_ordering=%s" % \ |
|---|
| 645 | | (method, quote(str({'street': [0, False]})))) |
|---|
| 646 | | self.assert_order(6, 5, 4, 3, 2, 16) |
|---|
| 647 | | Spy.assert_ok(self.body, 'ordering', {'street': [0, False]}) |
|---|
| 648 | | |
|---|
| 649 | | def test_compound_ordering(self): |
|---|
| 650 | | for method in "Q", "SR", "SO": |
|---|
| 651 | | # True/True |
|---|
| 652 | | self.request("/basic/?method=%s&tg_paginate_ordering=%s" % \ |
|---|
| 653 | | (method, quote(str({'city': [0, True], 'street': [1, True]})))) |
|---|
| | 734 | self.request("/default_compound_ordering1/?method=%s" % method) |
|---|