From 105d753709528d694e8aaef7e84db10da4c79e98 Mon Sep 17 00:00:00 2001 From: Paul Schilling Date: Tue, 18 Jun 2024 10:31:04 +0200 Subject: [PATCH] [#9] Add test for caching forms retrieval --- setup.cfg | 2 ++ tests/test_integration.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/setup.cfg b/setup.cfg index fe0398e..d8754e5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -41,6 +41,7 @@ tests_require = isort black flake8 + time-machine [options.packages.find] include = @@ -56,6 +57,7 @@ tests = isort black flake8 + time-machine pep8 = flake8 coverage = pytest-cov docs = diff --git a/tests/test_integration.py b/tests/test_integration.py index b465e91..5a5d5e3 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,9 +1,11 @@ +import datetime from uuid import UUID from django.forms import modelform_factory from django.test import TestCase import requests_mock +import time_machine from openformsclient.models import Configuration from testapp.models import Page @@ -129,3 +131,21 @@ def test_slug_form_field_blank(self, m): self.assertEqual(Page.objects.count(), 1) self.assertEqual(Page.objects.get().form_slug, "") + + def test_form_retrieval_cache(self, m): + self._prepare_mock(m) + + PageForm = modelform_factory(Page, fields=["form_slug"]) + page_form = PageForm() + + with time_machine.travel(0) as traveller: + list(page_form.fields["form_slug"].choices) + list(page_form.fields["form_slug"].choices) + + self.assertEqual(m.call_count, 1) + + traveller.shift(datetime.timedelta(seconds=60)) + + list(page_form.fields["form_slug"].choices) + + self.assertEqual(m.call_count, 2)