import pytest from datetime import date, datetime, time from pytest_mock import MockFixture from server.utils.common import get_last_date_by_weekday @pytest.mark.parametrize( "weekday,now_date,expected_date", ( (3, date(2023, 11, 17), date(2023, 11, 16)), (3, date(2023, 11, 16), date(2023, 11, 9)), (3, date(2023, 11, 15), date(2023, 11, 9)), (3, date(2023, 11, 14), date(2023, 11, 9)), (3, date(2023, 11, 13), date(2023, 11, 9)), (3, date(2023, 11, 12), date(2023, 11, 9)), (3, date(2023, 11, 11), date(2023, 11, 9)), (3, date(2023, 11, 10), date(2023, 11, 9)), (3, date(2023, 11, 9), date(2023, 11, 2)), ), ) @pytest.mark.noapp async def test_get_last_date_by_weekday(weekday: int, now_date: date, expected_date: date, mocker: MockFixture): datetime_mock = mocker.patch("server.utils.common.datetime") datetime_mock.utcnow.return_value = datetime.combine(now_date, time(12, 11, 53)) result = get_last_date_by_weekday(weekday) assert result == expected_date