6
0

project_tests.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. from flask import url_for
  2. from pycs.database.Model import Model
  3. from pycs.database.Project import Project
  4. from pycs.database.Label import Label
  5. from tests.base import BaseTestCase
  6. class ProjectCreationTests(BaseTestCase):
  7. def setupModels(self):
  8. model = Model.new(
  9. commit=False,
  10. name="TestModel",
  11. description="Model for a test case",
  12. root_folder="models/fixed_model",
  13. )
  14. model.supports = ["labeled-image"]
  15. model.flush()
  16. self.model = model
  17. def test_project_creation(self):
  18. self.assertEqual(0, Project.query.count())
  19. url = url_for("create_project")
  20. self.post(url, json=dict(
  21. name="Some Project",
  22. description="Some description",
  23. model=self.model.id,
  24. label=None,
  25. external=None,
  26. )
  27. )
  28. self.assertEqual(1, Project.query.count())
  29. project = Project.query.first()
  30. self.assertIsNotNone(project)
  31. self.assertIsNotNone(project.model)
  32. self.assertIsNone(project.label_provider)
  33. def test_project_deletion(self):
  34. self.assertEqual(0, Project.query.count())
  35. project = Project.new(
  36. name="test_project",
  37. description="Project for a test case",
  38. model=self.model,
  39. root_folder="project_folder",
  40. external_data=False,
  41. data_folder="project_folder/data",)
  42. self.assertEqual(1, Project.query.count())
  43. url = url_for("remove_project", project_id=project.id)
  44. self.post(url, json=dict(remove=True))
  45. self.assertEqual(0, Project.query.count())
  46. def test_project_deletion_without_flag(self):
  47. self.assertEqual(0, Project.query.count())
  48. project = Project.new(
  49. name="test_project",
  50. description="Project for a test case",
  51. model=self.model,
  52. root_folder="project_folder",
  53. external_data=False,
  54. data_folder="project_folder/data",)
  55. self.assertEqual(1, Project.query.count())
  56. url = url_for("remove_project", project_id=project.id)
  57. self.post(url, json=dict(), status_code=400)
  58. self.assertEqual(1, Project.query.count())
  59. url = url_for("remove_project", project_id=project.id)
  60. self.post(url, json=dict(remove=False), status_code=400)
  61. self.assertEqual(1, Project.query.count())
  62. def test_project_deletion_with_labels(self):
  63. self.assertEqual(0, Project.query.count())
  64. self.assertEqual(0, Label.query.count())
  65. project = Project.new(
  66. name="test_project",
  67. description="Project for a test case",
  68. model=self.model,
  69. root_folder="project_folder",
  70. external_data=False,
  71. data_folder="project_folder/data",)
  72. self.assertEqual(1, Project.query.count())
  73. for i in range(1, 11):
  74. project.create_label(name=f"Label_{i}")
  75. self.assertEqual(10, Label.query.count())
  76. url = url_for("remove_project", project_id=project.id)
  77. self.post(url, json=dict(remove=True))
  78. self.assertEqual(0, Project.query.count())
  79. self.assertEqual(0, Label.query.count())