Skip to content

Commit

Permalink
test (schedulers): add test for when model.last_run_at is None
Browse files Browse the repository at this point in the history
  • Loading branch information
chentiantian committed Jun 14, 2024
1 parent 8a94a48 commit 158b26e
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions t/unit/test_schedulers.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,54 @@ def test_entry_and_model_last_run_at_with_utc_no_use_tz(self, monkeypatch):
if hasattr(time, "tzset"):
time.tzset()

@override_settings(
USE_TZ=False,
DJANGO_CELERY_BEAT_TZ_AWARE=False
)
@pytest.mark.usefixtures('depends_on_current_app')
@timezone.override('Europe/Berlin')
@pytest.mark.celery(timezone='Europe/Berlin')
def test_entry_and_model_last_run_at_when_model_changed(self, monkeypatch):
old_tz = os.environ.get("TZ")
os.environ["TZ"] = "Europe/Berlin"
if hasattr(time, "tzset"):
time.tzset()
assert self.app.timezone.key == 'Europe/Berlin'
# simulate last_run_at from DB - not TZ aware but localtime
right_now = datetime.utcnow()
# make sure to use fixed date time
monkeypatch.setattr(self.Entry, '_default_now', lambda o: right_now)
m = self.create_model_crontab(
crontab(minute='*/10')
)
m.save()
e = self.Entry(m, app=self.app)
e.save()
m.refresh_from_db()

# The just created model has no value for last_run_at
# so last_run_at should be set to the Entry._default_now()
assert m.last_run_at == e.last_run_at

# If the model has been updated and the entry.last_run_at is None,
# then entry.last_run_at should be set to the value of model.date_changed.
# see #717
m.save()
e2 = self.Entry(m, app=self.app)
e2.save()
m.refresh_from_db()

t1 = m.last_run_at.strftime("%Y-%m-%d %H:%M:%S")
t2 = m.date_changed.strftime("%Y-%m-%d %H:%M:%S")
assert t1 == t2

if old_tz is not None:
os.environ["TZ"] = old_tz
else:
del os.environ["TZ"]
if hasattr(time, "tzset"):
time.tzset()

@override_settings(
USE_TZ=False,
DJANGO_CELERY_BEAT_TZ_AWARE=False,
Expand Down

0 comments on commit 158b26e

Please sign in to comment.