|
12 | 12 | get_current_month,
|
13 | 13 | current_datetime,
|
14 | 14 | current_datetime_str,
|
| 15 | + get_date_range_of_month, |
| 16 | + datetime_str, |
15 | 17 | )
|
16 | 18 | from utils import worked_time
|
17 | 19 |
|
@@ -581,35 +583,121 @@ def test_create_with_valid_uuid_format_should_return_created(
|
581 | 583 |
|
582 | 584 |
|
583 | 585 | @pytest.mark.parametrize(
|
584 |
| - 'url,month,year', |
| 586 | + 'url', |
585 | 587 | [
|
586 |
| - ('/time-entries?month=4&year=2020', 4, 2020), |
587 |
| - ('/time-entries?month=4', 4, get_current_year()), |
588 |
| - ('/time-entries', get_current_month(), get_current_year()), |
| 588 | + ( |
| 589 | + '/time-entries?start_date=2020-04-01T00:00:00&end_date=2020-04-30T23:00:00' |
| 590 | + ), |
| 591 | + ('/time-entries?month=4&year=2020'), |
| 592 | + ('/time-entries?month=4'), |
| 593 | + ('/time-entries?year=2020'), |
| 594 | + ('/time-entries'), |
589 | 595 | ],
|
590 | 596 | )
|
591 |
| -def test_find_all_is_called_with_generated_dates( |
| 597 | +def test_get_all_passes_date_range_built_from_params_to_find_all( |
| 598 | + client: FlaskClient, valid_header: dict, url: str, time_entries_dao |
| 599 | +): |
| 600 | + time_entries_dao.repository.find_all = Mock(return_value=[]) |
| 601 | + |
| 602 | + response = client.get(url, headers=valid_header) |
| 603 | + |
| 604 | + time_entries_dao.repository.find_all.assert_called_once() |
| 605 | + _, kwargs = time_entries_dao.repository.find_all.call_args |
| 606 | + assert 'date_range' in kwargs |
| 607 | + assert 'start_date' in kwargs['date_range'] |
| 608 | + assert 'end_date' in kwargs['date_range'] |
| 609 | + |
| 610 | + |
| 611 | +@pytest.mark.parametrize( |
| 612 | + 'url,start_date,end_date', |
| 613 | + [ |
| 614 | + ( |
| 615 | + '/time-entries?month=4&year=2020', |
| 616 | + '2020-04-01T05:00:00+00:00', |
| 617 | + '2020-05-01T04:59:59.999999+00:00', |
| 618 | + ), |
| 619 | + ( |
| 620 | + '/time-entries?start_date=2020-04-01T00:00:00&end_date=2020-04-30T23:00:00', |
| 621 | + '2020-04-01T05:00:00+00:00', |
| 622 | + '2020-05-01T04:00:00+00:00', |
| 623 | + ), |
| 624 | + ], |
| 625 | +) |
| 626 | +def test_get_all_passes_date_range_to_find_all_with_default_tz_offset( |
592 | 627 | client: FlaskClient,
|
593 |
| - mocker: MockFixture, |
594 | 628 | valid_header: dict,
|
595 |
| - owner_id: str, |
| 629 | + time_entries_dao, |
596 | 630 | url: str,
|
597 |
| - month: int, |
598 |
| - year: int, |
| 631 | + start_date: str, |
| 632 | + end_date: str, |
599 | 633 | ):
|
600 |
| - from time_tracker_api.time_entries.time_entries_namespace import ( |
601 |
| - time_entries_dao, |
602 |
| - ) |
| 634 | + time_entries_dao.repository.find_all = Mock(return_value=[]) |
603 | 635 |
|
604 |
| - dao_get_all_mock = mocker.patch.object( |
605 |
| - time_entries_dao, 'get_all', return_value=[] |
606 |
| - ) |
| 636 | + response = client.get(url, headers=valid_header) |
607 | 637 |
|
608 |
| - response = client.get(url, headers=valid_header, follow_redirects=True) |
| 638 | + time_entries_dao.repository.find_all.assert_called_once() |
| 639 | + _, kwargs = time_entries_dao.repository.find_all.call_args |
| 640 | + assert 'date_range' in kwargs |
| 641 | + assert 'start_date' in kwargs['date_range'] |
| 642 | + assert 'end_date' in kwargs['date_range'] |
| 643 | + assert kwargs['date_range']['start_date'] == start_date |
| 644 | + assert kwargs['date_range']['end_date'] == end_date |
609 | 645 |
|
610 |
| - assert HTTPStatus.OK == response.status_code |
611 |
| - assert json.loads(response.data) is not None |
612 |
| - dao_get_all_mock.assert_called_once() |
| 646 | + |
| 647 | +@pytest.mark.parametrize( |
| 648 | + 'url,start_date,end_date', |
| 649 | + [ |
| 650 | + ( |
| 651 | + '/time-entries?month=4&year=2020&timezone_offset=300', |
| 652 | + '2020-04-01T05:00:00+00:00', |
| 653 | + '2020-05-01T04:59:59.999999+00:00', |
| 654 | + ), |
| 655 | + ( |
| 656 | + '/time-entries?start_date=2020-04-01T00:00:00&end_date=2020-04-30T23:00:00&timezone_offset=300', |
| 657 | + '2020-04-01T05:00:00+00:00', |
| 658 | + '2020-05-01T04:00:00+00:00', |
| 659 | + ), |
| 660 | + ( |
| 661 | + '/time-entries?month=4&year=2020&timezone_offset=-120', |
| 662 | + '2020-03-31T22:00:00+00:00', |
| 663 | + '2020-04-30T21:59:59.999999+00:00', |
| 664 | + ), |
| 665 | + ( |
| 666 | + '/time-entries?start_date=2020-04-01T00:00:00&end_date=2020-04-30T23:00:00&timezone_offset=-120', |
| 667 | + '2020-03-31T22:00:00+00:00', |
| 668 | + '2020-04-30T21:00:00+00:00', |
| 669 | + ), |
| 670 | + ( |
| 671 | + '/time-entries?month=4&year=2020&timezone_offset=420', |
| 672 | + '2020-04-01T07:00:00+00:00', |
| 673 | + '2020-05-01T06:59:59.999999+00:00', |
| 674 | + ), |
| 675 | + ( |
| 676 | + '/time-entries?start_date=2020-04-01T00:00:00&end_date=2020-04-30T23:00:00&timezone_offset=420', |
| 677 | + '2020-04-01T07:00:00+00:00', |
| 678 | + '2020-05-01T06:00:00+00:00', |
| 679 | + ), |
| 680 | + ], |
| 681 | +) |
| 682 | +def test_get_all_passes_date_range_to_find_all_with_given_tz_offset( |
| 683 | + client: FlaskClient, |
| 684 | + valid_header: dict, |
| 685 | + time_entries_dao, |
| 686 | + url: str, |
| 687 | + start_date: str, |
| 688 | + end_date: str, |
| 689 | +): |
| 690 | + time_entries_dao.repository.find_all = Mock(return_value=[]) |
| 691 | + |
| 692 | + response = client.get(url, headers=valid_header) |
| 693 | + |
| 694 | + time_entries_dao.repository.find_all.assert_called_once() |
| 695 | + _, kwargs = time_entries_dao.repository.find_all.call_args |
| 696 | + assert 'date_range' in kwargs |
| 697 | + assert 'start_date' in kwargs['date_range'] |
| 698 | + assert 'end_date' in kwargs['date_range'] |
| 699 | + assert kwargs['date_range']['start_date'] == start_date |
| 700 | + assert kwargs['date_range']['end_date'] == end_date |
613 | 701 |
|
614 | 702 |
|
615 | 703 | def test_summary_is_called_with_date_range_from_worked_time_module(
|
@@ -678,6 +766,6 @@ def test_paginated_sends_max_count_and_offset_on_call_to_repository(
|
678 | 766 |
|
679 | 767 | time_entries_dao.repository.find_all.assert_called_once()
|
680 | 768 |
|
681 |
| - args, kwargs = time_entries_dao.repository.find_all.call_args |
| 769 | + _, kwargs = time_entries_dao.repository.find_all.call_args |
682 | 770 | assert 'max_count' in kwargs and kwargs['max_count'] is not None
|
683 | 771 | assert 'offset' in kwargs and kwargs['offset'] is not None
|
0 commit comments