collective.portaltabs usage: add entry
=======================================

Setup:

>>> from pyquery import PyQuery
>>> from plone.testing.z2 import Browser
>>> app = layer['app']
>>> portal = layer['portal']
>>> browser = Browser(app)
>>> browser.handleErrors = False

Now login:

>>> browser.open(portal.portal_url() + '/login_form')
>>> browser.getControl(name='__ac_name').value = 'sa_user'
>>> browser.getControl(name='__ac_password').value = 'secret'
>>> browser.getControl(name='submit').click()

Add values
-----------

Go the the tabs management:

>>> browser.open(portal.portal_url() + '/@@manage-portaltabs')

Now adding a new portal tab.

>>> browser.getControl(name='title').value = 'Accessibility info page'
>>> browser.getControl(name='url').value = '/accessibility-info'
>>> browser.getControl('Add').click()
>>> 'Tab added' in browser.contents
True

Testing the added tab:

>>> pq = PyQuery(browser.contents)
>>> pq('#portal-globalnav #portaltab-accessibility-info-page').text()
'Accessibility info page'
>>> browser.getLink('Accessibility info page').click()
>>> browser.url == portal.portal_url() + '/accessibility-info'
True

Id is mandatory, but can be used:

>>> browser.open(portal.portal_url() + '/@@manage-portaltabs')
>>> browser.getControl(name='title').value = 'My preferences'
>>> browser.getControl(name='url').value = '/@@personal-preferences'
>>> browser.getControl(name='id').value = 'mypref'
>>> browser.getControl('Add').click()
>>> 'Tab added' in browser.contents
True

Testing the added tab:

>>> pq = PyQuery(browser.contents)
>>> pq('#portal-globalnav #portaltab-mypref').text()
'My preferences'
>>> browser.getLink('My preferences').click()
>>> browser.url == portal.portal_url() + '/@@personal-preferences'
True

Add validation
---------------

There are required data.

Title is required:

>>> browser.open(portal.portal_url() + '/@@manage-portaltabs')
>>> browser.getControl(name='title').value = ''
>>> browser.getControl(name='url').value = 'foo'
>>> browser.getControl('Add').click()
>>> 'Please correct the indicated errors.' in browser.contents
True
>>> 'Title field is required, please provide it.' in browser.contents
True

But any URL value provided is kept:

>>> browser.getControl(name='url').value
'foo'

Also URL is required:

>>> browser.open(portal.portal_url() + '/@@manage-portaltabs')
>>> browser.getControl(name='title').value = 'bar'
>>> browser.getControl(name='url').value = ''
>>> browser.getControl('Add').click()
>>> 'Please correct the indicated errors.' in browser.contents
True
>>> 'URL field is required, please provide it.' in browser.contents
True

But any title value provided is kept:

>>> browser.getControl(name='title').value
'bar'

