diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py index 380718afd217094e0d27e98d44e80baf71aa47c2..ee121b6da3a133ca799bdac9e49a994ed03e0586 100755 --- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py +++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py @@ -1940,6 +1940,35 @@ class TaskDraftTestCase(unittest.TestCase): self.assertIn(task_draft_2.name, str(response_4)) self.assertNotIn(task_draft_3.name, str(response_4)) + def test_TaskDraft_filters_for_project(self): + """ + Test we can filter on this property, which is explicitly named on the model-specific property filter + """ + # setup + project_1 = models.Project.objects.create(**Project_test_data(name='myproject_draft_partial_1_%s' % uuid.uuid4())) + project_2 = models.Project.objects.create(**Project_test_data(name='myproject_draft_partial_2_%s' % uuid.uuid4())) + scheduling_set_1 = models.SchedulingSet.objects.create(**SchedulingSet_test_data(project=project_1)) + scheduling_set_2 = models.SchedulingSet.objects.create(**SchedulingSet_test_data(project=project_2)) + su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4(), scheduling_set=scheduling_set_1)) + su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4(), scheduling_set=scheduling_set_2)) + task_draft_1 = models.TaskDraft.objects.create(**TaskDraft_test_data("td_%s" % uuid.uuid4(), scheduling_unit_draft=su_draft_1)) + task_draft_2 = models.TaskDraft.objects.create(**TaskDraft_test_data("td_%s" % uuid.uuid4(), scheduling_unit_draft=su_draft_2)) + + # assert + response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_draft/?project=%s' % project_1.name, 200) + response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_draft/?project=%s' % project_2.name, 200) + response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_draft/?project=foo', 200) + response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_draft/?project=myproject_draft_partia', 200) + + self.assertEqual(response_1['count'], 1) + self.assertEqual(response_1['results'][0]['name'], task_draft_1.name) + self.assertEqual(response_2['count'], 1) + self.assertEqual(response_2['results'][0]['name'], task_draft_2.name) + self.assertEqual(response_3['count'], 0) + self.assertEqual(response_4['count'], 2) + self.assertEqual({response_4['results'][0]['name'], response_4['results'][1]['name']}, + {task_draft_1.name, task_draft_2.name}) + class TaskRelationDraftTestCase(unittest.TestCase): @classmethod @@ -2711,6 +2740,39 @@ class TaskBlueprintTestCase(unittest.TestCase): self.assertGreater(response_1['count'], 0) self.assertEqual(response_2['count'], 0) + def test_TaskBlueprint_filters_for_project(self): + """ + Test we can filter on this property, which is explicitly named on the model-specific property filter + """ + # setup + project_1 = models.Project.objects.create(**Project_test_data(name='myproject_partial_1_%s' % uuid.uuid4())) + project_2 = models.Project.objects.create(**Project_test_data(name='myproject_partial_2_%s' % uuid.uuid4())) + scheduling_set_1 = models.SchedulingSet.objects.create(**SchedulingSet_test_data(project=project_1)) + scheduling_set_2 = models.SchedulingSet.objects.create(**SchedulingSet_test_data(project=project_2)) + su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(scheduling_set=scheduling_set_1)) + su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(scheduling_set=scheduling_set_2)) + su_blueprint_1 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(draft=su_draft_1, name='mysub1_%s' % uuid.uuid4())) + su_blueprint_2 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(draft=su_draft_2, name='mysub2_%s' % uuid.uuid4())) + task_draft_1 = models.TaskDraft.objects.create(**TaskDraft_test_data("td_%s" % uuid.uuid4(), scheduling_unit_draft=su_draft_1)) + task_draft_2 = models.TaskDraft.objects.create(**TaskDraft_test_data("td_%s" % uuid.uuid4(), scheduling_unit_draft=su_draft_2)) + task_blueprint_1 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4(), task_draft=task_draft_1, scheduling_unit_blueprint=su_blueprint_1)) + task_blueprint_2 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4(), task_draft=task_draft_2, scheduling_unit_blueprint=su_blueprint_2)) + + # assert + response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?project=%s' % project_1.name, 200) + response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?project=%s' % project_2.name, 200) + response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?project=foo', 200) + response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?project=myproject_partia', 200) + + self.assertEqual(response_1['count'], 1) + self.assertEqual(response_1['results'][0]['name'], task_blueprint_1.name) + self.assertEqual(response_2['count'], 1) + self.assertEqual(response_2['results'][0]['name'], task_blueprint_2.name) + self.assertEqual(response_3['count'], 0) + self.assertEqual(response_4['count'], 2) + self.assertEqual(response_4['results'][0]['name'], task_blueprint_1.name) + self.assertEqual(response_4['results'][1]['name'], task_blueprint_2.name) + class TaskRelationBlueprintTestCase(unittest.TestCase):