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

Task LSMR-14: Reverted previously disimproved paths so that we have a working...

Task LSMR-14: Reverted previously disimproved paths so that we have a working and contained package again; fixed model tests for new choices
parent 4d331955
No related branches found
No related tags found
1 merge request!87Lsmr epic
......@@ -9,6 +9,6 @@ set(_py_files
)
python_install(${_py_files}
DESTINATION lofar/sas/lsmr)
DESTINATION lofar/sas/lsmr/lsmr)
add_subdirectory(lsmrapp)
......@@ -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)
......
......@@ -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
......@@ -7,4 +7,4 @@ set(_py_files
)
python_install(${_py_files}
DESTINATION lofar/sas/lsmr/lsmrapp/models)
DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/models)
......@@ -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)
......
......@@ -8,4 +8,4 @@ set(_py_files
)
python_install(${_py_files}
DESTINATION lofar/sas/lsmr/lsmrapp/serializers)
DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/serializers)
......@@ -7,4 +7,4 @@ set(_py_files
)
python_install(${_py_files}
DESTINATION lofar/sas/lsmr/lsmrapp/viewsets)
DESTINATION lofar/sas/lsmr/lsmr/lsmrapp/viewsets)
......@@ -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):
......
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