def test_is(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['logic']) record(logic=True) request = Request(rf.get('/aaa/?logic__is=true')) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('logic')) == [{u'logic': True}], qs
def test_distinct(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['char']) record(id=1) record(id=2) request = Request(rf.get('/aaa/?_distinct=char&_distinct=id')) backend.filter_queryset(request, view.queryset, view)
def setup(self): self.view = DemoModelView.as_view() self.uri = reverse('demos') self.rec1 = record( id=1, # username=str(time.time()), json={ 'a': { 'b': { 'c': [11, 22, 33], 'd': 'xyz', 'e': 2222, 'f': ['aa/11', 'bb/22', 'cc/33'] } } }).obj self.rec2 = record( id=2, # fk=None, # username=str(time.time()), json={ 'a': { 'b': { 'c': [1, 2, 3], 'd': 'abc', 'e': 22, 'f': ['a/1', 'b/2', 'c/3'] } } }).obj
def test_equal2(backend, view, rf, monkeypatch): request = Request(rf.get('/aaa/?char=1')) monkeypatch.setattr(view, 'filter_fields', ['char']) record(id=1) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('char')) == [{'char': '1'}]
def test_format(backend, view, rf, monkeypatch): request = Request(rf.get('/aaa/?format=csv')) monkeypatch.setattr(view, 'filter_fields', ['id']) record(id=1) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('id')) == [{'id': 1}]
def test_join(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['fk']) record(id=2) request = Request(rf.get('/aaa/?fk__id=2')) qs = backend.filter_queryset(request, view.queryset, view) assert qs.filter(fk__id=2).exists()
def test_source_join(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['username']) record(id=1) request = Request(rf.get('/aaa/?username=1')) qs = backend.filter_queryset(request, view.queryset, view) assert qs.filter(fk__username=1).exists()
def test_format_override(backend, view, rf, monkeypatch, settings): settings.URL_FORMAT_OVERRIDE = "f" request = Request(rf.get('/aaa/?f=csv')) monkeypatch.setattr(view, 'filter_fields', ['id']) record(id=1) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('id')) == [{'id': 1}]
def test_ignore_filter(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['char']) monkeypatch.setattr(view, 'drf_ignore_filter', lambda *args: True, raising=False) record(id=1) record(id=2) request = Request(rf.get('/aaa/?id=1')) qs = backend.filter_queryset(request, view.queryset, view) assert qs.count() == 2
def test_processor(backend, view, rf, monkeypatch): def process_custom(*k, **kw): filters = {'id': 1} return filters, {} monkeypatch.setattr(backend, 'process_custom', process_custom, False) record() request = Request(rf.get('/aaa/?custom=1')) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('id')) == [{u'id': 1}], qs.values()
def test_processor_alter_filter(backend, view, rf, monkeypatch): def process_fk(*k, **kw): return {'fk__id': 2}, {} record(id=2) monkeypatch.setattr(view, 'filter_fields', ['fk']) monkeypatch.setattr(backend, 'process_fk', process_fk, False) request = Request(rf.get('/aaa/?fk__id=1')) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values('id')) == [{'id': 2}], qs
def test_equal_date(self): with record( json={}, date='2000-01-01', ) as rec: request = factory.get(self.uri, {'date': '2000-01-01'}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['date'] == rec.date
def test_not_in(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['id']) record(id=1) record(id=2) record(id=3) record(id=4) request = Request(rf.get('/aaa/?id__not_in=1&id__not_in=2')) qs = backend.filter_queryset(request, view.queryset, view) assert not qs.filter(id__in=[1, 2])
def test_in(backend, view, rf, monkeypatch): monkeypatch.setattr(view, 'filter_fields', ['id']) record(id=1) record(id=2) record(id=3) record(id=4) request = Request(rf.get('/aaa/?id__in=1&id__in=2&id__in=3')) qs = backend.filter_queryset(request, view.queryset, view) assert list(qs.values_list('id', flat=True)) == [1, 2, 3]
def setup(self): self.view = DemoModelView.as_view() self.uri = reverse('demos') self.rec1 = record(id=1, # username=str(time.time()), json={'a': {'b': {'c': [11, 22, 33], 'd': 'xyz', 'e': 2222, 'f': ['aa/11', 'bb/22', 'cc/33']} } }).obj self.rec2 = record( id=2, # fk=None, # username=str(time.time()), json={'a': {'b': {'c': [1, 2, 3], 'd': 'abc', 'e': 22, 'f': ['a/1', 'b/2', 'c/3']} } }).obj
def test_equal_logic(self): with record(logic=True) as rec: request = factory.get(self.uri, {'logic': 'true'}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['logic'] == rec.logic
def test_equal_date(self): with record(json={}, date='2000-01-01', ) as rec: request = factory.get(self.uri, {'date': '2000-01-01'}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['date'] == rec.date
def test_equal_integer(self): with record(): request = factory.get(self.uri, {'integer': 1}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['integer'] == 1
def test_equal_logic(self): with record(logic=True) as rec: request = factory.get(self.uri, {'logic': 'true'}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['logic'] == rec.logic
def test_equal_integer(self): with record(): request = factory.get(self.uri, {'integer': 1}) response = self.view(request).render() j = json.loads(response.content.decode('utf-8')) assert j[0]['integer'] == 1