jcloude/press/tests/test_scheduled_auto_updates.py
2025-12-23 21:34:08 +08:00

97 lines
2.8 KiB
Python

from unittest import TestCase
import jingrow
from jcloude.jcloude.pagetype.site_update.scheduled_auto_updates import (
should_update_trigger_for_daily,
should_update_trigger_for_monthly,
should_update_trigger_for_weekly,
)
from jcloude.tests.test_data.auto_update_fixtures import (
TEST_DATA_DAILY_FALSE,
TEST_DATA_DAILY_TRUE,
TEST_DATA_MONTHLY_FALSE,
TEST_DATA_MONTHLY_MONTH_END,
TEST_DATA_MONTHLY_TRUE,
TEST_DATA_WEEKLY_FALSE,
TEST_DATA_WEEKLY_TRUE,
)
class TestScheduledAutoUpdates(TestCase):
def test_should_update_daily_positive(self):
for obj in TEST_DATA_DAILY_TRUE:
self.assertTrue(
should_update_trigger_for_daily(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_update_daily_negative(self):
for obj in TEST_DATA_DAILY_FALSE:
self.assertFalse(
should_update_trigger_for_daily(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_trigger_weekly_positive(self):
for obj in TEST_DATA_WEEKLY_TRUE:
self.assertTrue(
should_update_trigger_for_weekly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_trigger_weekly_negative(self):
for obj in TEST_DATA_WEEKLY_FALSE:
self.assertFalse(
should_update_trigger_for_weekly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_trigger_monthly_positive(self):
for obj in TEST_DATA_MONTHLY_TRUE:
self.assertTrue(
should_update_trigger_for_monthly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_trigger_monthly_negative(self):
for obj in TEST_DATA_MONTHLY_FALSE:
self.assertFalse(
should_update_trigger_for_monthly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_should_trigger_month_end(self):
for obj in TEST_DATA_MONTHLY_MONTH_END:
self.assertTrue(
should_update_trigger_for_monthly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def test_true_last_triggered_is_none(self):
TEST_DATA_DAILY_TRUE_WITH_NONE = list(
map(set_last_triggered_to_none, TEST_DATA_DAILY_TRUE)
)
TEST_DATA_WEEKLY_TRUE_WITH_NONE = list(
map(set_last_triggered_to_none, TEST_DATA_WEEKLY_TRUE)
)
TEST_DATA_MONTHLY_TRUE_WITH_NONE = list(
map(set_last_triggered_to_none, TEST_DATA_MONTHLY_TRUE)
)
for obj in TEST_DATA_DAILY_TRUE_WITH_NONE:
self.assertTrue(
should_update_trigger_for_daily(jingrow._dict(obj), obj["current_datetime"]), obj
)
for obj in TEST_DATA_WEEKLY_TRUE_WITH_NONE:
self.assertTrue(
should_update_trigger_for_weekly(jingrow._dict(obj), obj["current_datetime"]), obj
)
for obj in TEST_DATA_MONTHLY_TRUE_WITH_NONE:
self.assertTrue(
should_update_trigger_for_monthly(jingrow._dict(obj), obj["current_datetime"]), obj
)
def set_last_triggered_to_none(obj):
obj_copy = dict(obj)
obj_copy["auto_update_last_triggered_on"] = None
return obj_copy