コード例 #1
0
def test_old_syntax_select_remains(query, mocker):
    expected = ('select(books)&in(k,("v","v"))',
                'in(k,("v","v"))&select(books)')
    request = mocker.MagicMock(query_params=QueryDict(query))
    filter_instance = BooksFilterClass(Book.objects.none())
    assert DjangoFiltersRQLFilterBackend.get_rql_query(filter_instance,
                                                       request,
                                                       query) in expected
コード例 #2
0
def test_old_syntax_filters(mocker):
    query = 'k__in=v'
    request = mocker.MagicMock(query_params=QueryDict(query))
    filter_instance = BooksFilterClass(Book.objects.none())

    for _ in range(2):
        assert DjangoFiltersRQLFilterBackend.is_old_syntax(
            filter_instance, request, query) is True
        assert filter_instance.old_syntax_filters == {'t__in'}
コード例 #3
0
def test_bad_syntax_query(mocker):
    query = 'limit=10&offset=0&in=(prop,(val1,val2))&in(prop.prop,(val))' \
        '&ge=(created,2020-06-01T04:00:00Z)&le=(created,2020-06-24T03:59:59Z)'
    request = mocker.MagicMock(
        query_params=QueryDict(query),
        _request=mocker.MagicMock(META={'QUERY_STRING': query}),
    )
    filter_instance = BooksFilterClass(Book.objects.none())
    mocker.patch(
        'dj_rql.drf.compat.DjangoFiltersRQLFilterBackend.is_old_syntax',
        return_value=True)

    with pytest.raises(RQLFilterParsingError):
        assert DjangoFiltersRQLFilterBackend.get_query(filter_instance,
                                                       request, None)
コード例 #4
0
def test_old_syntax(mocker, query, expected):
    request = mocker.MagicMock(query_params=QueryDict(query))
    filter_instance = BooksFilterClass(Book.objects.none())
    assert DjangoFiltersRQLFilterBackend.is_old_syntax(filter_instance,
                                                       request,
                                                       query) == expected