Skip to content

Commit

Permalink
Browser test for the roster edit form
Browse files Browse the repository at this point in the history
  • Loading branch information
mattss committed Jun 11, 2014
1 parent bea218b commit faf282e
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/ploneintranet/workspace/browser/roster-edit.pt
Expand Up @@ -38,7 +38,7 @@
/>
<input type="submit"
id="edit-roster-search-button"
name="form.button.Search"
name="form.button.SearchUsers"
value="Search users"
class="searchButton allowMultiSubmit"
i18n:attributes="value label_search"
Expand Down
21 changes: 21 additions & 0 deletions src/ploneintranet/workspace/tests/base.py
@@ -1,11 +1,15 @@
from collective.workspace.interfaces import IWorkspace
import unittest2 as unittest
from plone.testing import z2
from plone.testing.z2 import Browser
from plone.app.testing.interfaces import SITE_OWNER_NAME
from plone.app.testing.interfaces import SITE_OWNER_PASSWORD
from plone.app.testing import login
from Products.CMFCore.utils import getToolByName
from ploneintranet.workspace.testing import \
PLONEINTRANET_WORKSPACE_INTEGRATION_TESTING
from ploneintranet.workspace.testing import \
PLONEINTRANET_WORKSPACE_FUNCTIONAL_TESTING
from zope.annotation.interfaces import IAnnotations


Expand Down Expand Up @@ -54,3 +58,20 @@ def add_user_to_workspace(self, username, workspace, groups=None):
groups=groups,
)
IAnnotations(self.request)[('workspaces', username)] = None


class FunctionalBaseTestCase(BaseTestCase):

layer = PLONEINTRANET_WORKSPACE_FUNCTIONAL_TESTING

def setUp(self):
super(FunctionalBaseTestCase, self).setUp()
self.browser = Browser(self.app)
self.browser.handleErrors = False

def browser_login_as_site_administrator(self):
self.browser.open(self.portal.absolute_url() + '/login_form')
self.browser.getControl(name='__ac_name').value = SITE_OWNER_NAME
self.browser.getControl(name='__ac_password').value = \
SITE_OWNER_PASSWORD
self.browser.getControl(name='submit').click()
51 changes: 48 additions & 3 deletions src/ploneintranet/workspace/tests/test_roster.py
@@ -1,7 +1,10 @@
from collective.workspace.interfaces import IHasWorkspace
from plone import api
from ploneintranet.workspace.tests.base import BaseTestCase
from ploneintranet.workspace.tests.base import FunctionalBaseTestCase
from zope.component import getMultiAdapter
from zExceptions import Forbidden
from collective.workspace.interfaces import IWorkspace


class TestRoster(BaseTestCase):
Expand Down Expand Up @@ -71,6 +74,20 @@ def test_index(self):
html
)

def test_handle_form(self):
self.request.form['form.submitted'] = True
self.request.form['form.button.Save'] = True
view = getMultiAdapter(
(self.workspace, self.request),
name='edit-roster'
)
# This will give forbidden - see browser test
# for further tests of this
self.assertRaises(
Forbidden,
view.handle_form,
)

def test_existing_users(self):
view = getMultiAdapter(
(self.workspace, self.request),
Expand Down Expand Up @@ -135,7 +152,6 @@ def test_update_users_remove_admin(self):
]

view.update_users(settings)
from collective.workspace.interfaces import IWorkspace
members = IWorkspace(self.workspace).members
self.assertIn(
'wsadmin',
Expand All @@ -159,7 +175,6 @@ def test_update_users_remove_member(self):
]

view.update_users(settings)
from collective.workspace.interfaces import IWorkspace
members = IWorkspace(self.workspace).members
self.assertNotIn(
'wsmember',
Expand All @@ -179,9 +194,39 @@ def test_update_users_add_member(self):
]

view.update_users(settings)
from collective.workspace.interfaces import IWorkspace
members = IWorkspace(self.workspace).members
self.assertIn(
'wsmember2',
members
)


class TestEditRosterForm(FunctionalBaseTestCase):

def setUp(self):
super(TestEditRosterForm, self).setUp()
self.login_as_portal_owner()
api.user.create(username='wsmember', email="member@test.com")
workspace_folder = api.content.create(
self.portal,
'ploneintranet.workspace.workspacefolder',
'example-workspace')
self.workspace = workspace_folder

# Commit so the testbrowser can see the workspace
import transaction
transaction.commit()

def test_edit_roster_form(self):
self.browser_login_as_site_administrator()
self.browser.open('%s/@@edit-roster' % self.workspace.absolute_url())
self.browser.getControl(name='search_term').value = 'wsmember'
self.browser.getControl(name='form.button.SearchUsers').click()
# make sure both admin checkboxes are selected
self.browser.getControl(name='entries.admin:records').value = \
['1', '1']
self.browser.getControl(name='form.button.Save').click()

# wsmember should now be an admin
self.assertIn('Admins',
IWorkspace(self.workspace).get('wsmember').groups)

0 comments on commit faf282e

Please sign in to comment.