from django.test import TestCase from unittest import mock from app.utils import verify_date import datetime # Create your tests here. class StubDate(datetime.datetime): pass class TestApp(TestCase): """Test app utils. Publish time: datetime.datetime(2021, 2, 14, 12, 30) """ @mock.patch('app.utils.datetime.datetime', StubDate) def test_today_before_publish_time(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 12, 8, 0, 0)) date, _ = verify_date('2021-02-12', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 11).date()) @mock.patch('app.utils.datetime.datetime', StubDate) def test_today_after_publish_time(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 12, 13, 0, 0)) date, _ = verify_date('2021-02-14', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 12).date()) @mock.patch('app.utils.datetime.datetime', StubDate) def test_weekend_returns_friday(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 14, 13, 0, 0)) date, _ = verify_date('2021-02-14', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 12).date()) @mock.patch('app.utils.datetime.datetime', StubDate) def test_a_future_date(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 15, 13, 0, 0)) date, _ = verify_date('2021-02-20', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 15).date()) @mock.patch('app.utils.datetime.datetime', StubDate) def test_monday_before_publish_time(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 15, 8, 0, 0)) date, _ = verify_date('2021-02-15', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 12).date())