diff --git a/wagtail/api/v2/endpoints.py b/wagtail/api/v2/endpoints.py index 5d974d3eb..b045140ce 100644 --- a/wagtail/api/v2/endpoints.py +++ b/wagtail/api/v2/endpoints.py @@ -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 diff --git a/wagtail/api/v2/tests/test_documents.py b/wagtail/api/v2/tests/test_documents.py index 7a88d8c91..d6d6f6995 100644 --- a/wagtail/api/v2/tests/test_documents.py +++ b/wagtail/api/v2/tests/test_documents.py @@ -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):