def test_rel_key_matcher(self): u1 = Baz(username='******') u1.save() u2 = Baz(username='******') u2.save() qk = QueryKey(Baz) q = Qux() q.save() q.rel.add(u1) qs = q.rel self.assertEqual(len(qs), 1) key = qs.query.res.key p = r.pipeline() ok, parts, async_eval = qk.match_and_parse_key(key, u1.as_dict(to_db=True), pipe=p) self.assertEqual(ok, True) self.assertEqual(async_eval, True) self.assertEqual(True in p.execute(), True) ok, parts, async_eval = qk.match_and_parse_key(key, u1.as_dict(to_db=True)) self.assertEqual(ok, True) self.assertEqual(async_eval, False) u = Baz(username='******') u.save() p = r.pipeline() ok, parts, async_eval = qk.match_and_parse_key(key, u2.as_dict(to_db=True), pipe=p) self.assertEqual(ok, True) self.assertEqual(async_eval, True) # notice that this last question evaluates as False. self.assertEqual(True in p.execute(), False)
def test_key_matcher(self): qk = QueryKey(Bar) tests = [ ('~Bar_all', self.b1, True), ('~Foo_all', self.b1, False), ('~Bar_all^Bar:username', self.b1, True), ('~Bar_all+Bar_index:username:foo', self.b1, True), ('~Bar_all+Bar_index:username:foo+Bar:pk:1', self.b1, True), ('~Bar_all+Bar_index:username:foo-Bar:pk:2', self.b1, True), ('~Bar_all+Bar_index:username:foo+Bar:pk:2', self.b1, False), ('~Bar_all+Bar_index:username:foo+Bar:pk:1^Bar:created_at', self.b1, True), ] for key, obj, expected in tests: ok, parts, async_eval = qk.match_and_parse_key(key, obj.as_dict(to_db=True)) self.assertEqual(ok and async_eval == False, expected)