2010-09-27 13:28:52 +00:00
|
|
|
from django.test import TestCase
|
|
|
|
|
|
2019-06-20 16:14:19 +00:00
|
|
|
from eav.models import EnumGroup, Attribute, Value, EnumValue
|
2010-09-27 13:28:52 +00:00
|
|
|
|
|
|
|
|
import eav
|
|
|
|
|
from .models import Patient
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MiscModels(TestCase):
|
2018-04-06 11:59:51 +00:00
|
|
|
def test_enumgroup_str(self):
|
2010-09-27 13:28:52 +00:00
|
|
|
name = 'Yes / No'
|
|
|
|
|
e = EnumGroup.objects.create(name=name)
|
2018-06-20 12:23:30 +00:00
|
|
|
self.assertEqual('<EnumGroup Yes / No>', str(e))
|
2010-09-27 13:28:52 +00:00
|
|
|
|
|
|
|
|
def test_attribute_help_text(self):
|
|
|
|
|
desc = 'Patient Age'
|
|
|
|
|
a = Attribute.objects.create(name='age', description=desc, datatype=Attribute.TYPE_INT)
|
|
|
|
|
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)
|
2019-06-20 16:14:19 +00:00
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
Attribute.objects.create(name='is_patient', datatype=Attribute.TYPE_ENUM, enum_group=ynu)
|
|
|
|
|
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)
|