===============
WYSIWYG Support
===============

Setup
-----

Get a browser.

    >>> from Products.Five.testbrowser import Browser
    >>> browser = Browser()

Unhide exceptions.

    >>> self.portal.error_log._ignored_exceptions = ()

Go to the portal root.

    >>> portal_url = self.portal.absolute_url()
    >>> browser.open(portal_url + '/login_form')

Get an account and login via the login form.

    >>> from Products.PloneTestCase.setup import portal_owner, default_password
    >>> browser.getControl(name='__ac_name').value = portal_owner
    >>> browser.getControl(name='__ac_password').value = default_password
    >>> browser.getControl(name='submit').click()

Create a blank page for test edits. (front-page is too noisy.)

    >>> testpage = self.folder.absolute_url() + '/' + self.folder.invokeFactory('Document', 'testpage') + '/edit'
    >>> print(testpage)
    http://nohost/plone/Members/test_user_1_/testpage/edit

Set up personalize_form

    >>> personalizer = portal_url + '/personalize_form'
    >>> print(personalizer)
    http://nohost/plone/personalize_form
    >>> browser.open(personalizer)
    >>> browser.getControl(name='email').value = 'test@example.org'
    >>> browser.getControl(name='form.button.Save').click()
    >>> print(browser.contents)
    <!DOCTYPE html PUBLIC ...
    <dd>Your personal settings have been saved.</dd> ...

Test different editors
----------------------

Change to Basic HTML textarea.

    >>> browser.open(personalizer)
    >>> browser.getControl(name='wysiwyg_editor').value = ['None']
    >>> browser.getControl(name='form.button.Save').click()
    >>> print(browser.contents)
    <!DOCTYPE html PUBLIC ...
    <dd>Your personal settings have been saved.</dd> ...

Test basic editor.

    >>> browser.open(testpage)
    >>> print(browser.contents)
    <!DOCTYPE html PUBLIC ...
    <textarea name="text" rows="25" id="text"></textarea> ...

Change to TinyMCE.

    >>> browser.open(personalizer)
    >>> browser.getControl(name='wysiwyg_editor').value = ['TinyMCE']
    >>> browser.getControl(name='form.button.Save').click()
    >>> print(browser.contents)
    <!DOCTYPE html PUBLIC ...
    <dd>Your personal settings have been saved.</dd> ...

Double-check.

    >>> browser.getControl(name='wysiwyg_editor').value
    ['TinyMCE']

Test TinyMCE.

    >>> browser.open(testpage)
    >>> print(browser.contents)
    <!DOCTYPE html PUBLIC ...
    <script type="text/javascript">
    tinymce.dom.Event.add(window, 'load', function(e) { var config = new TinyMCEConfig('text'); config.init(); });</script> ...

