Skip to content
Snippets Groups Projects
Commit 89b35800 authored by Erwan Rouchet's avatar Erwan Rouchet
Browse files

Merge branch 'update-metadata-tests' into 'master'

add UpdateMetaData tests

Closes #1031

See merge request !1702
parents 3e96df4d d20a851f
No related branches found
No related tags found
1 merge request!1702add UpdateMetaData tests
......@@ -407,6 +407,141 @@ class TestMetaData(FixtureAPITestCase):
{'__all__': ['Metadata with this type (Text) and name (certainly not allowed) are not allowed for this corpus']}
)
def test_update_metadata(self):
self.client.force_login(self.user)
self.assertEqual(self.metadata.type, MetaType.Text)
self.assertEqual(self.metadata.value, "123")
self.assertEqual(self.metadata.name, "folio")
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={
'type': 'date',
'name': 'date',
'value': '2019-12-04'
}
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertDictEqual(response.json(), {
'dates': [{'day': 4, 'month': 12, 'type': 'exact', 'year': 2019}],
'id': str(self.metadata.id),
'name': 'date',
'type': 'date',
'value': '2019-12-04',
'entity': None,
'worker_version': None,
'worker_run_id': None
})
self.metadata.refresh_from_db()
self.assertEqual(self.metadata.type, MetaType.Date)
self.assertEqual(self.metadata.name, 'date')
self.assertEqual(self.metadata.value, '2019-12-04')
def test_update_metadata_incomplete(self):
"""
UpdateMetaData requires type, name and value to be set
"""
self.client.force_login(self.user)
self.assertEqual(self.metadata.type, MetaType.Text)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={
'type': 'date',
'name': 'date',
}
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertDictEqual(response.json(), {"value": ["This field is required."]})
def test_update_metadata_disallowed(self):
self.client.force_login(self.user)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={
'type': 'date',
'name': 'death of William I, Count of Hainaut',
'value': '1337'
}
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertDictEqual(
response.json(),
{'__all__': ['Edition of metadata with this type (Date) and name (death of William I, Count of Hainaut) is not allowed for this corpus']}
)
def test_update_metadata_from_any_internal(self):
metadata = self.vol.metadatas.create(type=MetaType.Location, name='not editable', value='111,222')
self.client.force_login(self.internal_user)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(metadata.id)}),
data={'type': 'text', 'name': 'I got you', 'value': 'patched !'}
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
metadata.refresh_from_db()
self.assertEqual(metadata.value, 'patched !')
def test_update_metadata_to_any_internal(self):
self.client.force_login(self.internal_user)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={'type': 'text', 'name': 'death of William I, Count of Hainaut', 'value': '1337'}
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.metadata.refresh_from_db()
self.assertEqual(self.metadata.name, 'death of William I, Count of Hainaut')
self.assertEqual(self.metadata.value, '1337')
def test_update_metadata_wrong_type(self):
self.client.force_login(self.user)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={
'type': 'joke',
'name': 'what is my name ?',
'value': 'i have no name, im a machine'
}
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertDictEqual(response.json(), {'type': ['Value is not of type MetaType']})
def test_update_metadata_duplicated(self):
"""
UpdateMetaData should not allow creating duplicated metadata
"""
metadata = self.vol.metadatas.create(type=MetaType.Location, name='location', value='111,222')
self.client.force_login(self.user)
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(metadata.id)}),
data={'type': 'text', 'name': self.metadata.name, 'value': self.metadata.value}
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertDictEqual(response.json(), {
'detail': ['This metadata already exists.'],
'id': str(self.metadata.id),
})
def test_update_metadata_worker_version(self):
"""
UpdateMetaData should not allow updating the worker version ID
"""
self.assertIsNone(self.metadata.worker_version_id)
self.client.force_login(self.superuser)
with self.assertNumQueries(5):
response = self.client.put(
reverse('api:metadata-edit', kwargs={'pk': str(self.metadata.id)}),
data={'name': 'hello', 'type': 'text', 'value': 'buenos dias', 'worker_version': str(self.worker_version.id)}
)
# DRF should ignore the field silently
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertIsNone(data['worker_version'])
self.metadata.refresh_from_db()
self.assertIsNone(self.metadata.worker_version_id)
self.assertEqual(self.metadata.name, 'hello')
self.assertEqual(self.metadata.type, MetaType.Text)
self.assertEqual(self.metadata.value, 'buenos dias')
def test_patch_metadata(self):
self.client.force_login(self.user)
self.assertEqual(self.metadata.type, MetaType.Text)
......
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