Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Verify that we can create FormFolder under portal::

    >>> browser.open('/')
    >>> browser.getLink(id='formfolder').url.endswith("createObject?type_name=FormFolder")
    True

Verify that we can not add PFGSelectionStringField under portal::

    >>> browser.getLink(id='pfgselectionstringfield').url.endswith("createObject?type_name=PFGSelectionStringField")
    Traceback (most recent call last):
    ...
    LinkNotFoundError

Verify that we can create PFGSelectionStringField under Form Folder::

    >>> browser.open(form_url)
    >>> browser.getLink(id='pfgselectionstringfield').url.endswith("createObject?type_name=PFGSelectionStringField")
    True

Add PFGSelectionStringField::

    >>> browser.getLink(id='pfgselectionstringfield').click()

Check that there is proper description for the option input::

    >>> print browser.bycss('#fgVocabulary_help')
    --- 1 ---
    <span class="formHelp" id="fgVocabulary_help">Use one line per option. Format: 'value|label|description'.</span>

    >>> browser.getControl(name='title').value = "Selection String Field"
    >>> browser.getControl(name="fgVocabulary:lines").value = 'aaa\nbbb|BBB\nccc|CCC|Description of C\näää\nooo|ÖÖÖ\naoa|ÅÅÅ|Descripion of Å\näöå|ÄÖÅ|Description of ÄÖÅ'
    >>> browser.getControl(name="fgFormat").value = ['radio']
    >>> browser.getControl('Save').click()

    >>> 'type="radio"' in browser.contents
    True
    >>> 'value="aaa"' in browser.contents
    True
    >>> 'value="bbb"' in browser.contents
    True
    >>> 'BBB' in browser.contents
    True
    >>> 'value="ccc"' in browser.contents
    True
    >>> 'CCC' in browser.contents
    True
    >>> 'Description of C' in browser.contents
    True
    >>> 'name="selection-string-field_ccc"' in browser.contents
    True
    >>> field = form['selection-string-field']
    >>> field_url = field.absolute_url()

Hide Field::

    >>> browser.open(field_url)
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="hidden:boolean").value = 'on'
    >>> browser.getControl("Save").click()
    >>> browser.url
    'http://nohost/plone/form/selection-string-field/view'
    >>> 'name="selection-string-field_ccc"' in browser.contents
    False

Uncheck Hidden and change field type to select::

    >>> browser.open(field_url)
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="hidden:boolean").value = ''
    >>> browser.getControl(name="fgFormat").value = ['select']
    >>> browser.getControl("Save").click()
    >>> browser.url
    'http://nohost/plone/form/selection-string-field/view'
    >>> '<option value="aaa">aaa</option>' in browser.contents
    True
    >>> '<option value="bbb">BBB</option>' in browser.contents
    True
    >>> '<option value="ccc">CCC</option>' in browser.contents
    True
    >>> '<option value="äää">äää</option>' in browser.contents
    True
    >>> '<option value="ooo">ÖÖÖ</option>' in browser.contents
    True
    >>> '<option value="aoa">ÅÅÅ</option>' in browser.contents
    True
    >>> '<option value="äöå">ÄÖÅ</option>' in browser.contents
    True
    >>> 'name="selection-string-field_SELECT"' in browser.contents
    True

Change field type to flex::

    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="fgFormat").value = ['flex']
    >>> browser.getControl("Save").click()
    >>> browser.open(field_url)
    >>> '<option value="aaa">aaa</option>' in browser.contents
    True
    >>> '<option value="bbb">BBB</option>' in browser.contents
    True
    >>> '<option value="ccc">CCC</option>' in browser.contents
    True
    >>> '<option value="äää">äää</option>' in browser.contents
    True
    >>> '<option value="ooo">ÖÖÖ</option>' in browser.contents
    True
    >>> '<option value="aoa">ÅÅÅ</option>' in browser.contents
    True
    >>> '<option value="äöå">ÄÖÅ</option>' in browser.contents
    True
    >>> 'name="selection-string-field_SELECT"' in browser.contents
    True
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="fgFormat").value = ['radio']
    >>> browser.getControl("Save").click()

Log out and submit::

    >>> browser.getLink('Log out').click()
    >>> browser.open(field_url)

Submit without selecting anything::

    >>> browser.getControl(name="form_submit").click()
    >>> 'No Input' in browser.contents
    True

Submit with selection::

    >>> browser.open(field_url)
    >>> browser.getControl(name="selection-string-field").value = ['aaa']
    >>> browser.getControl(name="form_submit").click()
    >>> 'aaa' in browser.contents
    True
    >>> browser.open(field_url)
    >>> browser.getControl(name="selection-string-field").value = ['bbb']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'BBB' in browser.contents
    False
    >>> 'Some Description' not in browser.contents
    True
    >>> browser.open(field_url)
    >>> browser.getControl(name="selection-string-field").value = ['ccc']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'CCC' in browser.contents
    False
    >>> 'Some Description' not in browser.contents
    True

Go to Form::

    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['aaa']
    >>> browser.getControl(name="form_submit").click()
    >>> 'aaa' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['bbb']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'BBB' in browser.contents
    False
    >>> 'Some Description' in browser.contents
    False

Log in and add thank you page to Form Folder::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

    >>> browser.open(form_url)
    >>> browser.getLink(id="formthankspage").click()
    >>> browser.getControl(name="title").value = 'thank-you'
    >>> browser.getControl('Save').click()
    >>> browser.open(form_url)
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="thanksPage").value = ['thank-you']
    >>> browser.getControl('Save').click()

Log out and go to Form Folder::

    >>> browser.open('/')
    >>> browser.getLink('Log out').click()
    >>> browser.open(form_url)

    >>> browser.getControl(name="selection-string-field").value = ['bbb']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()

    >>> 'BBB' in browser.contents
    True
    >>> 'Some Description' in browser.contents
    False

    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['ccc']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'CCC' in browser.contents
    True
    >>> 'Some Description' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['ccc']
    >>> browser.getControl(name="selection-string-field_ccc").value = 'Some Description ÄÖÅ'
    >>> browser.getControl(name="form_submit").click()
    >>> 'CCC' in browser.contents
    True
    >>> 'Some Description ÄÖÅ' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['äää']
    >>> browser.getControl(name="form_submit").click()
    >>> 'äää' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['ooo']
    >>> browser.getControl(name="form_submit").click()
    >>> 'ÖÖÖ' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['aoa']
    >>> browser.getControl(name="selection-string-field_aoa").value = 'Some Description ÄÖÅ'
    >>> browser.getControl(name="form_submit").click()
    >>> 'ÅÅÅ' in browser.contents
    True
    >>> 'Some Description ÄÖÅ' in browser.contents
    True
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['äöå']
    >>> browser.getControl(name="selection-string-field_äöå").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'ÄÖÅ' in browser.contents
    True
    >>> 'Some Description' in browser.contents
    False

Log in and select select instead of radio::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

    >>> browser.open(field_url)
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="fgFormat").value = ['select']
    >>> browser.getControl("Save").click()

Log out and go to Form Folder::

    >>> browser.open('/')
    >>> browser.getLink('Log out').click()
    >>> browser.open(form_url)
    >>> browser.getControl(name="selection-string-field").value = ['bbb']
    >>> browser.getControl(name="selection-string-field_SELECT").value = 'Some Description'
    >>> browser.getControl(name="form_submit").click()
    >>> 'BBB' in browser.contents
    True
    >>> 'Some Description' in browser.contents
    True
