def test_violations(self):
"Test error determination in CollectionValidator.why_bad"
obj = vv.Validator()
# main & where clause, both fail
q = vv.MongoQuery()
q.add_clause(vv.MongoClause(vv.Constraint('foo', 'size>', 2)))
q.add_clause(vv.MongoClause(vv.Constraint('bar', '>', 1)))
rec = {'foo': [0], 'bar': 0}
reasons = obj._get_violations(q, rec)
self.failUnlessEqual(len(reasons), 2)
for r in reasons:
if r.field == 'bar':
self.failUnless(r.op == '>' and r.got_value == 0 and r.expected_value == 1)
# all pass
q = vv.MongoQuery()
q.add_clause(vv.MongoClause(vv.Constraint('foo', 'size>', 2)))
q.add_clause(vv.MongoClause(vv.Constraint('bar', '>', 1)))
rec = {'foo': [0, 1, 2], 'bar': 9}
reasons = obj._get_violations(q, rec)
rtuples = [r.as_tuple() for r in reasons]
print('\n'.join(map(str, rtuples)))
self.failUnlessEqual(len(reasons), 0)
评论列表
文章目录