|
4 | 4 |
|
5 | 5 | from application.common.dos import ( |
6 | 6 | DoSService, |
| 7 | + db_big_rows_to_spec_open_times, |
| 8 | + db_big_rows_to_std_open_times, |
7 | 9 | db_rows_to_spec_open_times, |
8 | 10 | db_rows_to_std_open_times, |
9 | 11 | get_dos_locations, |
@@ -584,6 +586,91 @@ def test_db_rows_to_spec_open_times() -> None: |
584 | 586 | assert spec_open_times == expected_spec_open_times |
585 | 587 |
|
586 | 588 |
|
| 589 | +def test_db_big_rows_to_spec_open_times() -> None: |
| 590 | + db_rows = [ |
| 591 | + { |
| 592 | + "serviceid": 1, |
| 593 | + "date": date(2019, 5, 6), |
| 594 | + "date_starttime": time(8, 0, 0), |
| 595 | + "date_endtime": time(20, 0, 0), |
| 596 | + "isclosed": False, |
| 597 | + "ssot_id": 123, |
| 598 | + }, |
| 599 | + { |
| 600 | + "serviceid": 1, |
| 601 | + "date": date(2019, 5, 6), |
| 602 | + "date_starttime": time(21, 0, 0), |
| 603 | + "date_endtime": time(22, 0, 0), |
| 604 | + "isclosed": False, |
| 605 | + "ssot_id": 324, |
| 606 | + }, |
| 607 | + { |
| 608 | + "serviceid": 1, |
| 609 | + "date": date(2019, 5, 27), |
| 610 | + "date_starttime": time(8, 0, 0), |
| 611 | + "date_endtime": time(20, 0, 0), |
| 612 | + "isclosed": False, |
| 613 | + "ssot_id": 768, |
| 614 | + }, |
| 615 | + { |
| 616 | + "serviceid": 1, |
| 617 | + "date": date(2019, 8, 26), |
| 618 | + "date_starttime": time(8, 0, 0), |
| 619 | + "date_endtime": time(20, 0, 0), |
| 620 | + "isclosed": False, |
| 621 | + "ssot_id": 987, |
| 622 | + }, |
| 623 | + { |
| 624 | + "serviceid": 1, |
| 625 | + "date": date(2019, 9, 20), |
| 626 | + "date_starttime": None, |
| 627 | + "date_endtime": None, |
| 628 | + "isclosed": True, |
| 629 | + "ssot_id": 567, |
| 630 | + }, |
| 631 | + { |
| 632 | + "serviceid": 1, |
| 633 | + "date": date(2020, 5, 6), |
| 634 | + "date_starttime": time(6, 0, 0), |
| 635 | + "date_endtime": time(7, 0, 0), |
| 636 | + "isclosed": False, |
| 637 | + "ssot_id": 876, |
| 638 | + }, |
| 639 | + { |
| 640 | + "serviceid": 1, |
| 641 | + "date": date(2020, 5, 6), |
| 642 | + "date_starttime": time(6, 0, 0), |
| 643 | + "date_endtime": time(7, 0, 0), |
| 644 | + "isclosed": False, |
| 645 | + "ssot_id": 876, |
| 646 | + }, |
| 647 | + { |
| 648 | + "serviceid": 1, |
| 649 | + "date": None, |
| 650 | + "date_starttime": None, |
| 651 | + "date_endtime": None, |
| 652 | + "isclosed": None, |
| 653 | + "ssot_id": None, |
| 654 | + }, |
| 655 | + ] |
| 656 | + |
| 657 | + spec_open_times = db_big_rows_to_spec_open_times(db_rows) |
| 658 | + |
| 659 | + expected_spec_open_times = [ |
| 660 | + SpecifiedOpeningTime( |
| 661 | + [OpenPeriod.from_string_times("08:00", "20:00"), OpenPeriod.from_string_times("21:00", "22:00")], |
| 662 | + date(2019, 5, 6), |
| 663 | + True, |
| 664 | + ), |
| 665 | + SpecifiedOpeningTime([OpenPeriod.from_string_times("08:00", "20:00")], date(2019, 5, 27), True), |
| 666 | + SpecifiedOpeningTime([OpenPeriod.from_string_times("08:00", "20:00")], date(2019, 8, 26), True), |
| 667 | + SpecifiedOpeningTime([], date(2019, 9, 20), False), |
| 668 | + SpecifiedOpeningTime([OpenPeriod.from_string_times("06:00", "07:00")], date(2020, 5, 6), True), |
| 669 | + ] |
| 670 | + |
| 671 | + assert spec_open_times == expected_spec_open_times |
| 672 | + |
| 673 | + |
587 | 674 | def test_db_rows_to_std_open_time() -> None: |
588 | 675 | db_rows = [ |
589 | 676 | {"serviceid": 1, "dayid": 0, "name": "Monday", "starttime": time(8, 0, 0), "endtime": time(17, 0, 0)}, |
@@ -611,6 +698,90 @@ def test_db_rows_to_std_open_time() -> None: |
611 | 698 | assert actual_std_open_times == expected_std_open_times |
612 | 699 |
|
613 | 700 |
|
| 701 | +def test_db_big_rows_to_std_open_time() -> None: |
| 702 | + db_rows = [ |
| 703 | + { |
| 704 | + "serviceid": 1, |
| 705 | + "dayid": 0, |
| 706 | + "name": "Monday", |
| 707 | + "day_starttime": time(8, 0, 0), |
| 708 | + "day_endtime": time(17, 0, 0), |
| 709 | + "sdot_id": 230, |
| 710 | + }, |
| 711 | + { |
| 712 | + "serviceid": 1, |
| 713 | + "dayid": 6, |
| 714 | + "name": "Sunday", |
| 715 | + "day_starttime": time(13, 0, 0), |
| 716 | + "day_endtime": time(15, 30, 0), |
| 717 | + "sdot_id": 231, |
| 718 | + }, |
| 719 | + { |
| 720 | + "serviceid": 1, |
| 721 | + "dayid": 1, |
| 722 | + "name": "Tuesday", |
| 723 | + "day_starttime": time(13, 0, 0), |
| 724 | + "day_endtime": time(18, 0, 0), |
| 725 | + "sdot_id": 233, |
| 726 | + }, |
| 727 | + { |
| 728 | + "serviceid": 1, |
| 729 | + "dayid": 4, |
| 730 | + "name": "Friday", |
| 731 | + "day_starttime": time(13, 0, 0), |
| 732 | + "day_endtime": time(15, 30, 0), |
| 733 | + "sdot_id": 232, |
| 734 | + }, |
| 735 | + { |
| 736 | + "serviceid": 1, |
| 737 | + "dayid": 6, |
| 738 | + "name": "Wednesday", |
| 739 | + "day_starttime": time(7, 0, 0), |
| 740 | + "day_endtime": time(15, 30, 0), |
| 741 | + "sdot_id": 234, |
| 742 | + }, |
| 743 | + { |
| 744 | + "serviceid": 1, |
| 745 | + "dayid": 1, |
| 746 | + "name": "Tuesday", |
| 747 | + "day_starttime": time(8, 0, 0), |
| 748 | + "day_endtime": time(12, 0, 0), |
| 749 | + "sdot_id": 287, |
| 750 | + }, |
| 751 | + { |
| 752 | + "serviceid": 1, |
| 753 | + "dayid": 4, |
| 754 | + "name": "Thursday", |
| 755 | + "day_starttime": time(11, 0, 0), |
| 756 | + "day_endtime": time(13, 30, 0), |
| 757 | + "sdot_id": 238, |
| 758 | + }, |
| 759 | + { |
| 760 | + "serviceid": 1, |
| 761 | + "dayid": 4, |
| 762 | + "name": "Thursday", |
| 763 | + "day_starttime": time(11, 0, 0), |
| 764 | + "day_endtime": time(13, 30, 0), |
| 765 | + "sdot_id": 238, |
| 766 | + }, |
| 767 | + ] |
| 768 | + |
| 769 | + expected_std_open_times = StandardOpeningTimes() |
| 770 | + expected_std_open_times.monday = [OpenPeriod.from_string_times("08:00", "17:00")] |
| 771 | + expected_std_open_times.tuesday = [ |
| 772 | + OpenPeriod.from_string_times("08:00", "12:00"), |
| 773 | + OpenPeriod.from_string_times("13:00", "18:00"), |
| 774 | + ] |
| 775 | + expected_std_open_times.wednesday = [OpenPeriod.from_string_times("07:00", "15:30")] |
| 776 | + expected_std_open_times.thursday = [OpenPeriod.from_string_times("11:00", "13:30")] |
| 777 | + expected_std_open_times.friday = [OpenPeriod.from_string_times("13:00", "15:30")] |
| 778 | + expected_std_open_times.sunday = [OpenPeriod.from_string_times("13:00", "15:30")] |
| 779 | + |
| 780 | + actual_std_open_times = db_big_rows_to_std_open_times(db_rows) |
| 781 | + |
| 782 | + assert actual_std_open_times == expected_std_open_times |
| 783 | + |
| 784 | + |
614 | 785 | def get_db_item(odscode: str = "FA9321", name: str = "fake name", id: int = 9999, typeid: int = 13) -> dict: # noqa: A002 |
615 | 786 | return { |
616 | 787 | "id": id, |
|
0 commit comments