123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- from flask import url_for
- from pycs.database.Model import Model
- from pycs.database.Project import Project
- from pycs.database.Label import Label
- from tests.base import BaseTestCase
- class _BaseProjectTests(BaseTestCase):
- def setupModels(self):
- model = Model.new(
- commit=False,
- name="TestModel",
- description="Model for a test case",
- root_folder="models/fixed_model",
- )
- model.supports = ["labeled-image"]
- model.flush()
- self.model = model
- class ProjectCreationTests(_BaseProjectTests):
- def setUp(self):
- super().setUp()
- self.url = url_for("create_project")
- def test_project_creation_without_name(self):
- self.assertEqual(0, Project.query.count())
- self.post(self.url, json=dict(
- # name="Some Project",
- description="Some description",
- model=self.model.id,
- label=None,
- external=None,
- ),
- status_code=400,
- )
- self.assertEqual(0, Project.query.count())
- def test_project_creation_without_description(self):
- self.assertEqual(0, Project.query.count())
- self.post(self.url, json=dict(
- name="Some Project",
- # description="Some description",
- model=self.model.id,
- label=None,
- external=None,
- ),
- status_code=400,
- )
- self.assertEqual(0, Project.query.count())
- def test_project_creation(self):
- self.assertEqual(0, Project.query.count())
- self.post(self.url, json=dict(
- name="Some Project",
- description="Some description",
- model=self.model.id,
- label=None,
- external=None,
- )
- )
- self.assertEqual(1, Project.query.count())
- project = Project.query.first()
- self.assertIsNotNone(project)
- self.assertIsNotNone(project.model)
- self.assertIsNone(project.label_provider)
- class ProjectDeletionTests(_BaseProjectTests):
- def setupModels(self):
- super().setupModels()
- self.project = Project.new(
- name="test_project",
- description="Project for a test case",
- model=self.model,
- root_folder="project_folder",
- external_data=False,
- data_folder="project_folder/data",)
- @property
- def url(self):
- return url_for("remove_project",
- project_id=self.project.id)
- def test_project_deletion(self):
- self.assertEqual(1, Project.query.count())
- self.post(self.url, json=dict(remove=True))
- self.assertEqual(0, Project.query.count())
- def test_project_deletion_without_flag(self):
- self.assertEqual(1, Project.query.count())
- self.post(self.url, json=dict(), status_code=400)
- self.assertEqual(1, Project.query.count())
- self.post(self.url, json=dict(remove=False), status_code=400)
- self.assertEqual(1, Project.query.count())
- def test_project_deletion_with_labels(self):
- self.assertEqual(1, Project.query.count())
- self.assertEqual(0, Label.query.count())
- for i in range(1, 11):
- self.project.create_label(name=f"Label_{i}")
- self.assertEqual(10, Label.query.count())
- self.post(self.url, json=dict(remove=True))
- self.assertEqual(0, Project.query.count())
- self.assertEqual(0, Label.query.count())
|