Skip to content

Commit

Permalink
CVAT_server. Test for "Project updated time". (#3953)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitry Kruchinin committed Dec 1, 2021
1 parent d861dc9 commit c820723
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions cvat/apps/engine/tests/test_rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1349,6 +1349,7 @@ def test_api_v1_projects_delete_label(self):
}]
}
self._check_api_v1_project(data)

class ProjectListOfTasksAPITestCase(APITestCase):
def setUp(self):
self.client = APIClient()
Expand Down Expand Up @@ -1395,6 +1396,79 @@ def test_api_v1_projects_id_tasks_no_auth(self):
response = self._run_api_v1_projects_id_tasks(None, project.id)
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

class ProjectExportAPITestCase(APITestCase):
def setUp(self):
self.client = APIClient()

@classmethod
def setUpTestData(cls):
create_db_users(cls)
project_data = {
"name": "Project for check tasks in a xml",
"owner": cls.admin,
"labels": [{
"name": "car"
}]
}

db_project = create_db_project(project_data)
create_dummy_db_tasks(cls, db_project)
cls.project = db_project

def _run_api_v1_project_id_export(self, pid, user, annotation_format=""):
with ForceLogin(user, self.client):
response = self.client.get(
'/api/v1/projects/{}/annotations?format={}'.format(pid, annotation_format),
format="json")
return response

def _run_api_v1_tasks_id_delete(self, tid, user):
with ForceLogin(user, self.client):
response = self.client.delete('/api/v1/tasks/{}'.format(tid), format="json")
return response

def _check_tasks_count(self, project, expected_result):
tasks_id = [task.id for task in project.tasks.all()]
self.assertEqual(len(tasks_id), expected_result)

def _check_xml(self, pid, user, expected_result):
annotation_format = "CVAT for images 1.1"
response = self._run_api_v1_project_id_export(pid, user, annotation_format)
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)

response = self._run_api_v1_project_id_export(pid, user, annotation_format)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)

annotation_format = "CVAT for images 1.1&action=download"
response = self._run_api_v1_project_id_export(pid, user, annotation_format)
self.assertEqual(response.status_code, status.HTTP_200_OK)

content = io.BytesIO(b"".join(response.streaming_content))
content.seek(0)

with tempfile.TemporaryDirectory() as tmp_dir:
zipfile.ZipFile(content).extractall(tmp_dir)
xml = osp.join(tmp_dir, 'annotations.xml')
self.assertTrue(xml)
root = ET.parse(xml).getroot()
tasks = root.findall('meta/project/tasks/task/name')
self.assertEqual(len(tasks), expected_result)

def test_api_v1_projects_remove_task_export(self):
project = self.project
pid = project.id
user = self.admin

self._check_tasks_count(project, 4)
self._check_xml(pid, user, 4)

tasks_id = [task.id for task in project.tasks.all()]
response = self._run_api_v1_tasks_id_delete(tasks_id[0], self.admin)
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

self._check_tasks_count(project, 3)
self._check_xml(pid, user, 3)


class TaskListAPITestCase(APITestCase):
def setUp(self):
Expand Down

0 comments on commit c820723

Please sign in to comment.