Skip to content

Commit b657560

Browse files
author
patsatsia
committed
Add tests for "invalidate_fieldset_fields_admin_cache" receiver function
1 parent c6e0ee7 commit b657560

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

tests/test_signals.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from unittest.mock import patch
1+
from unittest.mock import patch, MagicMock
22

33
import pytest
44
from hope_flex_fields.models import DataChecker
@@ -13,6 +13,7 @@
1313
from country_workspace.contrib.hope.validators import FullHouseholdValidator
1414
from country_workspace.signals import (
1515
_process_datachecker_change,
16+
invalidate_fieldset_fields_admin_cache,
1617
)
1718
from country_workspace.validators.registry import NoopValidator
1819
from tests.extras.testutils.factories import (
@@ -23,7 +24,7 @@
2324
FieldsetFactory,
2425
)
2526
from tests.extras.testutils.factories.program import BeneficiaryGroupFactory
26-
from tests.extras.testutils.factories.smart_fields import DataCheckerFactory
27+
from tests.extras.testutils.factories.smart_fields import DataCheckerFactory, FlexFieldFactory
2728

2829

2930
@pytest.fixture
@@ -207,3 +208,30 @@ def test_no_invalidation_on_other_field_change(program):
207208
for hh in HouseholdFactory._meta.model.objects.all():
208209
hh.refresh_from_db()
209210
assert hh.errors == {"x": "1"}
211+
212+
213+
def test_invalidate_fieldset_fields_admin_cache_on_flexfield_save():
214+
fieldset = FieldsetFactory.create()
215+
216+
with patch("country_workspace.signals.cache_manager.invalidate_containing") as mocked:
217+
FlexFieldFactory.create(fieldset=fieldset, name="test_field")
218+
mocked.assert_called_once_with(f"adminhope_flex_fieldsfieldset{fieldset.pk}")
219+
220+
221+
def test_invalidate_fieldset_fields_admin_cache_on_flexfield_update():
222+
fieldset = FieldsetFactory.create()
223+
flex_field = FlexFieldFactory.create(fieldset=fieldset, name="test_field")
224+
225+
with patch("country_workspace.signals.cache_manager.invalidate_containing") as mocked:
226+
flex_field.name = "updated_name"
227+
flex_field.save()
228+
mocked.assert_called_once_with(f"adminhope_flex_fieldsfieldset{fieldset.pk}")
229+
230+
231+
def test_invalidate_fieldset_fields_admin_cache_no_fieldset():
232+
instance = MagicMock()
233+
instance.fieldset = None
234+
235+
with patch("country_workspace.signals.cache_manager.invalidate_containing") as mocked:
236+
invalidate_fieldset_fields_admin_cache(sender=MagicMock, instance=instance)
237+
mocked.assert_not_called()

0 commit comments

Comments
 (0)