From d68988348f3c1308187b95c3a06720038df0a6f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?= <jkuensem@physik.uni-bielefeld.de> Date: Wed, 11 Jul 2018 16:33:05 +0000 Subject: [PATCH] Task LSMR-14: Reverted previously disimproved paths so that we have a working and contained package again; fixed model tests for new choices --- SAS/LSMR/src/lsmr/CMakeLists.txt | 2 +- SAS/LSMR/src/lsmr/lsmrapp/CMakeLists.txt | 2 +- .../lsmr/lsmrapp/migrations/CMakeLists.txt | 2 +- .../src/lsmr/lsmrapp/models/CMakeLists.txt | 2 +- .../src/lsmr/lsmrapp/models/specification.py | 2 +- .../lsmr/lsmrapp/serializers/CMakeLists.txt | 2 +- .../src/lsmr/lsmrapp/viewsets/CMakeLists.txt | 2 +- SAS/LSMR/test/t_lsmrapp_models.py | 55 +++++++++++-------- 8 files changed, 38 insertions(+), 31 deletions(-) diff --git a/SAS/LSMR/src/lsmr/CMakeLists.txt b/SAS/LSMR/src/lsmr/CMakeLists.txt index 4f8c3d83ba9..55ad4bf485a 100644 --- a/SAS/LSMR/src/lsmr/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/CMakeLists.txt @@ -9,6 +9,6 @@ set(_py_files ) python_install(${_py_files} - DESTINATION lofar/sas/lsmr) + DESTINATION lofar/sas/lsmr/lsmr) add_subdirectory(lsmrapp) diff --git a/SAS/LSMR/src/lsmr/lsmrapp/CMakeLists.txt b/SAS/LSMR/src/lsmr/lsmrapp/CMakeLists.txt index 86a623341ff..4da7d6e44e2 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/lsmrapp/CMakeLists.txt @@ -9,7 +9,7 @@ set(_py_files ) python_install(${_py_files} - DESTINATION lofar/sas/lsmr/lsmrapp) + DESTINATION lofar/sas/lsmr/lsmr/lsmrapp) add_subdirectory(migrations) diff --git a/SAS/LSMR/src/lsmr/lsmrapp/migrations/CMakeLists.txt b/SAS/LSMR/src/lsmr/lsmrapp/migrations/CMakeLists.txt index 2ac092bdd6d..9915ff16653 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/migrations/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/lsmrapp/migrations/CMakeLists.txt @@ -5,4 +5,4 @@ include(PythonInstall) FILE(GLOB _py_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py) python_install(${_py_files} - DESTINATION lofar/sas/lsmr/lsmrapp/migrations) \ No newline at end of file + DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/migrations) \ No newline at end of file diff --git a/SAS/LSMR/src/lsmr/lsmrapp/models/CMakeLists.txt b/SAS/LSMR/src/lsmr/lsmrapp/models/CMakeLists.txt index 0af75d8b170..ddb94230c05 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/models/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/lsmrapp/models/CMakeLists.txt @@ -7,4 +7,4 @@ set(_py_files ) python_install(${_py_files} - DESTINATION lofar/sas/lsmr/lsmrapp/models) + DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/models) diff --git a/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py b/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py index c3cb9aabbf3..933b8c8dc5d 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py +++ b/SAS/LSMR/src/lsmr/lsmrapp/models/specification.py @@ -123,7 +123,7 @@ class CopyReasonChoice(AbstractChoice): class WorkIORoles(Model): role = ForeignKey('RoleChoice', null=False, on_delete=CASCADE) datatype = ForeignKey('DatatypeChoice', null=False, on_delete=CASCADE) - dataformat = ForeignKey('DataformatChoice', null=False, on_delete=CASCADE) + dataformat = ForeignKey('DataformatChoice', null=False, on_delete=CASCADE) # todo: <--- this needs to be an array of dataformats! outputs = ForeignKey("WorkRequestTemplate", related_name='role_output', on_delete=CASCADE, null=True) inputs = ForeignKey("WorkRequestTemplate", related_name='role_input', on_delete=CASCADE, null=True) diff --git a/SAS/LSMR/src/lsmr/lsmrapp/serializers/CMakeLists.txt b/SAS/LSMR/src/lsmr/lsmrapp/serializers/CMakeLists.txt index f4158794d56..c1cdf544c20 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/serializers/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/lsmrapp/serializers/CMakeLists.txt @@ -8,4 +8,4 @@ set(_py_files ) python_install(${_py_files} - DESTINATION lofar/sas/lsmr/lsmrapp/serializers) + DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/serializers) diff --git a/SAS/LSMR/src/lsmr/lsmrapp/viewsets/CMakeLists.txt b/SAS/LSMR/src/lsmr/lsmrapp/viewsets/CMakeLists.txt index 7c551c2273d..65ce74a51a2 100644 --- a/SAS/LSMR/src/lsmr/lsmrapp/viewsets/CMakeLists.txt +++ b/SAS/LSMR/src/lsmr/lsmrapp/viewsets/CMakeLists.txt @@ -7,4 +7,4 @@ set(_py_files ) python_install(${_py_files} - DESTINATION lofar/sas/lsmr/lsmrapp/viewsets) + DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/viewsets) diff --git a/SAS/LSMR/test/t_lsmrapp_models.py b/SAS/LSMR/test/t_lsmrapp_models.py index c906eecf115..f29f619c98d 100755 --- a/SAS/LSMR/test/t_lsmrapp_models.py +++ b/SAS/LSMR/test/t_lsmrapp_models.py @@ -21,8 +21,10 @@ import unittest import rest_framework.test +from lsmr.lsmrapp.populate import populate_choices from lsmr.lsmrapp import models + from django.utils import timezone # can't use datetime due to offset-awareness client = rest_framework.test.APIClient() @@ -360,35 +362,42 @@ class WorkIORolesTest(rest_framework.test.APITransactionTestCase): reset_sequences = True - # test data - test_data_1 = {"role": "CALIBRATOR", - "datatype": "INSTRUMENT_MODEL", - "dataformat": ['HDF5'], - "outputs": None, - "inputs": None, - } - - test_data_2 = {"role": "TARGET", - "datatype": "VISIBILITIES", - "dataformat": ['MEASUREMENTSET'], - "outputs": None, - "inputs": None, - } - def setUp(self): - pass - + populate_choices(None, None) + + # test data + self.test_data_1 = {"role": models.RoleChoice.objects.get(value='calibrator'), + "datatype": models.DatatypeChoice.objects.get(value='instrument model'), + "dataformat": models.DataformatChoice.objects.get(value='HDF5'), + "outputs": None, + "inputs": None} + + self.test_data_2 = {"role": models.RoleChoice.objects.get(value='target'), + "datatype": models.DatatypeChoice.objects.get(value='image'), + "dataformat": models.DataformatChoice.objects.get(value='MeasurementSet'), + "outputs": None, + "inputs": None} + + def assertDataWithUrls(self, data, expected): + """ + object instances get returned as urls, check that the value is part of that url + """ + for k, v in expected.items(): + if isinstance(v, models.AbstractChoice): + v = v.value.replace(' ', '%20') + self.assertTrue(v in data[k]) + else: + self.assertEqual(v, data[k]) def test_GET_WorkIORoles_list_view_shows_entry(self): # setup - entry = models.WorkIORoles.objects.create(**self.test_data_1) + models.WorkIORoles.objects.create(**self.test_data_1) # assert response = client.get('/work_io_roles/', format='json', follow=True) self.assertEqual(response.status_code, 200) - for item in self.test_data_1.items(): - self.assertIn(item, response.data[0].items()) + self.assertDataWithUrls(response.data[0], self.test_data_1) def test_GET_WorkIORoles_view_returns_correct_entry(self): @@ -401,10 +410,8 @@ class WorkIORolesTest(rest_framework.test.APITransactionTestCase): response2 = client.get('/work_io_roles/%s/' % id2, format='json', follow=True) self.assertEqual(response1.status_code, 200) self.assertEqual(response2.status_code, 200) - for item in self.test_data_1.items(): - self.assertIn(item, response1.data.items()) - for item in self.test_data_2.items(): - self.assertIn(item, response2.data.items()) + self.assertDataWithUrls(response1.data, self.test_data_1) + self.assertDataWithUrls(response2.data, self.test_data_2) @unittest.skip("Database does not enforce choices currently") def test_WorkIORoles_prevents_invalid_role(self): -- GitLab