Skip to content
Snippets Groups Projects
Commit ee55ab7a authored by Jörn Künsemöller's avatar Jörn Künsemöller
Browse files

TMSS-888: Improve test coverage

parent b5044aec
No related branches found
No related tags found
3 merge requests!634WIP: COBALT commissioning delta,!538Resolve TMSS-888,!481Draft: SW-971 SW-973 SW-975: Various fixes to build LOFAR correctly.
......@@ -28,7 +28,7 @@
# We should probably also fully test behavior wrt mandatory and nullable fields.
from dateutil import parser
from datetime import datetime
from datetime import datetime, timedelta
import unittest
import logging
logger = logging.getLogger('lofar.'+__name__)
......@@ -1517,8 +1517,8 @@ class SchedulingUnitDraftTestCase(unittest.TestCase):
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='myproject1_%s' % uuid.uuid4()))
project_2 = models.Project.objects.create(**Project_test_data(name='myproject2_%s' % uuid.uuid4()))
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))
......@@ -1528,14 +1528,128 @@ class SchedulingUnitDraftTestCase(unittest.TestCase):
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?project=%s' % project_1.name, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?project=%s' % project_2.name, 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?project=foo', 200)
response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?project=myproject_draft_partia', 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['count'], 1)
self.assertEqual(response_2['results'][0]['name'], su_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']},
{su_draft_1.name, su_draft_2.name})
def test_GET_SchedulingUnitDraft_view_filters_for_id(self):
"""
Test we can filter on this field, which is explicitly named on the model-specific property filter
"""
# setup
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4()))
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4()))
su_draft_3 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud3_%s' % uuid.uuid4()))
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?id=%s' % su_draft_1.id, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?id=%s,%s' % (su_draft_1.id, su_draft_3.id), 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?id=%s' % 999999, 200)
response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?id_min=%s&id_max=%s' % (su_draft_2.id, su_draft_3.id), 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['results'][1]['name'], su_draft_3.name)
self.assertEqual(response_3['count'], 0)
self.assertEqual(response_4['count'], 2)
self.assertEqual(response_4['results'][0]['name'], su_draft_2.name)
self.assertEqual(response_4['results'][1]['name'], su_draft_3.name)
def test_GET_SchedulingUnitDraft_view_filters_for_blueprints(self):
"""
Test we can filter on this related field, which is explicitly named on the model-specific property filter
"""
# setup
models.SchedulingUnitBlueprint.objects.all().delete()
models.SchedulingUnitDraft.objects.all().delete()
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4()))
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4()))
su_draft_3 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud3_%s' % uuid.uuid4()))
su_blueprint_1 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub1_%s' % uuid.uuid4(), draft=su_draft_1))
su_blueprint_2 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub2_%s' % uuid.uuid4(), draft=su_draft_2))
su_blueprint_3 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub3_%s' % uuid.uuid4(), draft=su_draft_3))
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?scheduling_unit_blueprints=%s' % su_blueprint_1.id, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?scheduling_unit_blueprints=%s&scheduling_unit_blueprints=%s' % (su_blueprint_1.id, su_blueprint_3.id), 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?scheduling_unit_blueprints=%s' % 999999, 400)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['results'][1]['name'], su_draft_3.name)
self.assertIn('Select a valid choice', str(response_3))
def test_GET_SchedulingUnitDraft_view_filters_for_priority_rank(self):
"""
Test we can filter on this property, which is explicitly named on the model-specific property filter
"""
# setup
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4()), priority_rank=0.111)
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4()), priority_rank=0.222)
su_draft_3 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud3_%s' % uuid.uuid4()), priority_rank=0.333)
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?priority_rank_min=%s&priority_rank_max=%s' % (0.110, 0.112), 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?priority_rank_min=%s&priority_rank_max=%s' % (0.2, 0.4), 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_draft_2.name)
self.assertEqual(response_2['results'][1]['name'], su_draft_3.name)
@unittest.skip('todo: fix this test')
def test_GET_SchedulingUnitDraft_view_filters_for_duration(self):
"""
Test we can filter on this property, which is explicitly named on the model-specific property filter
"""
# setup
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4()))
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4()))
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?duration_min=%s&duration_max=%s' % ('1000', '2000'), 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?duration_min=%s&duration_max=%s' % ('-1', '1000'), 200)
self.assertEqual(response_1['count'], 0)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['results'][1]['name'], su_draft_2.name)
def test_GET_SchedulingUnitDraft_view_filters_for_pointing(self):
"""
Test we can filter on this property, which is explicitly named on the model-specific property filter
"""
# setup
strategy_template = models.SchedulingUnitObservingStrategyTemplate.objects.get(name="Simple Observation")
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4(), observation_strategy_template=strategy_template))
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4(), observation_strategy_template=strategy_template))
su_draft_1.requirements_doc = {'tasks': {'Target Observation': {'specifications_doc': {'SAPs': [{'digital_pointing': {'angle1': 0.333, 'angle2': 0.999, 'direction_type': 'J2000'}}]}}}}
su_draft_1.save()
su_draft_2.requirements_doc = {'tasks': {'Target Observation': {'specifications_doc': {'SAPs': [{'digital_pointing': {'angle1': 0.111, 'angle2': 0.777, 'direction_type': 'J2000'}}]}}}}
su_draft_2.save()
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?angle1_min=%s' % 0.222, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?angle2_max=%s' % 0.888, 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_draft_1.name)
self.assertEqual(response_2['count'], 1)
self.assertEqual(response_2['results'][0]['name'], su_draft_2.name)
class TaskDraftTestCase(unittest.TestCase):
......@@ -2063,8 +2177,8 @@ class SchedulingUnitBlueprintTestCase(unittest.TestCase):
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='myproject1_%s' % uuid.uuid4()))
project_2 = models.Project.objects.create(**Project_test_data(name='myproject2_%s' % uuid.uuid4()))
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))
......@@ -2076,12 +2190,16 @@ class SchedulingUnitBlueprintTestCase(unittest.TestCase):
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?project=%s' % project_1.name, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?project=%s' % project_2.name, 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?project=foo', 200)
response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?project=myproject_partia', 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_2['count'], 1)
self.assertEqual(response_2['results'][0]['name'], su_blueprint_2.name)
self.assertEqual(response_3['count'], 0)
self.assertEqual(response_4['count'], 2)
self.assertEqual(response_4['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_4['results'][1]['name'], su_blueprint_2.name)
def test_GET_SchedulingUnitBlueprint_view_filters_for_output_pinned(self):
"""
......@@ -2103,6 +2221,66 @@ class SchedulingUnitBlueprintTestCase(unittest.TestCase):
self.assertEqual(response_false['count'], 1)
self.assertEqual(response_false['results'][0]['name'], su_blueprint_false.name)
def test_GET_SchedulingUnitBlueprint_view_filters_for_draft(self):
"""
Test we can filter on this property, which is explicitly named on the model-specific property filter
"""
# setup
su_draft_1 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud1_%s' % uuid.uuid4()))
su_draft_2 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud2_%s' % uuid.uuid4()))
su_draft_3 = models.SchedulingUnitDraft.objects.create(**SchedulingUnitDraft_test_data(name='sud3_%s' % uuid.uuid4()))
su_blueprint_1 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub1_%s' % uuid.uuid4()))
su_blueprint_2 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub2_%s' % uuid.uuid4()))
su_blueprint_3 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub3_%s' % uuid.uuid4()))
su_blueprint_1.draft = su_draft_1
su_blueprint_1.save()
su_blueprint_2.draft = su_draft_2
su_blueprint_2.save()
su_blueprint_3.draft = su_draft_3
su_blueprint_3.save()
# assertresponse_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_draft/?scheduling_unit_blueprints=%s' % 999999, 200)
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?draft=%s' % su_draft_1.id, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?draft=%s,%s' % (su_draft_1.id, su_draft_3.id), 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?draft=%s' % 999999, 400)
response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?draft_min=%s&draft_max=%s' % (su_draft_2.id, su_draft_3.id), 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_2['results'][1]['name'], su_blueprint_3.name)
self.assertIn('Select a valid choice', str(response_3))
self.assertEqual(response_4['count'], 2)
self.assertEqual(response_4['results'][0]['name'], su_blueprint_2.name)
self.assertEqual(response_4['results'][1]['name'], su_blueprint_3.name)
def test_GET_SchedulingUnitBlueprint_view_filters_for_id(self):
"""
Test we can filter on this field, which is explicitly named on the model-specific property filter
"""
# setup
su_blueprint_1 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub1_%s' % uuid.uuid4()))
su_blueprint_2 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub2_%s' % uuid.uuid4()))
su_blueprint_3 = models.SchedulingUnitBlueprint.objects.create(**SchedulingUnitBlueprint_test_data(name='sub3_%s' % uuid.uuid4()))
# assert
response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?id=%s' % su_blueprint_1.id, 200)
response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?id=%s,%s' % (su_blueprint_1.id, su_blueprint_3.id), 200)
response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?id=%s' % 999999, 200)
response_4 = GET_and_assert_equal_expected_code(self, BASE_URL + '/scheduling_unit_blueprint/?id_min=%s&id_max=%s' % (su_blueprint_2.id, su_blueprint_3.id), 200)
self.assertEqual(response_1['count'], 1)
self.assertEqual(response_1['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_2['count'], 2)
self.assertEqual(response_2['results'][0]['name'], su_blueprint_1.name)
self.assertEqual(response_2['results'][1]['name'], su_blueprint_3.name)
self.assertEqual(response_3['count'], 0)
self.assertEqual(response_4['count'], 2)
self.assertEqual(response_4['results'][0]['name'], su_blueprint_2.name)
self.assertEqual(response_4['results'][1]['name'], su_blueprint_3.name)
class TaskBlueprintTestCase(unittest.TestCase):
@classmethod
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment