Failing tests for filter

This commit is contained in:
ksamuel 2010-09-10 16:02:51 +00:00
parent b31a914318
commit 0c1f6377c7
3 changed files with 94 additions and 0 deletions

View file

@ -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

View file

@ -1,2 +1,3 @@
from basics import *
from set_and_get import *
from filters import *

91
tests/filters.py Normal file
View 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)