Browse Source

Move make_annotation to labels app

pull/1671/head
Hironsan 2 years ago
parent
commit
17da307c14
6 changed files with 23 additions and 24 deletions
  1. 17
      backend/api/tests/api/utils.py
  2. 0
      backend/label_types/tests/data/invalid_labels.json
  3. 0
      backend/label_types/tests/data/valid_labels.json
  4. 14
      backend/label_types/tests/test_views.py
  5. 3
      backend/labels/tests/test_views.py
  6. 13
      backend/labels/tests/utils.py

17
backend/api/tests/api/utils.py

@ -1,4 +1,3 @@
import os
from typing import List
from django.conf import settings
@ -12,8 +11,6 @@ from projects.models import (DOCUMENT_CLASSIFICATION, IMAGE_CLASSIFICATION,
SEQUENCE_LABELING, SPEECH2TEXT, Member)
from roles.models import Role
DATA_DIR = os.path.join(os.path.dirname(__file__), '../../../data_import/tests/data')
class ProjectData:
@ -55,10 +52,6 @@ def assign_user_to_role(project_member, project, role_name):
return mapping
def remove_all_members():
Member.objects.all().delete()
def make_user(username: str = 'bob'):
user_model = get_user_model()
user, _ = user_model.objects.get_or_create(username=username, password='pass')
@ -136,16 +129,6 @@ def make_auto_labeling_config(project):
return mommy.make('AutoLabelingConfig', project=project)
def make_annotation(task, doc, user, **kwargs):
annotation_model = {
DOCUMENT_CLASSIFICATION: 'Category',
SEQUENCE_LABELING: 'Span',
SEQ2SEQ: 'TextLabel',
SPEECH2TEXT: 'TextLabel'
}.get(task)
return mommy.make(annotation_model, example=doc, user=user, **kwargs)
def prepare_project(task: str = 'Any', collaborative_annotation=False, **kwargs):
return make_project(
task=task,

backend/data_import/tests/data/label/invalid_labels.json → backend/label_types/tests/data/invalid_labels.json

backend/data_import/tests/data/label/valid_labels.json → backend/label_types/tests/data/valid_labels.json

14
backend/label_types/tests/test_views.py

@ -6,7 +6,9 @@ from rest_framework.reverse import reverse
from rest_framework.test import APITestCase
from projects.models import DOCUMENT_CLASSIFICATION
from api.tests.api.utils import (DATA_DIR, CRUDMixin, make_label, make_project, make_user, prepare_project)
from api.tests.api.utils import (CRUDMixin, make_label, make_project, make_user, prepare_project)
DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
class TestLabelList(CRUDMixin):
@ -140,17 +142,17 @@ class TestLabelUploadAPI(APITestCase):
self.assertEqual(response.status_code, expected_status)
def test_allows_project_admin_to_upload_label(self):
self.assert_upload_file('label/valid_labels.json', self.project.admin, status.HTTP_201_CREATED)
self.assert_upload_file('valid_labels.json', self.project.admin, status.HTTP_201_CREATED)
def test_denies_project_member_to_upload_label(self):
for member in self.project.staffs:
self.assert_upload_file('label/valid_labels.json', member, status.HTTP_403_FORBIDDEN)
self.assert_upload_file('valid_labels.json', member, status.HTTP_403_FORBIDDEN)
def test_denies_non_project_member_to_upload_label(self):
self.assert_upload_file('label/valid_labels.json', self.non_member, status.HTTP_403_FORBIDDEN)
self.assert_upload_file('valid_labels.json', self.non_member, status.HTTP_403_FORBIDDEN)
def test_denies_unauthenticated_user_to_upload_label(self):
self.assert_upload_file('label/valid_labels.json', expected_status=status.HTTP_403_FORBIDDEN)
self.assert_upload_file('valid_labels.json', expected_status=status.HTTP_403_FORBIDDEN)
def test_try_to_upload_invalid_file(self):
self.assert_upload_file('label/invalid_labels.json', self.project.admin, status.HTTP_400_BAD_REQUEST)
self.assert_upload_file('invalid_labels.json', self.project.admin, status.HTTP_400_BAD_REQUEST)

3
backend/labels/tests/test_views.py

@ -3,8 +3,9 @@ from rest_framework.reverse import reverse
from projects.models import DOCUMENT_CLASSIFICATION, SEQUENCE_LABELING, SEQ2SEQ
from labels.models import Category, Span, TextLabel
from api.tests.api.utils import (CRUDMixin, make_annotation, make_doc, make_label,
from api.tests.api.utils import (CRUDMixin, make_doc, make_label,
make_user, prepare_project)
from .utils import make_annotation
class TestLabelList:

13
backend/labels/tests/utils.py

@ -0,0 +1,13 @@
from model_mommy import mommy
from projects.models import DOCUMENT_CLASSIFICATION, SEQUENCE_LABELING, SEQ2SEQ, SPEECH2TEXT
def make_annotation(task, doc, user, **kwargs):
annotation_model = {
DOCUMENT_CLASSIFICATION: 'Category',
SEQUENCE_LABELING: 'Span',
SEQ2SEQ: 'TextLabel',
SPEECH2TEXT: 'TextLabel'
}.get(task)
return mommy.make(annotation_model, example=doc, user=user, **kwargs)
Loading…
Cancel
Save