def test_option_creation(self): from sqlalchemy.orm.strategies import EagerLazyOption Customer = self.classes.Customer opt = orm.nestedload(Customer.orders) assert isinstance(opt, EagerLazyOption) is_(opt.key[0], Customer.orders)
def test_subquery_no_eagers(self): Customer = self.classes.Customer s = Session() stmt = s.query(Customer).options(orm.nestedload( Customer.orders)).subquery() self.assert_compile(stmt, 'SELECT customer.id, customer.name FROM customer')
def test_load_collection(self): Customer = self.classes.Customer s = Session() q = s.query(Customer).options(orm.nestedload(Customer.orders)).filter(Customer.id == 1) with self.assert_statement_count(1): eq_(q.all(), [self._orm_fixture(orders=True)])
def test_load_collection(self): Customer = self.classes.Customer s = Session() q = s.query(Customer).options(orm.nestedload(Customer.orders)).\ filter(Customer.id == 1) with self.assert_statement_count(1): eq_(q.all(), [self._orm_fixture(orders=True)])
def test_render_basic_nested(self): Customer = self.classes.Customer s = Session() q = s.query(Customer).options(orm.nestedload(Customer.orders)) self.assert_compile( q, 'SELECT customer.id AS customer_id, ' 'customer.name AS customer_name, (SELECT "order".id, ' '"order".customer_id, "order".order_info FROM "order" ' 'WHERE customer.id = "order".customer_id) AS anon_1 ' 'FROM customer')
def test_statement(self): Customer = self.classes.Customer s = Session() # there's an annotate in here which needs to succeed stmt = s.query(Customer).options(orm.nestedload( Customer.orders)).statement self.assert_compile( stmt, 'SELECT customer.id, customer.name, (SELECT "order".id, ' '"order".customer_id, "order".order_info FROM "order" ' 'WHERE customer.id = "order".customer_id) AS anon_1 FROM customer')
def test_statement(self): Customer = self.classes.Customer s = Session() # there's an annotate in here which needs to succeed stmt = s.query(Customer).options(orm.nestedload(Customer.orders)).statement self.assert_compile( stmt, 'SELECT customer.id, customer.name, (SELECT "order".id, ' '"order".customer_id, "order".order_info FROM "order" ' 'WHERE customer.id = "order".customer_id) AS anon_1 FROM customer', )
def test_refresh_scalar(self): Order = self.classes.Order s = Session() q = s.query(Order).options(orm.nestedload(Order.customer)).filter(Order.id == 102) order = q.all() customer = order[0].customer # expire... s.expire(customer) # + load again, should refresh Customer on Order s.query(Order).options(orm.nestedload(Order.customer)).filter(Order.id == 102).all() fixture_order = self._orm_fixture(orders=True).orders[1] # avoid comparison/lazy load of 'orders' on the customer del fixture_order.customer.__dict__["orders"] with self.assert_statement_count(0): eq_(fixture_order, order[0])
def test_render_basic_nested(self): Customer = self.classes.Customer s = Session() q = s.query(Customer).options(orm.nestedload(Customer.orders)) self.assert_compile( q, "SELECT customer.id AS customer_id, " 'customer.name AS customer_name, (SELECT "order".id, ' '"order".customer_id, "order".order_info FROM "order" ' 'WHERE customer.id = "order".customer_id) AS anon_1 ' "FROM customer", )
def test_load_scalar(self): Order = self.classes.Order s = Session() q = s.query(Order).options(orm.nestedload(Order.customer)).filter(Order.id == 102) order = self._orm_fixture(orders=True).orders[1] # avoid comparison/lazy load of 'orders' on the customer del order.customer.__dict__["orders"] with self.assert_statement_count(1): eq_(q.all(), [order])
def test_refresh_scalar(self): Order = self.classes.Order s = Session() q = s.query(Order).options(orm.nestedload(Order.customer)).\ filter(Order.id == 102) order = q.all() customer = order[0].customer # expire... s.expire(customer) # + load again, should refresh Customer on Order s.query(Order).options(orm.nestedload(Order.customer)).\ filter(Order.id == 102).all() fixture_order = self._orm_fixture(orders=True).orders[1] # avoid comparison/lazy load of 'orders' on the customer del fixture_order.customer.__dict__['orders'] with self.assert_statement_count(0): eq_(fixture_order, order[0])
def test_load_scalar(self): Order = self.classes.Order s = Session() q = s.query(Order).options(orm.nestedload(Order.customer)).\ filter(Order.id == 102) order = self._orm_fixture(orders=True).orders[1] # avoid comparison/lazy load of 'orders' on the customer del order.customer.__dict__['orders'] with self.assert_statement_count(1): eq_(q.all(), [order])
def test_refresh_collection(self): Customer = self.classes.Customer s = Session() customers = s.query(Customer).options(immediateload(Customer.orders)).filter(Customer.id == 1).all() orders = customers[0].orders # expire... for ord_ in orders: s.expire(ord_) # + load again, should refresh Orders on Customer s.query(Customer).options(orm.nestedload(Customer.orders)).filter(Customer.id == 1).all() # covers the "exec" loader with self.assert_statement_count(0): eq_(customers, [self._orm_fixture(orders=True)])
def test_refresh_collection(self): Customer = self.classes.Customer s = Session() customers = s.query(Customer).options(immediateload(Customer.orders)).\ filter(Customer.id == 1).all() orders = customers[0].orders # expire... for ord_ in orders: s.expire(ord_) # + load again, should refresh Orders on Customer s.query(Customer).options(orm.nestedload(Customer.orders)).\ filter(Customer.id == 1).all() # covers the "exec" loader with self.assert_statement_count(0): eq_(customers, [self._orm_fixture(orders=True)])
def test_subquery_no_eagers(self): Customer = self.classes.Customer s = Session() stmt = s.query(Customer).options(orm.nestedload(Customer.orders)).subquery() self.assert_compile(stmt, "SELECT customer.id, customer.name FROM customer")