def test_with_scoped_session(self): class A(self.base_cls): name = Column(String) session = self.init() session.add_all([A(name='a1'), A(name='a2'), A(name='a3')]) session.commit() q1 = ConstructQuery({'name': A.name}, session) self.assertEqual({obj.name for obj in q1.all()}, {'a1', 'a2', 'a3'}) q2 = ConstructQuery({'name': A.name}) with self.assertRaises(AttributeError): q2.all()
def test_non_empty_in_op_in_relative_subqueries(self): in_op = ColumnOperators.in_ class EmptyInOpError(Exception): pass def wrapper(self, values): if not values: raise EmptyInOpError return in_op(self, values) patcher = patch.object(ColumnOperators, 'in_', wrapper) class A(self.base_cls): value = Column(String) class B(self.base_cls): value = Column(String) session = self.init() session.add_all([A(), A(), A()]) session.commit() obj_sq = RelativeObjectSubQuery(A.value, B.value) obj_query = ConstructQuery({ 'a_id': A.id, 'b_id': get_(B.id, obj_sq) }, session) with patcher: obj_query.all() list_sq = RelativeCollectionSubQuery(A.value, B.value) list_query = ConstructQuery({ 'a_id': A.id, 'b_id': map_(B.id, list_sq) }, session) with patcher: list_query.all()
def test_non_empty_in_op_in_relative_subqueries(self): in_op = ColumnOperators.in_ class EmptyInOpError(Exception): pass def wrapper(self, values): if not values: raise EmptyInOpError return in_op(self, values) patcher = patch.object(ColumnOperators, 'in_', wrapper) class A(self.base_cls): value = Column(String) class B(self.base_cls): value = Column(String) session = self.init() session.add_all([A(), A(), A()]) session.commit() obj_sq = RelativeObjectSubQuery(A.value, B.value) obj_query = ConstructQuery({'a_id': A.id, 'b_id': get_(B.id, obj_sq)}, session) with patcher: obj_query.all() list_sq = RelativeCollectionSubQuery(A.value, B.value) list_query = ConstructQuery({'a_id': A.id, 'b_id': map_(B.id, list_sq)}, session) with patcher: list_query.all()