Calendar control panel
======================

First some initial setup code:

    >>> from Products.CMFCore.utils import getToolByName
    >>> ctool = getToolByName(self.portal, 'portal_calendar')
    >>> self.loginAsManager()

Viewing the calendar control panel
----------------------------------

    >>> self.browser.open('http://nohost/plone/@@calendar-controlpanel')
    >>> self.browser.url
    'http://nohost/plone/@@calendar-controlpanel'

Click the save button without making any changes:

    >>> self.browser.getControl(name="form.actions.save").click()
    >>> self.browser.url.endswith('calendar-controlpanel')
    True

We should get a status message:

    >>> 'No changes made.' in self.browser.contents
    True

Now click the cancel button:

    >>> self.browser.getControl(name="form.actions.cancel").click()
    >>> self.browser.url.endswith('plone_control_panel')
    True

There should be still no changes:

    >>> 'Changes canceled.' in self.browser.contents
    True

Make some changes
-----------------

    >>> self.browser.open('http://nohost/plone/@@calendar-controlpanel')
    >>> self.browser.url.endswith('calendar-controlpanel')
    True

    >>> self.browser.getControl(name='form.firstweekday').value = ['6']

Click the save button:

    >>> self.browser.getControl(name="form.actions.save").click()
    >>> self.browser.url.endswith('calendar-controlpanel')
    True

We should be informed that something has changed:

    >>> 'Changes saved.' in self.browser.contents
    True

Make sure the changes have been applied correctly to the tool:

    >>> ctool.firstweekday
    6

Different Locale
----------------

Lets emulate a different locale, to be able to get the weekday names
in the native language. We'll use Brazilian Portuguese, of course... ;-)

    >>> from plone.app.controlpanel import widgets
    >>> PT_BR = ((u'Segunda', 0),
    ...          (u'Terça', 1),
    ...          (u'Quarta', 2),
    ...          (u'Quinta', 3),
    ...          (u'Sexta', 4),
    ...          (u'Sábado', 5),
    ...          (u'Domingo', 6))
    >>> widgets.WEEKDAYS = PT_BR

An int field with a fake context.

    >>> from zope.schema import Int
    >>> field = Int(title=u'Day of week')
    >>> field.context = object()

We need a request too.

    >>> from zope.publisher.browser import TestRequest
    >>> request = TestRequest()

Now create the widget itself and access a localized term.

    >>> widget = widgets.WeekdayWidget(field, request)
    >>> term = widget.vocabulary.getTerm(3)
    >>> term.title
    u'Quinta'
