def test_relation_hybrid_property(self): query = ( self.session.query(self.Article) .join(self.Article.category) ).group_by(self.Article.id) query = sort_query(query, '-category-articles_count') assert_contains('ORDER BY (SELECT count(article.id) AS count_1', query)
def test_join(self): query = ( self.session.query(self.Article) .join(self.Article.category) ) query = sort_query(query, 'name', silent=False) assert_contains('ORDER BY article.name ASC', query)
def test_hybrid_property_descending(self): query = self.session.query(self.Category) query = sort_query(query, '-articles_count') assert_contains( 'ORDER BY (SELECT count(article.id) AS count_1', query ) assert ' DESC' in str(query)
def test_aliased_joined_entity(self): alias = sa.orm.aliased(self.Category, name='categories') query = self.session.query( self.Article ).join( alias, self.Article.category ) query = sort_query(query, '-categories-name') assert_contains('ORDER BY categories.name DESC', query)
def test_assigned_hybrid_property(self): def getter(self): return self.name self.Article.some_hybrid = sa.ext.hybrid.hybrid_property( fget=getter ) query = self.session.query(self.Article) query = sort_query(query, 'some_hybrid') assert_contains('ORDER BY article.name ASC', query)
def test_column_property(self): self.Category.article_count = sa.orm.column_property( sa.select([sa.func.count(self.Article.id)]) .where(self.Article.category_id == self.Category.id) .label('article_count') ) query = self.session.query(self.Category) query = sort_query(query, 'article_count') assert_contains('article_count ASC', query)
def test_aliased_hybrid_property(self): alias = sa.orm.aliased( self.Category, name='categories' ) query = ( self.session.query(self.Article) .outerjoin(alias, self.Article.category) .options( sa.orm.contains_eager(self.Article.category, alias=alias) ) ).group_by(alias.id, self.Article.id) query = sort_query(query, '-categories-articles_count') assert_contains('ORDER BY (SELECT count(article.id) AS count_1', query)
def test_subqueried_scalar(self): article_count = ( sa.sql.select( [sa.func.count(self.Article.id)], from_obj=[self.Article.__table__] ) .where(self.Article.category_id == self.Category.id) .correlate(self.Category.__table__) ) query = self.session.query( self.Category, article_count.label('articles') ) query = sort_query(query, '-articles') assert_contains('ORDER BY articles DESC', query)
def test_aliased_concat_hybrid_property(self): alias = sa.orm.aliased( self.Category, name='aliased' ) query = ( self.session.query(self.Article) .outerjoin(alias, self.Article.category) .options( sa.orm.contains_eager(self.Article.category, alias=alias) ) ) query = sort_query(query, 'aliased-full_name') assert_contains( 'concat(aliased.title, :param_1, aliased.name)', query )
def test_column_property(self): self.TextItem.item_count = sa.orm.column_property( sa.select( [ sa.func.count('1') ], ) .select_from(self.TextItem.__table__) .label('item_count') ) query = sort_query( self.session.query(self.TextItem), 'item_count' ) assert_contains('ORDER BY item_count', query)
def test_annotated_label_with_descending_order(self): query = self.session.query(self.User).order_by( sa.desc(self.User.article_count)) query = make_order_by_deterministic(query) assert_contains('ORDER BY article_count DESC, "user".id DESC', query)
def test_calculated_value_descending(self): query = self.session.query( self.Category, sa.func.count(self.Article.id).label('articles') ) query = sort_query(query, '-articles') assert_contains('ORDER BY articles DESC', query)
def test_with_ambiguous_column(self): query = sort_query( self.session.query(self.TextItem), 'id' ) assert_contains('ORDER BY text_item.id ASC', query)
def test_column_property(self): query = self.session.query(self.User).order_by(self.User.email_lower) query = make_order_by_deterministic(query) assert_contains('lower("user".name), "user".id ASC', query)
def test_table(self): query = self.session.query(self.Article.__table__) query = sort_query(query, 'name') assert_contains('ORDER BY article.name', query)
def test_ascending_order_by(self): query = self.session.query(self.User).order_by(sa.asc(self.User.name)) query = make_order_by_deterministic(query) assert_contains('ORDER BY "user".name ASC, "user".id ASC', query)
def test_with_ambiguous_column(self): query = sort_query(self.session.query(self.TextItem), 'id') assert_contains('ORDER BY text_item.id ASC', query)
def test_child_class_attribute(self): query = sort_query(self.session.query(self.TextItem), 'category') assert_contains('ORDER BY article.category ASC', query)
def test_column_descending(self): query = sort_query(self.session.query(self.Article), '-name') assert_contains('ORDER BY article.name DESC', query)
def test_relation_hybrid_property(self): query = (self.session.query(self.Article).join( self.Article.category)).group_by(self.Article.id) query = sort_query(query, '-category-articles_count') assert_contains('ORDER BY (SELECT count(article.id) AS count_1', query)
def test_table(self): query = self.session.query(self.Article.__table__) query = sort_query(query, 'name') assert_contains('ORDER BY name', query)
def test_hybrid_property_descending(self): query = self.session.query(self.Category) query = sort_query(query, '-articles_count') assert_contains('ORDER BY (SELECT count(article.id) AS count_1', query) assert ' DESC' in str(query)
def test_synonym_property(self): query = self.session.query(self.Category) query = sort_query(query, 'name_synonym') assert_contains('ORDER BY category.name ASC', query)
def test_annotated_label_with_descending_order(self): query = self.session.query(self.User).order_by( sa.desc(self.User.article_count) ) query = make_order_by_deterministic(query) assert_contains('ORDER BY article_count DESC, "user".id DESC', query)
def test_join(self): query = (self.session.query(self.Article).join(self.Article.category)) query = sort_query(query, 'name', silent=False) assert_contains('ORDER BY article.name ASC', query)
def test_non_unique_column(self): query = self.session.query(self.User).order_by(self.User.name) query = make_order_by_deterministic(query) assert_contains('ORDER BY "user".name, "user".id ASC', query)
def test_string_order_by(self): query = self.session.query(self.User).order_by('name') query = make_order_by_deterministic(query) assert_contains('ORDER BY name, "user".id ASC', query)
def test_multiple_columns(self): query = self.session.query(self.Article) query = sort_query(query, 'name', 'id') assert_contains('article.name ASC, article.id ASC', query)
def test_aliased_joined_entity(self): alias = sa.orm.aliased(self.Category, name='categories') query = self.session.query(self.Article).join(alias, self.Article.category) query = sort_query(query, '-categories-name') assert_contains('ORDER BY categories.name DESC', query)
def test_child_class_attribute(self): query = sort_query( self.session.query(self.TextItem), 'category' ) assert_contains('ORDER BY article.category ASC', query)
def test_joined_table_column(self): query = self.session.query(self.Article).join(self.Article.category) query = sort_query(query, 'category-name') assert_contains('category.name ASC', query)
def test_annotated_label(self): query = self.session.query(self.User).order_by(self.User.article_count) query = make_order_by_deterministic(query) assert_contains('article_count, "user".id ASC', query)
def test_ascending_order_by(self): query = self.session.query(self.User).order_by( sa.asc(self.User.name) ) query = make_order_by_deterministic(query) assert_contains('ORDER BY "user".name ASC, "user".id ASC', query)
def test_calculated_value_descending(self): query = self.session.query( self.Category, sa.func.count(self.Article.id).label('articles')) query = sort_query(query, '-articles') assert_contains('ORDER BY articles DESC', query)