plone.restapi/plone-only-login: Add a few functional tests for expansion.
Timo Stollenwerk <jenkins-z4DKO/[email protected]> Wed, 26 Jul 2017 07:46:07 -0700 (PDT)
| Newsgroups | gmane.comp.web.zope.plone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Repository: plone.restapi Branch: refs/heads/plone-only-login Date: 2017-07-26T15:40:50+02:00 Author: Timo Stollenwerk (tisto) <tisto-z4DKO/[email protected]> Commit: https://github.com/plone/plone.restapi/commit/349068e1544b954d39e038a7761076020310e820 Add a few functional tests for expansion. Files changed: M src/plone/restapi/tests/test_expansion.py diff --git a/src/plone/restapi/tests/test_expansion.py b/src/plone/restapi/tests/test_expansion.py index 51193401..5d5ceafb 100644 --- a/src/plone/restapi/tests/test_expansion.py +++ b/src/plone/restapi/tests/test_expansion.py @@ -1,4 +1,11 @@ # -*- coding: utf-8 -*- +from plone.app.testing import setRoles +from plone.app.testing import SITE_OWNER_NAME +from plone.app.testing import SITE_OWNER_PASSWORD +from plone.app.testing import TEST_USER_ID +from plone.dexterity.utils import createContentInContainer +from plone.restapi.testing import PLONE_RESTAPI_DX_FUNCTIONAL_TESTING +from plone.restapi.testing import RelativeSession from plone.restapi.interfaces import IExpandableElement from plone.restapi.serializer.expansion import expandable_elements from zope.component import provideAdapter @@ -6,6 +13,7 @@ from zope.publisher.browser import TestRequest from zope.publisher.interfaces.browser import IBrowserRequest +import transaction import unittest @@ -68,3 +76,126 @@ def test_expansion_returns_multiple_expanded_elements(self): self.assertEqual( {'@components': {'bar': 'expanded', 'foo': 'expanded'}}, expandable_elements(None, request)) + + +class TestExpansionFunctional(unittest.TestCase): + + layer = PLONE_RESTAPI_DX_FUNCTIONAL_TESTING + + def setUp(self): + self.app = self.layer['app'] + self.portal = self.layer['portal'] + self.portal_url = self.portal.absolute_url() + setRoles(self.portal, TEST_USER_ID, ['Manager']) + + self.api_session = RelativeSession(self.portal_url) + self.api_session.headers.update({'Accept': 'application/json'}) + self.api_session.auth = (SITE_OWNER_NAME, SITE_OWNER_PASSWORD) + + self.folder = createContentInContainer( + self.portal, u'Folder', + id=u'folder', + title=u'Some Folder') + transaction.commit() + + def test_navigation_is_expandable(self): + response = self.api_session.get('/folder') + + self.assertEqual(response.status_code, 200) + self.assertIn( + 'navigation', + response.json().get('@components').keys() + ) + + def test_navigation_expanded(self): + response = self.api_session.get( + '/folder', + params={ + "expand": "navigation" + } + ) + self.assertEqual(response.status_code, 200) + self.assertEqual( + [ + { + u'title': u'Home', + u'url': u'http://localhost:55001/plone' + }, + { + u'title': u'Some Folder', + u'url': u'http://localhost:55001/plone/folder' + } + ], + response.json()['@components']['navigation']['items'] + ) + + def test_breadcrumbs_is_expandable(self): + response = self.api_session.get('/folder') + + self.assertEqual(response.status_code, 200) + self.assertIn( + 'breadcrumbs', + response.json().get('@components').keys() + ) + + def test_breadcrumbs_expanded(self): + response = self.api_session.get( + '/folder', + params={ + "expand": "breadcrumbs" + } + ) + self.assertEqual(response.status_code, 200) + self.assertEqual( + [ + { + u'title': u'Some Folder', + u'url': u'http://localhost:55001/plone/folder' + } + ], + response.json()['@components']['breadcrumbs']['items'] + ) + + def test_workflow_is_expandable(self): + response = self.api_session.get('/folder') + + self.assertEqual(response.status_code, 200) + self.assertIn( + 'workflow', + response.json().get('@components').keys() + ) + + def test_workflow_expanded(self): + response = self.api_session.get( + '/folder', + params={ + "expand": "workflow" + } + ) + + self.assertEqual(response.status_code, 200) + self.assertEqual( + u'http://localhost:55001/plone/folder/@workflow', + response.json().get('@components').get('workflow').get('@id') + ) + self.assertEqual( + u'private', + response.json()['@components']['workflow']['history'][0]['review_state'] # noqa + ) + self.assertEqual( + u'Private', + response.json()['@components']['workflow']['history'][0]['title'] + ) + self.assertEqual( + [ + { + u'@id': u'http://localhost:55001/plone/folder/@workflow/publish', # noqa + u'title': u'Publish' + }, + { + u'@id': u'http://localhost:55001/plone/folder/@workflow/submit', # noqa + u'title': u'Submit for publication' + } + ], + response.json()['@components']['workflow']['transitions'] + ) ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot