from django.test import TestCase import eav from eav.models import Attribute, EnumGroup, EnumValue, Value from test_project.models import Patient class ModelTest(TestCase): def setUp(self): eav.register(Patient) Attribute.objects.create(name="age", datatype=Attribute.TYPE_INT) Attribute.objects.create(name="height", datatype=Attribute.TYPE_FLOAT) Attribute.objects.create(name="weight", datatype=Attribute.TYPE_FLOAT) Attribute.objects.create(name="color", datatype=Attribute.TYPE_TEXT) EnumGroup.objects.create(name="Yes / No") EnumValue.objects.create(value="yes") EnumValue.objects.create(value="no") EnumValue.objects.create(value="unknown") def test_attr_natural_keys(self): attr = Attribute.objects.get(name="age") attr_natural_key = attr.natural_key() attr_retrieved_model = Attribute.objects.get_by_natural_key(*attr_natural_key) self.assertEqual(attr_retrieved_model, attr) def test_value_natural_keys(self): p = Patient.objects.create(name="Jon") p.eav.age = 5 p.save() val = p.eav_values.first() value_natural_key = val.natural_key() value_retrieved_model = Value.objects.get_by_natural_key(*value_natural_key) self.assertEqual(value_retrieved_model, val) def test_enum_group_natural_keys(self): enum_group = EnumGroup.objects.first() enum_group_natural_key = enum_group.natural_key() enum_group_retrieved_model = EnumGroup.objects.get_by_natural_key( *enum_group_natural_key, ) self.assertEqual(enum_group_retrieved_model, enum_group) def test_enum_value_natural_keys(self): enum_value = EnumValue.objects.first() enum_value_natural_key = enum_value.natural_key() enum_value_retrieved_model = EnumValue.objects.get_by_natural_key( *enum_value_natural_key, ) self.assertEqual(enum_value_retrieved_model, enum_value)