Skip to content

Commit 1e2e276

Browse files
committed
Adapt tests
1 parent 780602d commit 1e2e276

File tree

1 file changed

+117
-4
lines changed

1 file changed

+117
-4
lines changed

app/tests/custom_fields/test_custom_field_base_model.py

Lines changed: 117 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ def test_custom_field_base_model_set_choice_value(self) -> None:
244244
field_type=CustomField.FIELD_TYPES.CHAR,
245245
choice_field=True,
246246
)
247-
choice_1 = CustomValueFactory(field=field, label="Choice 1", value="choice_1")
247+
choice_1: CustomValue = CustomValueFactory(field=field, label="Choice 1", value="choice_1") # type: ignore
248248

249249
# we need to annotate the custom_field_keys manually or to fetch the person with the queryset again,
250250
# because we created a new field
@@ -277,9 +277,9 @@ def test_custom_field_base_model_set_multiple_choice_value(
277277
choice_field=True,
278278
multiple=True,
279279
)
280-
choice_1 = CustomValueFactory(field=field, value="2000-01-01")
281-
choice_2 = CustomValueFactory(field=field, value="2001-01-01")
282-
choice_3 = CustomValueFactory(field=field, value="2002-01-01")
280+
choice_1: CustomValue = CustomValueFactory(field=field, value="2000-01-01") # type: ignore
281+
choice_2: CustomValue = CustomValueFactory(field=field, value="2001-01-01") # type: ignore
282+
choice_3: CustomValue = CustomValueFactory(field=field, value="2002-01-01") # type: ignore
283283

284284
# we need to annotate the custom_field_keys manually or to fetch the person with the queryset again,
285285
# because we created a new field
@@ -307,3 +307,116 @@ def test_custom_field_base_model_set_multiple_choice_value(
307307
],
308308
Person.objects.first().multiple_choice_value,
309309
)
310+
311+
def test_custom_field_base_model_remove_text_value(self) -> None:
312+
CustomFieldFactory(
313+
identifier="text_value",
314+
content_type=self.person_ct,
315+
field_type=CustomField.FIELD_TYPES.TEXT,
316+
)
317+
318+
# we need to annotate the custom_field_keys manually or to fetch the person with the queryset again,
319+
# because we created a new field
320+
self.person.refresh_with_custom_fields()
321+
322+
self.assertEqual(0, CustomValue.objects.count())
323+
324+
self.person.text_value = "Text value"
325+
self.person.save()
326+
327+
self.assertEqual(1, CustomValue.objects.count())
328+
self.assertEqual("Text value", self.person.text_value)
329+
330+
self.person.text_value = None
331+
self.person.save()
332+
333+
self.assertEqual(0, CustomValue.objects.count())
334+
self.assertIsNone(self.person.text_value)
335+
336+
def test_custom_field_base_model_remove_choice_value(self) -> None:
337+
field = CustomFieldFactory(
338+
identifier="choice_value",
339+
content_type=self.person_ct,
340+
field_type=CustomField.FIELD_TYPES.CHAR,
341+
choice_field=True,
342+
)
343+
344+
# we need to annotate the custom_field_keys manually or to fetch the person with the queryset again,
345+
# because we created a new field
346+
self.person.refresh_with_custom_fields()
347+
348+
choice_1: CustomValue = CustomValueFactory(field=field, label="Choice 1", value="choice_1") # type: ignore
349+
self.person.choice_value = choice_1
350+
self.person.save()
351+
352+
self.assertEqual(1, CustomValue.objects.count())
353+
self.assertEqual(1, self.person.custom_values.count())
354+
self.assertEqual(choice_1, self.person.choice_value)
355+
356+
self.person.choice_value = None
357+
self.person.save()
358+
359+
self.assertEqual(1, CustomValue.objects.count())
360+
self.assertEqual(0, self.person.custom_values.count())
361+
self.assertIsNone(self.person.choice_value)
362+
363+
def test_custom_field_base_model_remove_multiple_choice_value(
364+
self,
365+
) -> None:
366+
field = CustomFieldFactory(
367+
identifier="multiple_choice_value",
368+
content_type=self.person_ct,
369+
field_type=CustomField.FIELD_TYPES.DATE,
370+
choice_field=True,
371+
multiple=True,
372+
)
373+
choice_1: CustomValue = CustomValueFactory(field=field, value="2000-01-01") # type: ignore
374+
CustomValueFactory(field=field, value="2001-01-01")
375+
choice_3: CustomValue = CustomValueFactory(field=field, value="2002-01-01") # type: ignore
376+
377+
# we need to annotate the custom_field_keys manually or to fetch the person with the queryset again,
378+
# because we created a new field
379+
self.person.refresh_with_custom_fields()
380+
381+
self.person.multiple_choice_value = [choice_1, choice_3]
382+
self.person.save()
383+
384+
self.assertEqual(3, CustomValue.objects.count())
385+
self.assertEqual(2, self.person.custom_values.count())
386+
self.assertEqual(
387+
[
388+
{"id": choice_1.id, "label": None, "value": "2000-01-01"},
389+
{"id": choice_3.id, "label": None, "value": "2002-01-01"},
390+
],
391+
Person.objects.first().multiple_choice_value,
392+
)
393+
394+
self.person.multiple_choice_value = None
395+
self.person.save()
396+
397+
self.assertEqual(3, CustomValue.objects.count())
398+
self.assertEqual(0, self.person.custom_values.count())
399+
self.assertIsNone(self.person.multiple_choice_value)
400+
401+
def test_custom_field_base_model_set_value_with_set_custom_attr(self) -> None:
402+
CustomFieldFactory(
403+
identifier="char_value",
404+
content_type=self.person_ct,
405+
field_type=CustomField.FIELD_TYPES.CHAR,
406+
)
407+
408+
self.assertEqual(0, CustomValue.objects.count())
409+
self.assertEqual(0, len(self.person._custom_values_to_save))
410+
411+
self.person.set_custom_attr("char_value", "Char value")
412+
413+
self.assertEqual(0, CustomValue.objects.count())
414+
self.assertEqual(1, len(self.person._custom_values_to_save))
415+
self.person.save()
416+
417+
self.assertEqual(1, CustomValue.objects.count())
418+
self.assertEqual(0, len(self.person._custom_values_to_save))
419+
420+
self.assertEqual("Char value", self.person.char_value)
421+
self.assertEqual("Char value", Person.objects.first().char_value)
422+
self.assertEqual("Char value", CustomValue.objects.first().value)

0 commit comments

Comments
 (0)