未验证 提交 c8207238 编写于 作者: D Dmitry Kruchinin 提交者: GitHub

CVAT_server. Test for "Project updated time". (#3953)

上级 d861dc9c
......@@ -1349,6 +1349,7 @@ class ProjectUpdateLabelsAPITestCase(UpdateLabelsAPITestCase):
}]
}
self._check_api_v1_project(data)
class ProjectListOfTasksAPITestCase(APITestCase):
def setUp(self):
self.client = APIClient()
......@@ -1395,6 +1396,79 @@ class ProjectListOfTasksAPITestCase(APITestCase):
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):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册