def testJoin(self): storage_one = Midgard.QueryStorage(dbclass = "midgard_person") storage_two = Midgard.QueryStorage(dbclass = "midgard_person") qs = Midgard.QuerySelect(connection = self.mgd, storage = storage_one) group = Midgard.QueryConstraintGroup(grouptype = "AND") constraint_one = Midgard.QueryConstraint( property = Midgard.QueryProperty(property = "firstname"), operator = "=", holder = Midgard.QueryValue.create_with_value("Alice") ) constraint_two = Midgard.QueryConstraint( property = Midgard.QueryProperty(property = "firstname", storage = storage_two), operator = "=", holder = Midgard.QueryValue.create_with_value("John") ) group.add_constraint(constraint_one) group.add_constraint(constraint_two) qs.set_constraint(group) qs.add_join( "LEFT", Midgard.QueryProperty(property = "lastname"), Midgard.QueryProperty(property = "lastname", storage = storage_two) ) qs.execute() # We expect Alice person only self.assertEqual(qs.get_results_count(), 1) objects = qs.list_objects() self.assertEqual(objects[0].get_property("firstname"), "Alice")
def testValidateConstraintGroup(self): storage = Midgard.QueryStorage(dbclass = "midgard_snippet") columnA = Midgard.SqlQueryColumn( queryproperty = Midgard.QueryProperty(property = "name", storage = storage), name = "a", qualifier = "tblA" ) self.select.add_column(columnA) columnB = Midgard.SqlQueryColumn( queryproperty = Midgard.QueryProperty(property = "code", storage = storage), name = "b", qualifier = "tblA" ) self.select.add_column(columnB) cg = Midgard.QueryConstraintGroup(grouptype = "AND") cg.add_constraint( Midgard.SqlQueryConstraint( column = columnA, operator = "<>", holder = Midgard.QueryValue.create_with_value("") ) ) cg.add_constraint( Midgard.SqlQueryConstraint( column = columnB, operator = "<>", holder = Midgard.QueryValue.create_with_value("") ) ) self.select.set_constraint(cg) # Validate constraints during execution self.select.execute()
def testConstraintGroupType(self): group = Midgard.QueryConstraintGroup(grouptype = "AND") self.assertEqual(group.get_property("grouptype"), "AND") self.assertEqual(group.get_group_type(), "AND") self.assertTrue(group.set_group_type("OR")) self.assertFalse(group.set_group_type("INVALID"))
def testInheritance(self): cg = Midgard.QueryConstraintGroup(grouptype = "AND") self.assertIsInstance(cg, Midgard.QueryConstraintSimple) self.assertIsInstance(cg, Midgard.Validable)