def test_in(): books = create_books() assert apply_in_listing_filters(str(books[0].pk)) == [books[0]] assert apply_in_listing_filters(str(books[1].pk), '23') == [books[1]] assert apply_in_listing_filters(str(books[1].pk), str(books[0].pk)) == books assert apply_in_listing_filters('23') == []
def test_id(): filter_name = 'id' books = create_books() assert filter_field(filter_name, CO.EQ, books[0].pk) == [books[0]] assert filter_field(filter_name, CO.EQ, 3) == [] assert filter_field(filter_name, CO.NE, books[1].pk) == [books[0]] assert filter_field(filter_name, CO.LT, books[1].pk) == [books[0]] assert filter_field(filter_name, CO.GE, books[0].pk) == books
def test_anno_title_non_dynamic(): filter_name = 'anno_title_non_dynamic' books = create_books() books[0].title = 'text' books[0].save(update_fields=['title']) assert filter_field(filter_name, CO.EQ, RQL_NULL) == [books[1]] assert filter_field(filter_name, CO.EQ, 'text') == [books[0]]
def test_anno_title_dynamic(): filter_name = 'anno_title_dynamic' books = create_books() books[0].title = 'text' books[0].save(update_fields=['title']) assert filter_field(filter_name, CO.EQ, 'text') == [books[0]] assert filter_field(filter_name, SearchOperators.I_LIKE, 'Te*') == [books[0]]
def test_tuple(filter_string): books = create_books() comp_filter = filter_string.format( email=books[0].author.email, published_at=books[0].published_at.date(), publisher_id=books[0].author.publisher.id, second_book_email=books[1].author.email, ) assert apply_filters(comp_filter) == [books[0]]
def test_null_with_in_or(): books = create_books() title = 'null' books[0].title = title books[0].save(update_fields=['title']) assert apply_filters('in(title,({},{}))'.format(title, RQL_NULL)) == books assert apply_filters('or(title=eq={},eq(title,{}))'.format( title, RQL_NULL)) == books
def test_custom_filter_ordering(): class CustomCls(BooksFilterClass): def build_name_for_custom_ordering(self, filter_name): return 'id' def assert_ordering(self, filter_name, expected): assert list( self.apply_filters( 'ordering({0})'.format(filter_name))[1]) == expected books = create_books() CustomCls(book_qs).assert_ordering('ordering_filter', [books[0], books[1]]) CustomCls(book_qs).assert_ordering('-ordering_filter', [books[1], books[0]])
def test_ignored_filters(filter_name, operator): books = create_books() assert filter_field(filter_name, operator, 'value') == books
def test_anno_str_ok(): filter_name = 'anno_str' books = create_books() assert filter_field(filter_name, CO.EQ, 'te') == [] assert filter_field(filter_name, CO.EQ, 'text') == books
def test_anno_int_ok(filter_name): books = create_books() assert filter_field(filter_name, CO.EQ, 10) == [] assert filter_field(filter_name, CO.EQ, 1000) == books
def test_ordering_by_empty_value(): books = create_books() assert apply_filters('ordering()') == books
def test_ordering_sources(): books = create_books() assert apply_filters('ordering(d_id)') == [books[0], books[1]] assert apply_filters('ordering(-d_id)') == [books[1], books[0]]
def test_null(): books = create_books() assert apply_filters('title={0}'.format(RQL_NULL)) == books assert apply_filters('title=ne={0}'.format(RQL_NULL)) == []
def test_tuple_syntax_terms_not_fail(filter_string): books = create_books() assert apply_filters(filter_string) == books