Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Go to Site Setup::

    >>> browser.open('/@@overview-controlpanel')

There should be two setting links::

    >>> 'Social Button Code Setting' in browser.contents
    True

    >>> 'Social Button Configuration' in browser.contents
    True

Go to Social Button Configuration should show warning message::

    >>> browser.getLink('Social Button Configuration').click()

    >>> 'Please add code for social button first.' in browser.contents
    True

Go to Social Button Code Setting and add button::

    >>> browser.open('/@@social-button-code-controlpanel')

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button1'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button1 />'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> print browser.bycss('#crud-edit-button1-widgets-code_id')
    --- 1 ---
    <span id="crud-edit-button1-widgets-code_id" class="text-widget required textline-field">button1</span>

    >>> print browser.bycss('#crud-edit-button1-widgets-code_text')
    --- 1 ---
    <textarea id="crud-edit-button1-widgets-code_text" name="crud-edit.button1.widgets.code_text" class="textarea-widget required text-field" cols="70">&lt;button1 /&gt;</textarea>

Adding button with same ID will override the current values:

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button1'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button2 portal_url=${portal_url} url=${url} lang=${lang} lang_country=${lang_country}>Button2</button2>'


    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> print browser.bycss('#crud-edit-button1-widgets-code_id')
    --- 1 ---
    <span id="crud-edit-button1-widgets-code_id" class="text-widget required textline-field">button1</span>

    >>> print browser.bycss('#crud-edit-button1-widgets-code_text')
     --- 1 ---
     <textarea id="crud-edit-button1-widgets-code_text" name="crud-edit.button1.widgets.code_text" class="textarea-widget required text-field" cols="70">&lt;button2 portal_url=${portal_url} url=${url} lang=${lang} lang_country=${lang_country}&gt;Button2&lt;/button2&gt;</textarea>

Add another button::

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button3'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button3 />'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

Add one more button add delete two buttons::

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button4'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button4 />'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> 'button3' in browser.contents
    True
    >>> 'button4' in browser.contents
    True

Update button3::

    >>> print browser.bycss('#crud-edit-button3-widgets-code_text')
    --- 1 ---
    <textarea id="crud-edit-button3-widgets-code_text" name="crud-edit.button3.widgets.code_text" class="textarea-widget required text-field" cols="70">&lt;button3 /&gt;</textarea>

    >>> browser.getControl(name="crud-edit.button3.widgets.code_text").value = '<button3>Button3</button3>'
    >>> browser.getControl(name="crud-edit.form.buttons.edit").click()

    >>> print browser.bycss('#crud-edit-button3-widgets-code_text')
    --- 1 ---
    <textarea id="crud-edit-button3-widgets-code_text" name="crud-edit.button3.widgets.code_text" class="textarea-widget required text-field" cols="70">&lt;button3&gt;Button3&lt;/button3&gt;</textarea>

    >>> browser.getControl(name="crud-edit.button3.widgets.select:list").value = True
    >>> browser.getControl(name="crud-edit.button4.widgets.select:list").value = True
    >>> browser.getControl(name="crud-edit.form.buttons.delete").click()

    >>> 'button3' in browser.contents
    False
    >>> 'button4' in browser.contents
    False

Add two other buttons again::

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button3'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button3>Button3 ${title}: ${description}</button3>'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> browser.getControl(name="crud-add.form.widgets.code_id").value = 'button4'
    >>> browser.getControl(name="crud-add.form.widgets.code_text").value = '<button4>Button4</button4>'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

Go to Social Button Configuration again::

    >>> browser.open('/@@social-button-config-controlpanel')
    >>> print browser.bycss('#crud-add-form-widgets-code_id')
    --- 1 ---
    <select id="crud-add-form-widgets-code_id" name="crud-add.form.widgets.code_id:list" class="select-widget required choice-field" size="1"><option id="crud-add-form-widgets-code_id-0" value="button3">button3</option><option id="crud-add-form-widgets-code_id-1" value="button1">button1</option><option id="crud-add-form-widgets-code_id-2" value="button4">button4</option></select>

    >>> print browser.bycss('#crud-add-form-widgets-content_types')
    --- 1 ---
    <select id="crud-add-form-widgets-content_types" name="crud-add.form.widgets.content_types:list" class="select-widget required set-field" multiple size="5"><option id="crud-add-form-widgets-content_types-0" value="*" selected>All Types</option><option id="crud-add-form-widgets-content_types-1" value="Collection">Collection</option><option id="crud-add-form-widgets-content_types-2" value="Topic">Collection (old-style)</option><option id="crud-add-form-widgets-content_types-3" value="Discussion Item">Comment</option><option id="crud-add-form-widgets-content_types-4" value="Event">Event</option><option id="crud-add-form-widgets-content_types-5" value="File">File</option><option id="crud-add-form-widgets-content_types-6" value="Folder">Folder</option><option id="crud-add-form-widgets-content_types-7" value="Image">Image</option><option id="crud-add-form-widgets-content_types-8" value="Link">Link</option><option id="crud-add-form-widgets-content_types-9" value="News Item">News Item</option><option id="crud-add-form-widgets-content_types-10" value="Document">Page</option><option id="crud-add-form-widgets-content_types-11" value="Plone Site">Plone Site</option></select>

