diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/metaclass_models2.py b/tests/metaclass_models2.py deleted file mode 100644 index 10245a3..0000000 --- a/tests/metaclass_models2.py +++ /dev/null @@ -1,18 +0,0 @@ -from django.db import models -from eav.models import EAVModelMeta - - -class ExampleMetaclassModel(models.Model): - __metaclass__ = EAVModelMeta - name = models.CharField(max_length=12) - - def __unicode__(self): - return self.name - - -class RegisterTestModel(models.Model): - __metaclass__ = EAVModelMeta - name = models.CharField(max_length=12) - - def __unicode__(self): - return self.name diff --git a/tests/metaclass_models3.py b/tests/metaclass_models3.py deleted file mode 100644 index 3ace3d5..0000000 --- a/tests/metaclass_models3.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.db import models -from eav.models import EAVModelMeta - - -class ExampleMetaclassModel(models.Model, metaclass=EAVModelMeta): - name = models.CharField(max_length=12) - - def __str__(self): - return self.name - - -class RegisterTestModel(models.Model, metaclass=EAVModelMeta): - name = models.CharField(max_length=12) - - def __str__(self): - return self.name diff --git a/tests/models.py b/tests/models.py deleted file mode 100644 index 0375212..0000000 --- a/tests/models.py +++ /dev/null @@ -1,42 +0,0 @@ -from django.db import models -from eav.decorators import register_eav - - -class Patient(models.Model): - name = models.CharField(max_length=12) - example = models.ForeignKey( - 'ExampleModel', null=True, blank=True, on_delete=models.PROTECT) - - def __str__(self): - return self.name - - def __repr__(self): - return self.name - - -class Encounter(models.Model): - num = models.PositiveSmallIntegerField() - patient = models.ForeignKey(Patient, on_delete=models.PROTECT) - - def __str__(self): - return '%s: encounter num %d' % (self.patient, self.num) - - def __repr__(self): - return self.name - - -@register_eav() -class ExampleModel(models.Model): - name = models.CharField(max_length=12) - - def __unicode__(self): - return self.name - - -@register_eav() -class M2MModel(models.Model): - name = models.CharField(max_length=12) - models = models.ManyToManyField(ExampleModel) - - def __unicode__(self): - return self.name diff --git a/tests/attributes.py b/tests/test_attributes.py similarity index 93% rename from tests/attributes.py rename to tests/test_attributes.py index 74674df..5ae3548 100644 --- a/tests/attributes.py +++ b/tests/test_attributes.py @@ -1,18 +1,11 @@ from django.core.exceptions import ValidationError from django.test import TestCase -import sys import eav from eav.exceptions import IllegalAssignmentException from eav.models import Attribute, Value from eav.registry import EavConfig - -from .models import Encounter, Patient - -if sys.version_info[0] > 2: - from .metaclass_models3 import RegisterTestModel -else: - from .metaclass_models2 import RegisterTestModel +from main_app.models import Encounter, Patient, RegisterTestModel class Attributes(TestCase): diff --git a/tests/data_validation.py b/tests/test_data_validation.py similarity index 89% rename from tests/data_validation.py rename to tests/test_data_validation.py index d9a45d7..770ba63 100644 --- a/tests/data_validation.py +++ b/tests/test_data_validation.py @@ -1,17 +1,14 @@ +from django.contrib.auth.models import User +from django.core.exceptions import ValidationError +from django.test import TestCase from django.utils import timezone -from django.test import TestCase -from django.core.exceptions import ValidationError -from django.contrib.auth.models import User - import eav -from eav.models import Attribute, Value, EnumValue, EnumGroup - -from .models import Patient +from eav.models import Attribute, EnumGroup, EnumValue, Value +from main_app.models import Patient class DataValidation(TestCase): - def setUp(self): eav.register(Patient) @@ -32,7 +29,9 @@ class DataValidation(TestCase): p.eav.age = 5 p.save() - Attribute.objects.create(name='Weight', datatype=Attribute.TYPE_INT, required=True) + Attribute.objects.create( + name='Weight', datatype=Attribute.TYPE_INT, required=True + ) p.eav.age = 6 self.assertRaises(ValidationError, p.save) p = Patient.objects.get(name='Bob') @@ -43,10 +42,12 @@ class DataValidation(TestCase): self.assertEqual(p.eav.weight, 23) def test_create_required_field(self): - Attribute.objects.create(name='Weight', datatype=Attribute.TYPE_INT, required=True) - self.assertRaises(ValidationError, - Patient.objects.create, - name='Joe', eav__age=5) + Attribute.objects.create( + name='Weight', datatype=Attribute.TYPE_INT, required=True + ) + self.assertRaises( + ValidationError, Patient.objects.create, name='Joe', eav__age=5 + ) self.assertEqual(Patient.objects.count(), 0) self.assertEqual(Value.objects.count(), 0) @@ -55,9 +56,9 @@ class DataValidation(TestCase): self.assertEqual(Value.objects.count(), 2) def test_validation_error_create(self): - self.assertRaises(ValidationError, - Patient.objects.create, - name='Joe', eav__age='df') + self.assertRaises( + ValidationError, Patient.objects.create, name='Joe', eav__age='df' + ) self.assertEqual(Patient.objects.count(), 0) self.assertEqual(Value.objects.count(), 0) @@ -108,7 +109,7 @@ class DataValidation(TestCase): p.eav.height = 15 p.save() self.assertEqual(Patient.objects.get(pk=p.pk).eav.height, 15) - p.eav.height='2.3' + p.eav.height = '2.3' p.save() self.assertEqual(Patient.objects.get(pk=p.pk).eav.height, 2.3) @@ -150,7 +151,9 @@ class DataValidation(TestCase): ynu.values.add(yes) ynu.values.add(no) ynu.values.add(unkown) - Attribute.objects.create(name='Fever?', datatype=Attribute.TYPE_ENUM, enum_group=ynu) + Attribute.objects.create( + name='Fever?', datatype=Attribute.TYPE_ENUM, enum_group=ynu + ) p = Patient.objects.create(name='Joe') p.eav.fever = 5 @@ -204,4 +207,6 @@ class DataValidation(TestCase): self.assertRaises(ValidationError, p.save) p.eav.multi = "one;two;three" p.save() - self.assertEqual(Patient.objects.get(pk=p.pk).eav.multi, ["one","two","three"]) + self.assertEqual( + Patient.objects.get(pk=p.pk).eav.multi, ["one", "two", "three"] + ) diff --git a/tests/forms.py b/tests/test_forms.py similarity index 90% rename from tests/forms.py rename to tests/test_forms.py index 9fa6f04..89e11b9 100644 --- a/tests/forms.py +++ b/tests/test_forms.py @@ -1,16 +1,16 @@ -from django.test import TestCase +import sys + from django.contrib.admin.sites import AdminSite +from django.core.handlers.base import BaseHandler +from django.forms import ModelForm +from django.test import TestCase +from django.test.client import RequestFactory import eav -import sys from eav.admin import * -from .models import Patient, M2MModel, ExampleModel -from eav.models import Attribute from eav.forms import BaseDynamicEntityForm -from django.contrib import admin -from django.core.handlers.base import BaseHandler -from django.test.client import RequestFactory -from django.forms import ModelForm +from eav.models import Attribute +from main_app.models import ExampleModel, M2MModel, Patient class MockRequest(RequestFactory): @@ -24,8 +24,10 @@ class MockRequest(RequestFactory): if sys.version_info[0] < 2: for middleware_method in handler._request_middleware: if middleware_method(request): - raise Exception("Couldn't create request mock object - " - "request middleware returned a response") + raise Exception( + "Couldn't create request mock object - " + "request middleware returned a response" + ) return request @@ -66,9 +68,7 @@ class Forms(TestCase): gender_group.values.add(self.female, self.male) Attribute.objects.create( - name='gender', - datatype=Attribute.TYPE_ENUM, - enum_group=gender_group + name='gender', datatype=Attribute.TYPE_ENUM, enum_group=gender_group ) self.instance = Patient.objects.create(name='Jim Morrison') diff --git a/tests/misc_models.py b/tests/test_misc_models.py similarity index 78% rename from tests/misc_models.py rename to tests/test_misc_models.py index 2a78fb9..f1d64a0 100644 --- a/tests/misc_models.py +++ b/tests/test_misc_models.py @@ -1,9 +1,8 @@ from django.test import TestCase -from eav.models import EnumGroup, Attribute, Value, EnumValue - import eav -from .models import Patient +from eav.models import Attribute, EnumGroup, EnumValue, Value +from main_app.models import Patient class MiscModels(TestCase): @@ -14,7 +13,9 @@ class MiscModels(TestCase): def test_attribute_help_text(self): desc = 'Patient Age' - a = Attribute.objects.create(name='age', description=desc, datatype=Attribute.TYPE_INT) + 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): @@ -32,7 +33,9 @@ class MiscModels(TestCase): 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) + 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' diff --git a/tests/queries.py b/tests/test_queries.py similarity index 82% rename from tests/queries.py rename to tests/test_queries.py index 92bad6b..ab0e66a 100644 --- a/tests/queries.py +++ b/tests/test_queries.py @@ -6,8 +6,7 @@ from django.test import TestCase import eav from eav.models import Attribute, EnumGroup, EnumValue, Value from eav.registry import EavConfig - -from .models import Encounter, Patient +from main_app.models import Encounter, Patient class Queries(TestCase): @@ -32,7 +31,9 @@ class Queries(TestCase): ynu.values.add(self.no) ynu.values.add(self.unknown) - Attribute.objects.create(name='fever', datatype=Attribute.TYPE_ENUM, enum_group=ynu) + Attribute.objects.create( + name='fever', datatype=Attribute.TYPE_ENUM, enum_group=ynu + ) def tearDown(self): eav.unregister(Encounter) @@ -46,26 +47,27 @@ class Queries(TestCase): # Name, age, fever, # city, country, extras # possible illness - ['Anne', 3, no, - 'New York', 'USA', {"chills": "yes"}, - "cold" - ], - ['Bob', 15, no, - 'Bamako', 'Mali', {}, - "" - ], - ['Cyrill', 15, yes, - 'Kisumu', 'Kenya', {"chills": "yes", "headache": "no"}, - "flu" - ], - ['Daniel', 3, no, - 'Nice', 'France', {"headache": "yes"}, - "cold" - ], - ['Eugene', 2, yes, - 'France', 'Nice', {"chills": "no", "headache": "yes"}, - "flu;cold" - ] + ['Anne', 3, no, 'New York', 'USA', {"chills": "yes"}, "cold"], + ['Bob', 15, no, 'Bamako', 'Mali', {}, ""], + [ + 'Cyrill', + 15, + yes, + 'Kisumu', + 'Kenya', + {"chills": "yes", "headache": "no"}, + "flu", + ], + ['Daniel', 3, no, 'Nice', 'France', {"headache": "yes"}, "cold"], + [ + 'Eugene', + 2, + yes, + 'France', + 'Nice', + {"chills": "no", "headache": "yes"}, + "flu;cold", + ], ] for row in data: @@ -76,7 +78,7 @@ class Queries(TestCase): eav__city=row[3], eav__country=row[4], eav__extras=row[5], - eav__illness=row[6] + eav__illness=row[6], ) def test_get_or_create_with_eav(self): @@ -95,7 +97,9 @@ class Queries(TestCase): self.assertEqual(Patient.objects.get(eav__age=6), p1) Patient.objects.create(name='Fred', eav__age=6) - self.assertRaises(MultipleObjectsReturned, lambda: Patient.objects.get(eav__age=6)) + self.assertRaises( + MultipleObjectsReturned, lambda: Patient.objects.get(eav__age=6) + ) def test_filtering_on_normal_and_eav_fields(self): self.init_data() @@ -110,8 +114,8 @@ class Queries(TestCase): self.assertEqual(p.count(), 0) # Anne, Daniel - q1 = Q(eav__age__gte=3) # Everyone except Eugene - q2 = Q(eav__age__lt=15) # Anne, Daniel, Eugene + q1 = Q(eav__age__gte=3) # Everyone except Eugene + q2 = Q(eav__age__lt=15) # Anne, Daniel, Eugene p = Patient.objects.filter(q2 & q1) self.assertEqual(p.count(), 2) @@ -140,11 +144,11 @@ class Queries(TestCase): self.assertEqual(p.count(), 5) # Anne, Bob, Daniel - q1 = Q(eav__fever=self.no) # Anne, Bob, Daniel - q2 = Q(eav__fever=self.yes) # Cyrill, Eugene - q3 = Q(eav__country__contains='e') # Cyrill, Daniel, Eugene - q4 = q2 & q3 # Cyrill, Daniel, Eugene - q5 = (q1 | q4) & q1 # Anne, Bob, Daniel + q1 = Q(eav__fever=self.no) # Anne, Bob, Daniel + q2 = Q(eav__fever=self.yes) # Cyrill, Eugene + q3 = Q(eav__country__contains='e') # Cyrill, Daniel, Eugene + q4 = q2 & q3 # Cyrill, Daniel, Eugene + q5 = (q1 | q4) & q1 # Anne, Bob, Daniel p = Patient.objects.filter(q5) self.assertEqual(p.count(), 3) @@ -218,7 +222,6 @@ class Queries(TestCase): p = Patient.objects.filter(~q1) self.assertEqual(p.count(), 1) - def _order(self, ordering): query = Patient.objects.all().order_by(*ordering) return list(query.values_list('name', flat=True)) @@ -226,32 +229,32 @@ class Queries(TestCase): def assert_order_by_results(self, eav_attr='eav'): self.assertEqual( ['Bob', 'Eugene', 'Cyrill', 'Anne', 'Daniel'], - self._order(['%s__city' % eav_attr]) + self._order(['%s__city' % eav_attr]), ) self.assertEqual( ['Eugene', 'Anne', 'Daniel', 'Bob', 'Cyrill'], - self._order(['%s__age' % eav_attr, '%s__city' % eav_attr]) + self._order(['%s__age' % eav_attr, '%s__city' % eav_attr]), ) self.assertEqual( ['Eugene', 'Cyrill', 'Anne', 'Daniel', 'Bob'], - self._order(['%s__fever' % eav_attr, '%s__age' % eav_attr]) + self._order(['%s__fever' % eav_attr, '%s__age' % eav_attr]), ) self.assertEqual( ['Eugene', 'Cyrill', 'Daniel', 'Bob', 'Anne'], - self._order(['%s__fever' % eav_attr, '-name']) + self._order(['%s__fever' % eav_attr, '-name']), ) self.assertEqual( ['Eugene', 'Daniel', 'Cyrill', 'Bob', 'Anne'], - self._order(['-name', '%s__age' % eav_attr]) + self._order(['-name', '%s__age' % eav_attr]), ) self.assertEqual( ['Anne', 'Bob', 'Cyrill', 'Daniel', 'Eugene'], - self._order(['example__name']) + self._order(['example__name']), ) with self.assertRaises(NotSupportedError): @@ -265,7 +268,6 @@ class Queries(TestCase): self.assert_order_by_results() def test_order_by_with_custom_config(self): - class CustomConfig(EavConfig): eav_attr = "data" generic_relation_attr = "data_values" diff --git a/tests/registry.py b/tests/test_registry.py similarity index 89% rename from tests/registry.py rename to tests/test_registry.py index c042ca8..40b8ca2 100644 --- a/tests/registry.py +++ b/tests/test_registry.py @@ -1,15 +1,13 @@ from django.test import TestCase -import sys import eav from eav.registry import EavConfig - -from .models import Encounter, ExampleModel, Patient - -if sys.version_info[0] > 2: - from .metaclass_models3 import ExampleMetaclassModel -else: - from .metaclass_models2 import ExampleMetaclassModel +from main_app.models import ( + Encounter, + ExampleMetaclassModel, + ExampleModel, + Patient, +) class RegistryTests(TestCase): @@ -81,9 +79,13 @@ class RegistryTests(TestCase): self.assertFalse(ExampleModel.objects.__class__.__name__ == 'EntityManager') def test_unregistering_via_metaclass(self): - self.assertTrue(ExampleMetaclassModel.objects.__class__.__name__ == 'EntityManager') + self.assertTrue( + ExampleMetaclassModel.objects.__class__.__name__ == 'EntityManager' + ) eav.unregister(ExampleMetaclassModel) - self.assertFalse(ExampleMetaclassModel.objects.__class__.__name__ == 'EntityManager') + self.assertFalse( + ExampleMetaclassModel.objects.__class__.__name__ == 'EntityManager' + ) def test_unregistering_unregistered_model_proceeds_silently(self): eav.unregister(Patient) @@ -94,6 +96,7 @@ class RegistryTests(TestCase): def test_doesnt_register_nonmodel(self): with self.assertRaises(ValueError): + @eav.decorators.register_eav() class Foo(object): pass diff --git a/tests/set_and_get.py b/tests/test_set_and_get.py similarity index 94% rename from tests/set_and_get.py rename to tests/test_set_and_get.py index 986f4c9..e8fb9bd 100644 --- a/tests/set_and_get.py +++ b/tests/test_set_and_get.py @@ -2,8 +2,7 @@ from django.test import TestCase import eav from eav.registry import EavConfig - -from .models import Patient, Encounter +from main_app.models import Encounter, Patient class RegistryTests(TestCase): @@ -19,8 +18,8 @@ class RegistryTests(TestCase): eav_attr = 'eav_field' generic_relation_attr = 'encounter_eav_values' generic_relation_related_name = 'encounters' - eav.register(Encounter, EncounterEav) + eav.register(Encounter, EncounterEav) def test_registering_with_defaults(self): eav.register(Patient) @@ -28,10 +27,8 @@ class RegistryTests(TestCase): self.assertEqual(Patient._eav_config_cls.manager_attr, 'objects') self.assertFalse(Patient._eav_config_cls.manager_only) self.assertEqual(Patient._eav_config_cls.eav_attr, 'eav') - self.assertEqual(Patient._eav_config_cls.generic_relation_attr, - 'eav_values') - self.assertEqual(Patient._eav_config_cls.generic_relation_related_name, - None) + self.assertEqual(Patient._eav_config_cls.generic_relation_attr, 'eav_values') + self.assertEqual(Patient._eav_config_cls.generic_relation_related_name, None) eav.unregister(Patient) def test_registering_overriding_defaults(self): diff --git a/tests/test_settings.py b/tests/test_settings.py deleted file mode 100644 index 9590532..0000000 --- a/tests/test_settings.py +++ /dev/null @@ -1,49 +0,0 @@ -import os - -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -SECRET_KEY = 'fake-key' - -SITE_ID = 1 - -INSTALLED_APPS = [ - 'django.contrib.auth', - 'django.contrib.sites', - 'django.contrib.admin', - 'django.contrib.messages', # Required for admin app. - 'django.contrib.contenttypes', - 'tests', - 'eav' -] - -MIDDLEWARE = [ - # Following 3 middleware required for admin app. - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware' -] - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - 'TEST_NAME': os.path.join(BASE_DIR, 'test_db.sqlite3'), - } -}