mirror of
https://github.com/jazzband/django-eav2.git
synced 2026-04-04 23:50:26 +00:00
Failing tests for filter
This commit is contained in:
parent
b31a914318
commit
0c1f6377c7
3 changed files with 94 additions and 0 deletions
|
|
@ -10,6 +10,7 @@ from django.contrib.contenttypes import generic
|
|||
|
||||
from .fields import EavSlugField, EavDatatypeField
|
||||
|
||||
|
||||
def get_unique_class_identifier(cls):
|
||||
"""
|
||||
Return a unique identifier for a class
|
||||
|
|
@ -388,6 +389,7 @@ class EavEntity(object):
|
|||
return iter(self.get_values())
|
||||
|
||||
|
||||
# todo: cache all changed value in EAV and check against existing attribtue
|
||||
@staticmethod
|
||||
def save_handler(sender, *args, **kwargs):
|
||||
from .utils import EavRegistry
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
from basics import *
|
||||
from set_and_get import *
|
||||
from filters import *
|
||||
|
|
|
|||
91
tests/filters.py
Normal file
91
tests/filters.py
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
from datetime import datetime
|
||||
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from ..models import *
|
||||
from ..utils import EavRegistry, EavConfig
|
||||
from .models import Patient
|
||||
|
||||
|
||||
class EavFilterTests(TestCase):
|
||||
|
||||
"""
|
||||
Testing filters
|
||||
"""
|
||||
|
||||
|
||||
def setUp(self):
|
||||
|
||||
EavRegistry.unregister(Patient)
|
||||
EavRegistry.register(Patient)
|
||||
|
||||
self.attribute = EavAttribute.objects\
|
||||
.create(datatype=EavAttribute.TYPE_TEXT,
|
||||
name='City', slug='city')
|
||||
|
||||
self.patient = Patient.objects.create(name="Doe")
|
||||
|
||||
self.value = EavValue.objects.create(entity=self.patient,
|
||||
attribute=self.attribute,
|
||||
value_text='Denver')
|
||||
|
||||
def tearDown(self):
|
||||
EavRegistry.unregister(Patient)
|
||||
EavRegistry.unregister(User)
|
||||
|
||||
|
||||
def additional_attribute_setup(self):
|
||||
|
||||
self.country_attr = EavAttribute.objects\
|
||||
.create(datatype=EavAttribute.TYPE_TEXT,
|
||||
name='Country', slug='country')
|
||||
|
||||
class PatientEav(EavConfig):
|
||||
|
||||
@classmethod
|
||||
def get_eav_attributes(cls):
|
||||
return EavAttribute.objects.filter(slug='country')
|
||||
|
||||
self.PatientEav = PatientEav
|
||||
|
||||
class UserEav(EavConfig):
|
||||
|
||||
@classmethod
|
||||
def get_eav_attributes(cls):
|
||||
return EavAttribute.objects.filter(slug='city')
|
||||
|
||||
self.UserEav = UserEav
|
||||
EavRegistry.register(User, UserEav)
|
||||
self.user = User.objects.create(username='John')
|
||||
|
||||
|
||||
# todo: do that
|
||||
#def test_can_filter_all_entities_by_value(self):
|
||||
|
||||
# self.additional_attribute_setup()
|
||||
# self.user.eav.city = 'Paris'
|
||||
# self.patient.eav.city = 'New York'
|
||||
# self.user.save()
|
||||
# self.patient.save()
|
||||
|
||||
|
||||
#print EavEntity.objects.filter(eav__city='Paris')
|
||||
|
||||
|
||||
def test_you_can_filter_entity_by_attribute_values(self):
|
||||
|
||||
self.additional_attribute_setup()
|
||||
self.user.eav.city = 'Paris'
|
||||
self.user.save()
|
||||
u = User.objects.create(username='Bob')
|
||||
u.eav.city = "Paris"
|
||||
u.save()
|
||||
u = User.objects.create(username='Jack')
|
||||
u.eav.city = "New York"
|
||||
u.save()
|
||||
|
||||
self.assertEqual(User.objects.filter(eav__city='Paris').count(), 2)
|
||||
self.assertEqual(User.objects.exclude(eav__city='Paris').count(), 1)
|
||||
self.assertEqual(User.objects.filter(eav__city='Paris',
|
||||
username='Bob').count(), 1)
|
||||
Loading…
Reference in a new issue