Browse Source

Switch filter_class from DocumentFilter to ExampleFilter in ExampleList

pull/1402/head
Hironsan 3 years ago
parent
commit
18febb7e1a
2 changed files with 48 additions and 5 deletions
  1. 49
      backend/api/tests/api/test_document.py
  2. 4
      backend/api/views/example.py

49
backend/api/tests/api/test_document.py

@ -1,11 +1,13 @@
from django.utils.http import urlencode
from rest_framework import status from rest_framework import status
from rest_framework.reverse import reverse from rest_framework.reverse import reverse
from ...models import DOCUMENT_CLASSIFICATION from ...models import DOCUMENT_CLASSIFICATION
from .utils import CRUDMixin, make_doc, make_user, prepare_project
from .utils import (CRUDMixin, make_doc, make_example_state, make_user,
prepare_project)
class TestDocumentListAPI(CRUDMixin):
class TestExampleListAPI(CRUDMixin):
def setUp(self): def setUp(self):
self.project = prepare_project(task=DOCUMENT_CLASSIFICATION) self.project = prepare_project(task=DOCUMENT_CLASSIFICATION)
@ -40,7 +42,48 @@ class TestDocumentListAPI(CRUDMixin):
self.assert_create(expected=status.HTTP_403_FORBIDDEN) self.assert_create(expected=status.HTTP_403_FORBIDDEN)
class TestDocumentDetail(CRUDMixin):
class TestExampleListFilter(CRUDMixin):
def setUp(self):
self.project = prepare_project(task=DOCUMENT_CLASSIFICATION)
self.example = make_doc(self.project.item)
make_example_state(self.example, self.project.users[0])
def reverse(self, query_kwargs=None):
base_url = reverse(viewname='example_list', args=[self.project.item.id])
self.url = '{}?{}'.format(base_url, urlencode(query_kwargs))
def assert_filter(self, data, user, expected):
self.reverse(query_kwargs=data)
response = self.assert_fetch(user, status.HTTP_200_OK)
self.assertEqual(response.data['count'], expected)
def test_returns_example_if_confirmed_is_true(self):
user = self.project.users[0]
self.assert_filter(data={'confirmed': 'True'}, user=user, expected=1)
def test_does_not_return_example_if_confirmed_is_false(self):
user = self.project.users[0]
self.assert_filter(data={'confirmed': 'False'}, user=user, expected=0)
def test_returns_example_if_confirmed_is_empty(self):
user = self.project.users[0]
self.assert_filter(data={'confirmed': ''}, user=user, expected=1)
def test_does_not_return_example_if_user_is_different(self):
user = self.project.users[1]
self.assert_filter(data={'confirmed': 'True'}, user=user, expected=0)
def test_returns_example_if_user_is_different(self):
user = self.project.users[1]
self.assert_filter(data={'confirmed': 'False'}, user=user, expected=1)
def test_returns_example_if_user_is_different_and_confirmed_is_empty(self):
user = self.project.users[1]
self.assert_filter(data={'confirmed': ''}, user=user, expected=1)
class TestExampleDetail(CRUDMixin):
def setUp(self): def setUp(self):
self.project = prepare_project(task=DOCUMENT_CLASSIFICATION) self.project = prepare_project(task=DOCUMENT_CLASSIFICATION)

4
backend/api/views/example.py

@ -7,7 +7,7 @@ from rest_framework import filters, generics, status
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response from rest_framework.response import Response
from ..filters import DocumentFilter
from ..filters import DocumentFilter, ExampleFilter
from ..models import Example, Project from ..models import Example, Project
from ..permissions import IsInProjectReadOnlyOrAdmin from ..permissions import IsInProjectReadOnlyOrAdmin
from ..serializers import ExampleSerializer from ..serializers import ExampleSerializer
@ -20,7 +20,7 @@ class ExampleList(generics.ListCreateAPIView):
ordering_fields = ('created_at', 'updated_at') ordering_fields = ('created_at', 'updated_at')
search_fields = ('text', 'filename') search_fields = ('text', 'filename')
model = Example model = Example
filter_class = DocumentFilter
filter_class = ExampleFilter
@property @property
def project(self): def project(self):

Loading…
Cancel
Save