Testing the personal preferences form
=====================================

Viewing the personal preferences
--------------------------------

This is about the 'personal-preferences' view.

    >>> view_name = '@@personal-preferences'

Viewing user data shouldn't be possible for anonymous users:

    >>> self.browser.open("http://nohost/plone/" + view_name)
    >>> 'Login Name' in self.browser.contents
    True

So let's login as Plone user:
    >>> self.browser.open('http://nohost/plone/')
    >>> self.browser.getLink('Log in').click()
    >>> self.browser.getControl('Login Name').value = 'test_user_1_'
    >>> self.browser.getControl('Password').value = 'secret'
    >>> self.browser.getControl('Log in').click()

Now we should be able to access the user data panel:

    >>> self.browser.open("http://nohost/plone/" + view_name)
    >>> 'Login Name' in self.browser.contents
    False
    >>> self.browser.url.endswith(view_name)
    True

We have two controls, one for the start page and one for the language:

    >>> self.browser.getControl(name='form.wysiwyg_editor').value
    ['']
    >>> self.browser.getControl(name='form.ext_editor').value
    False
    >>> self.browser.getControl(name='form.listed').value
    True
    >>> self.browser.getControl(name='form.language').value
    ['']

Now we click the cancel button:

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

There should be no changes at all:

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

Modifying values
----------------

    >>> self.browser.open('http://nohost/plone/' + view_name)
    >>> self.browser.getControl(name='form.wysiwyg_editor').value = ['TinyMCE']
    >>> self.browser.getControl(name='form.ext_editor').value = True
    >>> self.browser.getControl(name='form.listed').value = True
    >>> self.browser.getControl(name='form.language').value = ['en']
    >>> self.browser.getControl(name="form.actions.save").click()
    >>> 'Changes saved' in self.browser.contents
    True

Verify that the settings have actually been
changed:

    >>> member = self.membership.getMemberById('test_user_1_')
    >>> marker = object
    >>> member.getProperty('wysiwyg_editor', object)
    'TinyMCE'
    >>> member.getProperty('ext_editor', object)
    True
    >>> member.getProperty('listed', object)
    True
    >>> member.getProperty('language', object)
    'en'

And that the form still has the according values:

    >>> self.browser.getControl(name='form.wysiwyg_editor').value
    ['TinyMCE']
    >>> self.browser.getControl(name='form.ext_editor').value
    True
    >>> self.browser.getControl(name='form.listed').value
    True
    >>> self.browser.getControl(name='form.language').value
    ['en']


Clearing values
---------------

Making an input empty should result in a stored empty string.

    >>> self.browser.open('http://nohost/plone/' + view_name)
    >>> self.browser.getControl(name='form.wysiwyg_editor').value = ['']
    >>> self.browser.getControl(name='form.ext_editor').value = False
    >>> self.browser.getControl(name='form.listed').value = False
    >>> self.browser.getControl(name='form.language').value = ['']
    >>> self.browser.getControl(name="form.actions.save").click()
    >>> 'Changes saved' in self.browser.contents
    True

Verify that the settings have actually been
changed:

    >>> member = self.membership.getMemberById('test_user_1_')
    >>> marker = object
    >>> member.getProperty('wysiwyg_editor', object)
    ''
    >>> member.getProperty('ext_editor', object)
    False
    >>> member.getProperty('listed', object)
    False
    >>> member.getProperty('language', object)
    ''

And that the form still has the according values:

    >>> self.browser.getControl(name='form.wysiwyg_editor').value
    ['']
    >>> self.browser.getControl(name='form.ext_editor').value
    False
    >>> self.browser.getControl(name='form.listed').value
    False
    >>> self.browser.getControl(name='form.language').value
    ['']
