|
@@ -0,0 +1,108 @@
|
|
|
+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 ProjectCreationTests(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
|
|
|
+
|
|
|
+ def test_project_creation(self):
|
|
|
+
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+ url = url_for("create_project")
|
|
|
+
|
|
|
+ self.post(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)
|
|
|
+
|
|
|
+ def test_project_deletion(self):
|
|
|
+
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+ 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",)
|
|
|
+
|
|
|
+ self.assertEqual(1, Project.query.count())
|
|
|
+
|
|
|
+ url = url_for("remove_project", project_id=project.id)
|
|
|
+ self.post(url, json=dict(remove=True))
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+
|
|
|
+ def test_project_deletion_without_flag(self):
|
|
|
+
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+ 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",)
|
|
|
+
|
|
|
+ self.assertEqual(1, Project.query.count())
|
|
|
+
|
|
|
+ url = url_for("remove_project", project_id=project.id)
|
|
|
+ self.post(url, json=dict(), status_code=400)
|
|
|
+ self.assertEqual(1, Project.query.count())
|
|
|
+
|
|
|
+ url = url_for("remove_project", project_id=project.id)
|
|
|
+ self.post(url, json=dict(remove=False), status_code=400)
|
|
|
+ self.assertEqual(1, Project.query.count())
|
|
|
+
|
|
|
+ def test_project_deletion_with_labels(self):
|
|
|
+
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+ self.assertEqual(0, Label.query.count())
|
|
|
+
|
|
|
+ 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",)
|
|
|
+
|
|
|
+ self.assertEqual(1, Project.query.count())
|
|
|
+
|
|
|
+ for i in range(1, 11):
|
|
|
+ project.create_label(name=f"Label_{i}")
|
|
|
+
|
|
|
+ self.assertEqual(10, Label.query.count())
|
|
|
+
|
|
|
+ url = url_for("remove_project", project_id=project.id)
|
|
|
+ self.post(url, json=dict(remove=True))
|
|
|
+
|
|
|
+ self.assertEqual(0, Project.query.count())
|
|
|
+ self.assertEqual(0, Label.query.count())
|