Skip to content
Snippets Groups Projects
Commit 7b2b530e authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'move-list-metadata-tests' into 'master'

Move ListElementMetadata tests to test_metadata

See merge request !1494
parents 80c84386 26a7fa68
No related branches found
No related tags found
1 merge request!1494Move ListElementMetadata tests to test_metadata
......@@ -34,7 +34,101 @@ class TestMetaData(FixtureAPITestCase):
self.metadata = self.vol.metadatas.create(type=MetaType.Text, name='folio', value='123')
self.private_metadata = self.private_vol.metadatas.create(type=MetaType.Markdown, name='leet', value='1337')
def test_metadata_forbidden_methods(self):
def test_list(self):
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.metadata.id),
'name': 'folio',
'type': 'text',
'value': '123',
'worker_version': None
},
])
def test_list_public(self):
self.assertTrue(self.corpus.public)
with self.assertNumQueries(2):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.metadata.id),
'name': 'folio',
'type': 'text',
'value': '123',
'worker_version': None
},
])
def test_list_private_requires_login(self):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.private_vol.id)}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_list_with_entity(self):
# Link an entity to metadata, db requests count should remains same
entity = self.corpus.entities.create(
type=EntityType.Person,
name='Marc',
worker_version=self.worker_version,
)
self.vol.metadatas.create(
name='meta',
type=MetaType.Text,
value='text_metadata',
entity=entity,
)
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.metadata.id),
'name': 'folio',
'type': 'text',
'value': '123',
'worker_version': None,
},
])
def test_list_with_worker_version(self):
self.metadata.worker_version = self.worker_version
self.metadata.save()
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.metadata.id),
'name': 'folio',
'type': 'text',
'value': '123',
'worker_version': str(self.worker_version.id),
},
])
def test_list_wrong_acl(self):
self.vol.corpus = self.private_corpus
self.vol.save()
self.client.force_login(self.user)
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_list_wrong_element_id(self):
self.client.force_login(self.user)
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': '12341234-1234-1234-1234-123412341234'}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_metadata_edit_no_post(self):
"""
Only POST method is forbidden
"""
......
......@@ -2,7 +2,7 @@ from django.urls import reverse
from rest_framework import status
from arkindex.dataimport.models import WorkerVersion
from arkindex.documents.models import Corpus, Entity, EntityType, MetaType, MLClass
from arkindex.documents.models import Corpus, MLClass
from arkindex.project.tests import FixtureAPITestCase
......@@ -16,13 +16,8 @@ class TestRetrieveElements(FixtureAPITestCase):
cls.worker_version = WorkerVersion.objects.get(worker__slug='reco')
def setUp(self):
super().setUp()
self.page = self.corpus.elements.get(name='Volume 1, page 1r')
self.folio_metadata = self.page.metadatas.get()
self.metadata = self.page.metadatas.create(
name='meta',
type=MetaType.Text,
value='text_metadata'
)
def test_get_element(self):
ml_class = MLClass.objects.create(name='text', corpus=self.corpus)
......@@ -131,122 +126,3 @@ class TestRetrieveElements(FixtureAPITestCase):
response = self.client.get(reverse('api:element-retrieve', kwargs={'pk': str(self.vol.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.json()['creator'], 'Test user')
def test_list_element_metadata(self):
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.folio_metadata.id),
'name': 'folio',
'type': 'text',
'value': '1r',
'worker_version': None
},
{
'id': str(self.metadata.id),
'name': str(self.metadata.name),
'type': self.metadata.type.value,
'value': self.metadata.value,
'dates': [],
'worker_version': None
},
])
def test_list_element_metadata_public(self):
self.assertTrue(self.corpus.public)
with self.assertNumQueries(2):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.folio_metadata.id),
'name': 'folio',
'type': 'text',
'value': '1r',
'worker_version': None
},
{
'id': str(self.metadata.id),
'name': str(self.metadata.name),
'type': self.metadata.type.value,
'value': self.metadata.value,
'dates': [],
'worker_version': None
},
])
def test_list_element_metadata_private_requires_login(self):
self.page.corpus = self.private_corpus
self.page.save()
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_list_element_metadata_with_entity(self):
# Link an entity to metadata, db requests number should remains same
entity = Entity.objects.create(
type=EntityType.Person,
corpus=self.corpus,
name='Marc',
worker_version=self.worker_version,
)
self.metadata.entity = entity
self.metadata.save()
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.json()), 1)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.folio_metadata.id),
'name': 'folio',
'type': 'text',
'value': '1r',
'worker_version': None,
},
])
def test_list_element_metadata_with_worker_version(self):
self.folio_metadata.worker_version = self.worker_version
self.folio_metadata.save()
self.client.force_login(self.user)
with self.assertNumQueries(6):
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.json()), 2)
self.assertListEqual(response.json(), [
{
'dates': [],
'id': str(self.folio_metadata.id),
'name': 'folio',
'type': 'text',
'value': '1r',
'worker_version': str(self.worker_version.id),
},
{
'id': str(self.metadata.id),
'name': str(self.metadata.name),
'type': self.metadata.type.value,
'value': self.metadata.value,
'dates': [],
'worker_version': None
},
])
def test_list_element_metadata_wrong_acl(self):
self.page.corpus = self.private_corpus
self.page.save()
self.client.force_login(self.user)
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': str(self.page.id)}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_list_element_metadata_wrong_element_id(self):
self.client.force_login(self.user)
response = self.client.get(reverse('api:element-metadata', kwargs={'pk': '12341234-1234-1234-1234-123412341234'}))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
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