Skip to content

Commit f53fdd7

Browse files
committed
add tests
1 parent ffa0a27 commit f53fdd7

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

tests/extras/testutils/factories/smart_fields.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ def fields(self, create, extracted, **kwargs):
5959
if extracted:
6060
fs = FieldsetFactory()
6161
for i in extracted:
62-
FlexFieldFactory(fieldset=fs, name=i)
62+
if isinstance(i, str):
63+
FlexFieldFactory(fieldset=fs, name=i)
64+
elif isinstance(i, (tuple, list)):
65+
df = FieldDefinitionFactory(field_type=i[1])
66+
FlexFieldFactory(fieldset=fs, name=i[0], definition=df)
67+
6368
self.fieldsets.add(fs)
6469

6570

tests/workspace/actions/test_ws_validate.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import freezegun
55
import pytest
66
from django.urls import reverse
7+
78
from testutils.utils import select_office
89

910
from country_workspace.state import state

tests/workspace/test_ws_household.py

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
from typing import TYPE_CHECKING
22

33
import pytest
4+
from django import forms
45
from django.urls import reverse
6+
from strategy_field.utils import fqn
7+
from testutils.factories import DataCheckerFactory
58
from testutils.perms import user_grant_permissions
69
from testutils.utils import select_office
710

811
from country_workspace.state import state
912

1013
if TYPE_CHECKING:
1114
from django_webtest.pytest_plugin import MixinWithInstanceVariables
15+
from hope_flex_fields.models import DataChecker
1216
from responses import RequestsMock
1317
from testutils.types import CWTestApp
1418

@@ -100,16 +104,6 @@ def test_hh_validate_single(app: "CWTestApp", household: "CountryHousehold") ->
100104
assert res.status_code == 200
101105

102106

103-
def test_hh_validate_program(app: "CWTestApp", household: "CountryHousehold") -> None:
104-
with select_office(app, household.country_office, household.program):
105-
with user_grant_permissions(app._user, ["workspaces.change_countryhousehold"], household.program):
106-
url = reverse("workspace:workspaces_countryhousehold_changelist")
107-
res = app.get(url)
108-
res.click("Validate Programme").follow()
109-
household.refresh_from_db()
110-
assert household.last_checked
111-
112-
113107
def test_hh_update_single(app: "CWTestApp", household: "CountryHousehold") -> None:
114108
with select_office(app, household.country_office, household.program):
115109
with user_grant_permissions(app._user, ["workspaces.change_countryhousehold"], household.program):
@@ -118,7 +112,7 @@ def test_hh_update_single(app: "CWTestApp", household: "CountryHousehold") -> No
118112
assert res.status_code == 200
119113

120114

121-
def test_validate_program(app: "CWTestApp", individual: "CountryIndividual"):
115+
def test_hh_validate_program(app: "CWTestApp", individual: "CountryIndividual"):
122116
program: "CountryProgram" = individual.program
123117
assert not individual.last_checked
124118

@@ -130,3 +124,28 @@ def test_validate_program(app: "CWTestApp", individual: "CountryIndividual"):
130124
individual.refresh_from_db()
131125
assert individual.household.last_checked
132126
assert individual.last_checked
127+
128+
129+
@pytest.fixture
130+
def hh(household) -> "CountryHousehold":
131+
dc: DataChecker = DataCheckerFactory(fields=[("address", fqn(forms.CharField))])
132+
fld = dc.fieldsets.first().fields.get(name="address")
133+
fld.attrs["required"] = True
134+
fld.save()
135+
household.flex_fields["address"] = None
136+
household.save()
137+
138+
household.program.household_checker = dc
139+
household.program.save()
140+
141+
return household
142+
143+
144+
def test_hh_validate(app: "CWTestApp", hh: "CountryHousehold"):
145+
assert not hh.validate_with_checker()
146+
assert hh.errors == {"address": ["This field is required."]}
147+
148+
hh.flex_fields["address"] = "abc"
149+
hh.save()
150+
assert hh.validate_with_checker()
151+
assert hh.errors == {}

0 commit comments

Comments
 (0)