Made document tags a meta field

This commit is contained in:
Karl Hobley 2016-02-24 12:41:33 +00:00
parent c2045ccd79
commit 945728f9e1
2 changed files with 10 additions and 7 deletions

View file

@ -263,5 +263,6 @@ class DocumentsAPIEndpoint(BaseAPIEndpoint):
base_serializer_class = DocumentSerializer
filter_backends = [FieldsFilter, OrderingFilter, SearchFilter]
extra_api_fields = ['title', 'tags']
meta_fields = ['tags']
name = 'documents'
model = Document

View file

@ -48,7 +48,7 @@ class TestDocumentListing(TestCase):
for document in content['items']:
self.assertIn('meta', document)
self.assertIsInstance(document['meta'], dict)
self.assertEqual(set(document['meta'].keys()), {'type', 'detail_url', 'download_url'})
self.assertEqual(set(document['meta'].keys()), {'type', 'detail_url', 'download_url', 'tags'})
# Type should always be wagtaildocs.Document
self.assertEqual(document['meta']['type'], 'wagtaildocs.Document')
@ -67,7 +67,8 @@ class TestDocumentListing(TestCase):
content = json.loads(response.content.decode('UTF-8'))
for document in content['items']:
self.assertEqual(set(document.keys()), {'id', 'meta', 'title', 'tags'})
self.assertEqual(set(document.keys()), {'id', 'meta', 'title'})
self.assertEqual(set(document['meta'].keys()), {'type', 'detail_url', 'download_url', 'tags'})
def test_fields(self):
response = self.get_response(fields='title')
@ -75,13 +76,14 @@ class TestDocumentListing(TestCase):
for document in content['items']:
self.assertEqual(set(document.keys()), {'id', 'meta', 'title'})
self.assertEqual(set(document['meta'].keys()), {'type', 'detail_url', 'download_url'})
def test_fields_tags(self):
response = self.get_response(fields='tags')
content = json.loads(response.content.decode('UTF-8'))
for document in content['items']:
self.assertIsInstance(document['tags'], list)
self.assertIsInstance(document['meta']['tags'], list)
def test_fields_which_are_not_in_api_fields_gives_error(self):
response = self.get_response(fields='uploaded_by_user')
@ -329,8 +331,8 @@ class TestDocumentDetail(TestCase):
self.assertEqual(content['title'], "Wagtail by mark Harkin")
# Check the tags field
self.assertIn('tags', content)
self.assertEqual(content['tags'], [])
self.assertIn('tags', content['meta'])
self.assertEqual(content['meta']['tags'], [])
def test_tags(self):
Document.objects.get(id=1).tags.add('hello')
@ -339,8 +341,8 @@ class TestDocumentDetail(TestCase):
response = self.get_response(1)
content = json.loads(response.content.decode('UTF-8'))
self.assertIn('tags', content)
self.assertEqual(content['tags'], ['hello', 'world'])
self.assertIn('tags', content['meta'])
self.assertEqual(content['meta']['tags'], ['hello', 'world'])
@override_settings(WAGTAILAPI_BASE_URL='http://api.example.com/')
def test_download_url_with_custom_base_url(self):