Add three configuration::

    >>> browser.getControl(name="crud-add.form.widgets.code_id:list").value = ['button1']
    >>> browser.getControl(name="crud-add.form.widgets.content_types:list").value = ['Document']
    >>> browser.getControl(name="crud-add.form.widgets.viewlet_manager").value = 'plone.belowcontent\nplone.abovecontent'
    >>> browser.getControl(name="crud-add.form.widgets.view_models").value = 'document_view'
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> browser.getControl(name="crud-add.form.widgets.code_id:list").value = ['button3']
    >>> browser.getControl(name="crud-add.form.widgets.content_types:list").value = ['Document']
    >>> browser.getControl(name="crud-add.form.widgets.viewlet_manager").value = 'plone.belowcontent'
    >>> browser.getControl(name="crud-add.form.widgets.view_models").value = 'document_view'
    >>> browser.getControl(name="crud-add.form.widgets.view_permission_only:list").value = False
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

    >>> browser.getControl(name="crud-add.form.widgets.code_id:list").value = ['button4']
    >>> browser.getControl(name="crud-add.form.widgets.content_types:list").value = ['Document']
    >>> browser.getControl(name="crud-add.form.widgets.viewlet_manager").value = 'plone.belowcontent'
    >>> browser.getControl(name="crud-add.form.widgets.view_models").value = 'document_view'
    >>> browser.getControl(name="crud-add.form.widgets.enabled:list").value = False
    >>> browser.getControl(name="crud-add.form.buttons.add").click()

Go to Döcument1::

    >>> browser.open('/doc1')
    >>> print browser.bycss('#button1')

    >>> print browser.bycss('#button3')
    --- 1 ---
    <li id="button3">
    <button3>Button3 D&#246;cument1: Descripti&#246;n of D&#246;cument1.</button3></li>

    >>> print browser.bycss('#button4')

Publish::

    >>> browser.getLink('Publish').click()
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')
    --- 1 ---
    <li id="button3">
    <button3>Button3 D&#246;cument1: Descripti&#246;n of D&#246;cument1.</button3></li>

    >>> print browser.bycss('#button4')

Go to edit view should not show any buttons::

    >>> browser.open('/doc1/edit')
    >>> print browser.bycss('#button1')

    >>> print browser.bycss('#button3')

Log out and go to doc1 with anoymous::

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

    >>> browser.open('/doc1')
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')
    --- 1 ---
    <li id="button3">
    <button3>Button3 D&#246;cument1: Descripti&#246;n of D&#246;cument1.</button3></li>

Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Concigure to change content types::

    >>> browser.open('/@@social-button-config-controlpanel')
    >>> browser.getControl(name="crud-edit.button3.widgets.content_types:list").value = ['Folder']
    >>> browser.getControl(name="crud-edit.form.buttons.edit").click()

    >>> browser.open('/doc1')
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')

Configure to change view model::

    >>> browser.open('/@@social-button-config-controlpanel')
    >>> browser.getControl(name="crud-edit.button3.widgets.content_types:list").value = ['Document']
    >>> browser.getControl(name="crud-edit.button3.widgets.view_models").value = 'some-view'
    >>> browser.getControl(name="crud-edit.form.buttons.edit").click()

    >>> browser.open('/doc1')
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')

Configure to uncheck view permission only::

    >>> browser.open('/@@social-button-config-controlpanel')
    >>> browser.getControl(name="crud-edit.button3.widgets.view_models").value = 'document_view'
    >>> browser.getControl(name="crud-edit.button3.widgets.view_permission_only:list").value = True
    >>> browser.getControl(name="crud-edit.form.buttons.edit").click()

Unpublish doc1::

    >>> browser.open('/doc1')
    >>> browser.getLink('Send back').click()
    >>> print browser.bycss('#button1')

    >>> print browser.bycss('#button3')

Publish doc1 again and check for the actin buttons::

    >>> browser.getLink('Publish').click()
    >>> 'Hide social buttons' in browser.contents
    True
    >>> 'Show social buttons' in browser.contents
    False
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')
    --- 1 ---
    <li id="button3">
    <button3>Button3 D&#246;cument1: Descripti&#246;n of D&#246;cument1.</button3></li>

    >>> browser.getLink('Hide social buttons').click()
    >>> 'Hide social buttons' in browser.contents
    False
    >>> 'Show social buttons' in browser.contents
    True
    >>> print browser.bycss('#button1')

    >>> print browser.bycss('#button3')

    >>> browser.getLink('Show social buttons').click()
    >>> 'Hide social buttons' in browser.contents
    True
    >>> 'Show social buttons' in browser.contents
    False
    >>> print browser.bycss('#button1')
    --- 1 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>
    --- 2 ---
    <li id="button1">
    <button2 portal_url="http://nohost/plone" url="http://nohost/plone/doc1" lang="en" lang_country="en_US">Button2</button2></li>

    >>> print browser.bycss('#button3')
    --- 1 ---
    <li id="button3">
    <button3>Button3 D&#246;cument1: Descripti&#246;n of D&#246;cument1.</button3></li>
