django-eav2/tests/test_misc_models.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

67 lines
2.2 KiB
Python
Raw Normal View History

import pytest
2010-09-27 13:28:52 +00:00
from django.test import TestCase
import eav
2021-06-17 23:38:46 +00:00
from eav.models import Attribute, EnumGroup, EnumValue, Value
2021-07-04 15:59:24 +00:00
from test_project.models import Patient
2010-09-27 13:28:52 +00:00
@pytest.fixture
def enumgroup(db):
"""Sample `EnumGroup` object for testing."""
test_group = EnumGroup.objects.create(name='Yes / No')
value_yes = EnumValue.objects.create(value='Yes')
value_no = EnumValue.objects.create(value='No')
test_group.values.add(value_yes)
test_group.values.add(value_no)
return test_group
def test_enumgroup_display(enumgroup):
"""Test repr() and str() of EnumGroup."""
assert f'<EnumGroup {enumgroup.name}>' == repr(enumgroup)
assert str(enumgroup) == str(enumgroup.name)
def test_enumvalue_display(enumgroup):
"""Test repr() and str() of EnumValue."""
test_value = enumgroup.values.first()
assert f'<EnumValue {test_value.value}>' == repr(test_value)
assert str(test_value) == test_value.value
2010-09-27 13:28:52 +00:00
class MiscModels(TestCase):
"""Miscellaneous tests on models."""
2010-09-27 13:28:52 +00:00
def test_attribute_help_text(self):
desc = 'Patient Age'
2021-06-17 23:38:46 +00:00
a = Attribute.objects.create(
name='age', description=desc, datatype=Attribute.TYPE_INT,
2021-06-17 23:38:46 +00:00
)
2010-09-27 13:28:52 +00:00
self.assertEqual(a.help_text, desc)
def test_setting_to_none_deletes_value(self):
eav.register(Patient)
Attribute.objects.create(name='age', datatype=Attribute.TYPE_INT)
p = Patient.objects.create(name='Bob', eav__age=5)
self.assertEqual(Value.objects.count(), 1)
p.eav.age = None
p.save()
self.assertEqual(Value.objects.count(), 0)
def test_string_enum_value_assignment(self):
yes = EnumValue.objects.create(value='yes')
no = EnumValue.objects.create(value='no')
ynu = EnumGroup.objects.create(name='Yes / No / Unknown')
ynu.values.add(yes)
ynu.values.add(no)
2021-06-17 23:38:46 +00:00
Attribute.objects.create(
name='is_patient', datatype=Attribute.TYPE_ENUM, enum_group=ynu,
2021-06-17 23:38:46 +00:00
)
eav.register(Patient)
p = Patient.objects.create(name='Joe')
p.eav.is_patient = 'yes'
p.save()
p = Patient.objects.get(name='Joe') # get from DB again
self.assertEqual(p.eav.is_patient, yes)