def test_filter_by_unrestricted_compound_from_memory (self): class Person (Entity): pk = Field(Integer, primary_key=True) firstname = Field(String) surname = Field(String) p1 = Person(pk=1, firstname='Homer', surname='Simpson') p2 = Person(pk=2, firstname='Bart', surname='Simpson') q = Query(Person) self.assertEqual(q.filter_by(Person.firstname == 'Homer', Person.surname == 'Simpson').one(), p1) self.assertEqual(q.filter_by(Person.firstname == 'Marge', Person.surname == 'Simpson').one(), None) self.assertEqual(q.filter_by(Person.firstname == 'Homer', Person.surname == 'Flanders').one(), None) self.assertEqual(q.filter_by((Person.firstname == 'Homer') & (Person.surname == 'Simpson')).one(), p1) self.assertEqual(q.filter_by((Person.firstname == 'Marge') & (Person.surname == 'Simpson')).one(), None) self.assertEqual(q.filter_by((Person.firstname == 'Homer') & (Person.surname == 'Flanders')).one(), None) self.assertEqual(q.filter_by((Person.firstname == 'Homer') | (Person.surname == 'Flanders')).one(), p1) self.assertEqual(q.filter_by((Person.firstname == 'Homer') & ~(Person.surname == 'Flanders')).one(), p1) self.assertEqual(q.filter_by(~(Person.firstname == 'Homer') & ~(Person.surname == 'Flanders')).one(), p2)
def test_filter_by_unrestricted_integer (self): class Person (Entity): pk = Field(Integer, primary_key=True) firstname = Field(String) surname = Field(String) p1 = Person(pk=1, firstname='Homer', surname='Simpson') p2 = Person(pk=2, firstname='Bart', surname='Simpson') Session.default.store(p1) Session.default.store(p2) Session.default.expunge() q = Query(Person) self.assertTrue('__eq__' in dir(Person.pk)) self.assertTrue('__ne__' in dir(Person.pk)) self.assertTrue('__lt__' in dir(Person.pk)) self.assertTrue('__le__' in dir(Person.pk)) self.assertTrue('__ge__' in dir(Person.pk)) self.assertTrue('__gt__' in dir(Person.pk)) self.assertFalse('__lt__' in dir(Person.firstname)) self.assertFalse('__le__' in dir(Person.firstname)) self.assertFalse('__ge__' in dir(Person.firstname)) self.assertFalse('__gt__' in dir(Person.firstname)) self.assertEqual(q.filter_by(Person.pk == 1).one(), p1) self.assertEqual(q.filter_by(Person.pk == 2).one(), p2) self.assertEqual(q.filter_by(Person.pk == 3).one(), None) self.assertEqual(q.filter_by(Person.pk < 1).one(), None) self.assertEqual(q.filter_by(Person.pk < 2).one(), p1) self.assertEqual(q.filter_by(Person.pk <= 0).one(), None) self.assertEqual(q.filter_by(Person.pk <= 1).one(), p1) self.assertEqual(q.filter_by(Person.pk >= 2).one(), p2) self.assertEqual(q.filter_by(Person.pk >= 3).one(), None) self.assertEqual(q.filter_by(Person.pk > 1).one(), p2) self.assertEqual(q.filter_by(Person.pk > 2).one(), None) self.assertEqual(q.filter_by((Person.pk >= 1) & (Person.pk <= 1)).one(), p1) self.assertEqual(q.filter_by((Person.pk >= 1) & ~(Person.pk > 1)).one(), p1)
def test_filter_by_unrestricted_from_memory (self): class Person (Entity): pk = Field(Integer, primary_key=True) firstname = Field(String) surname = Field(String) p1 = Person(pk=1, firstname='Homer', surname='Simpson') p2 = Person(pk=2, firstname='Bart', surname='Simpson') q = Query(Person) self.assertEqual(q.filter_by(Person.pk == 1).one(), p1) self.assertEqual(q.filter_by(Person.pk == 1).all(), [p1]) self.assertEqual(q.filter_by(Person.pk == 2).one(), p2) self.assertEqual(q.filter_by(Person.pk == 2).all(), [p2]) self.assertEqual(q.filter_by(Person.pk == 3).one(), None) self.assertEqual(q.filter_by(Person.pk == 3).all(), []) self.assertEqual(q.filter_by(Person.firstname == 'Homer').one(), p1) self.assertEqual(q.filter_by(Person.firstname == 'Bart').one(), p2) self.assertEqual(q.filter_by(Person.firstname == 'Marge').one(), None) self.assertTrue(p1 in q.filter_by(Person.surname == 'Simpson').all()) self.assertTrue(p2 in q.filter_by(Person.surname == 'Simpson').all()) self.assertEqual(len(q.filter_by(Person.surname == 'Simpson').all()), 2) self.assertEqual(q.filter_by(Person.firstname == 'Homer', Person.surname == 'Simpson').one(), p1) self.assertEqual(q.filter_by(Person.firstname == 'Marge', Person.surname == 'Simpson').one(), None) self.assertEqual(q.filter_by(Person.firstname == 'Homer', Person.surname == 'Flanders').one(), None)
def test_filter_by_unrestricted_string (self): class Person (Entity): pk = Field(Integer, primary_key=True) firstname = Field(String) surname = Field(String) p1 = Person(pk=1, firstname='Homer', surname='Simpson') p2 = Person(pk=2, firstname='Bart', surname='Simpson') Session.default.store(p1) Session.default.store(p2) Session.default.expunge() q = Query(Person) self.assertTrue('__eq__' in dir(Person.firstname)) self.assertTrue('__ne__' in dir(Person.firstname)) self.assertTrue('startswith' in dir(Person.firstname)) self.assertTrue('contains' in dir(Person.firstname)) self.assertTrue('endswith' in dir(Person.firstname)) self.assertFalse('startswith' in dir(Person.pk)) self.assertFalse('contains' in dir(Person.pk)) self.assertFalse('endswith' in dir(Person.pk)) self.assertEqual(q.filter_by(Person.firstname == 'Homer').one(), p1) self.assertEqual(q.filter_by(Person.firstname == 'Bart').one(), p2) self.assertEqual(q.filter_by(Person.firstname == 'Marge').one(), None) self.assertEqual(q.filter_by(Person.firstname.startswith('H')).one(), p1) self.assertEqual(q.filter_by(Person.firstname.startswith('Bar')).one(), p2) self.assertEqual(q.filter_by(Person.firstname.startswith('M')).one(), None) self.assertEqual(q.filter_by(Person.firstname.contains('m')).one(), p1) self.assertEqual(q.filter_by(Person.firstname.contains('ar')).one(), p2) self.assertEqual(q.filter_by(Person.firstname.contains('g')).one(), None) self.assertEqual(q.filter_by(Person.firstname.endswith('r')).one(), p1) self.assertEqual(q.filter_by(Person.firstname.endswith('rt')).one(), p2) self.assertEqual(q.filter_by(Person.firstname.endswith('e')).one(), None)