Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Add Folder1 without SKU should give error message::

    >>> browser.open('/++add++collective.behavior.sku.Folder')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Folder1'
    >>> browser.getControl(name="form.buttons.save").click()
    >>> 'Required input is missing.' in browser.contents
    True

Giving SKU should be alright::

    >>> browser.getControl(name="form.widgets.ISKU.sku").value = 'SKU1'
    >>> browser.getControl(name="form.buttons.save").click()
    >>> print browser.bycss('#form-widgets-ISKU-sku')
    --- 1 ---
    <span id="form-widgets-ISKU-sku" class="text-widget textline-field">SKU1</span>

Edit Folder1 with the same SKU::

    >>> browser.open('/folder1/edit')
    >>> browser.getControl(name="form.buttons.save").click()
    >>> 'The SKU is already in use.' in browser.contents
    False

Add Folder2 with the same SKU should be rejected::

    >>> browser.open('/++add++collective.behavior.sku.Folder')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Folder2'
    >>> browser.getControl(name="form.widgets.ISKU.sku").value = 'SKU1'
    >>> browser.getControl(name="form.buttons.save").click()
    >>> browser.url
    'http://nohost/plone/++add++collective.behavior.sku.Folder'
    >>> 'The SKU is already in use.' in browser.contents
    True

Giving different SKU should be alright::

    >>> browser.getControl(name="form.widgets.ISKU.sku").value = 'SKU2'
    >>> browser.getControl(name="form.buttons.save").click()
    >>> print browser.bycss('#form-widgets-ISKU-sku')
    --- 1 ---
    <span id="form-widgets-ISKU-sku" class="text-widget textline-field">SKU2</span>

Giving existing SKU should be rejected::

    >>> browser.open('/folder2/edit')
    >>> browser.getControl(name="form.widgets.ISKU.sku").value = 'SKU1'
    >>> browser.getControl(name="form.buttons.save").click()
    >>> browser.url
    'http://nohost/plone/folder2/@@edit'
    >>> 'The SKU is already in use.' in browser.contents
    True