Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Change the display to folder_listing to make portal_url context portal::

    >>> browser.open('/selectViewTemplate?templateId=folder_listing')

    >>> 'Make Shopping Site' in browser.contents
    True
    >>> 'Unmake Shopping Site' in browser.contents
    False

    >>> browser.open('/cart-container')
    Traceback (most recent call last):
    ...
    HTTPError: HTTP Error 404: Not Found

Make Shopping Site::

    >>> browser.open('/')
    >>> browser.getLink('Make Shopping Site').click()

    >>> 'Make Shopping Site' in browser.contents
    False
    >>> 'Unmake Shopping Site' in browser.contents
    True

    >>> browser.open('/cart-container')
    >>> print browser.bycss('#next-cart-id')
    --- 1 ---
    <p id="next-cart-id">The next cart ID: 1</p>

    >>> print browser.bycss('#no-carts')
    --- 1 ---
    <p id="no-carts">There are no carts.</p>

    >>> print browser.bycss('#cart-list')

Unmake Shopping Site::

    >>> browser.open('/')
    >>> browser.getLink('Unmake Shopping Site').click()

    >>> 'Make Shopping Site' in browser.contents
    True
    >>> 'Unmake Shopping Site' in browser.contents
    False

    >>> browser.open('/cart-container')
    >>> print browser.bycss('#next-cart-id')
    --- 1 ---
    <p id="next-cart-id">The next cart ID: 1</p>

    >>> print browser.bycss('#no-carts')
    --- 1 ---
    <p id="no-carts">There are no carts.</p>

    >>> print browser.bycss('#cart-list')

Make Shopping Site once again::

    >>> browser.open('/')
    >>> browser.getLink('Make Shopping Site').click()

    >>> 'Make Shopping Site' in browser.contents
    False
    >>> 'Unmake Shopping Site' in browser.contents
    True

There should only be one Cart Container::

    >>> browser.open('/cart-container-1')
    Traceback (most recent call last):
    ...
    HTTPError: HTTP Error 404: Not Found

Deleting Cart Container Unmake Shopping Site::

    >>> browser.open('/cart-container/delete_confirmation')
    >>> browser.getControl('Delete').click()

    >>> 'This container is no longer a shopping site.' in browser.contents
    True

    >>> browser.open('/cart-container')
    Traceback (most recent call last):
    ...
    HTTPError: HTTP Error 404: Not Found

Make Shopping Site once again::

    >>> browser.open('/')
    >>> 'Make Shopping Site' in browser.contents
    True
    >>> 'Unmake Shopping Site' in browser.contents
    False

    >>> browser.getLink('Make Shopping Site').click()

    >>> 'Make Shopping Site' in browser.contents
    False
    >>> 'Unmake Shopping Site' in browser.contents
    True

Add Article::

    >>> browser.open('/++add++collective.cart.core.Article')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Ärticle01'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Ärticle01'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> article01_url = browser.url

Publish the Article::

    >>> browser.getLink('Publish').click()

    >>> 'Add To Cart' in browser.contents
    True

Make not salable::

    >>> browser.open(article01_url)
    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="form.widgets.ISalable.salable:list").value = False
    >>> browser.getControl(name="form.buttons.save").click()

    >>> 'Add To Cart' in browser.contents
    False

Make salable and Unmake Shopping Site:

    >>> browser.getLink('Edit').click()
    >>> browser.getControl(name="form.widgets.ISalable.salable:list").value = True
    >>> browser.getControl(name="form.buttons.save").click()
    >>> browser.open('/')
    >>> browser.getLink('Unmake Shopping Site').click()
    >>> browser.open(article01_url)

    >>> 'Add To Cart' in browser.contents
    False

Make Shopping Site once again::

    >>> browser.open('/')
    >>> browser.getLink('Make Shopping Site').click()


Cart should be empty::

    >>> browser.open('/@@cart')
    >>> 'Cart is empty' in browser.contents
    True

Add Article01 To Cart::

    >>> browser.open('/article01')
    >>> 'Add To Cart' in browser.contents
    True
    >>> browser.getControl(name="form.addtocart").click()

Check Cart Container::

    >>> browser.open('/cart-container')
    >>> print browser.bycss('#next-cart-id')
    --- 1 ---
    <p id="next-cart-id">The next cart ID: 2</p>

    >>> print browser.bycss('#no-carts')

    >>> print browser.bycss('#cart-list')
    --- 1 ---
    <table id="cart-list"><thead><tr><td>Cart ID</td>
    <td>State</td>
    <td>Last Modified</td>
    </tr></thead><tbody><tr><td class="cart-id">
    <a href="http://nohost/plone/cart-container/1">1</a>
    </td>
    <td class="cart-state">created</td>
    <td class="cart-modified">...</td>
    </tr></tbody></table>

    >>> browser.open('/cart-container/1')
    >>> print browser.bycss('#cart-content')
    --- 1 ---
    <section id="cart-content"><h1>Cart ID: 1</h1>
    <table id="article-list"><thead><tr><td>ID</td>
    <td>Name</td>
    </tr></thead><tbody><tr><td class="article-id">1</td>
    <td class="article-title">
    <a href="http://nohost/plone/article01">&#196;rticle01</a>
    </td>
    </tr></tbody></table></section>

Check cart::

    >>> browser.open('/@@cart')
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <a href="http://nohost/plone/article01">&#196;rticle01</a>
    </td>

Go to Cart Container and save next cart ID with existing cart ID::

    >>> browser.open('/cart-container/edit')

    >>> 'The cart ID is already in use.' in browser.contents
    False

    >>> browser.getControl(name="form.widgets.next_cart_id").value = '1'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> 'The cart ID is already in use.' in browser.contents
    True

Save with non-existing cart ID:

    >>> browser.getControl(name="form.widgets.next_cart_id").value = '2'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> 'The cart ID is already in use.' in browser.contents
    False

Go to Article::

    >>> browser.open('/article01')

Add To Cart::

    >>> browser.getControl(name="form.addtocart").click()


Go to see Cart Container::

    >>> browser.open('/cart-container')
    >>> print browser.bycss('#next-cart-id')
    --- 1 ---
    <p id="next-cart-id">The next cart ID: 2</p>

Add Ärticle02::

    >>> browser.open('/++add++collective.cart.core.Article')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Ärticle02'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Ärticle02'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> browser.getControl(name="form.addtocart").click()

Check cart::

    >>> browser.open('/@@cart')
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <a href="http://nohost/plone/article01">&#196;rticle01</a>
    </td>
    --- 2 ---
    <td class="name">
    <a href="http://nohost/plone/article02">&#196;rticle02</a>
    </td>

Remove Ärticle02::

    >>> browser.open('/article02/delete_confirmation')
    >>> browser.getControl('Delete').click()

    >>> 'rticle02 has been deleted.' in browser.contents
    True

Check cart::

    >>> browser.open('/@@cart')
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <a href="http://nohost/plone/article01">&#196;rticle01</a>
    </td>
    --- 2 ---
    <td class="name">
    &#196;rticle02
    </td>

    >>> print browser.bycss('.delete')
    --- 1 ---
    <td class="delete">
    <button class="standalone" name="form.delete.article" type="submit" value="1">Delete</button>
    </td>
    --- 2 ---
    <td class="delete">
    <button class="standalone" name="form.delete.article" type="submit" value="2">Delete</button>
    </td>

Delete Ärticle02::

    >>> browser.getControl(name="form.delete.article", index=1).click()
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <a href="http://nohost/plone/article01">&#196;rticle01</a>
    </td>

Delete Ärticle01::

    >>> browser.getControl(name="form.delete.article").click()

    >>> print browser.bycss('.name')

    >>> browser.open('/@@cart')

    >>> 'Cart is empty' in browser.contents
    True

Go to Cart ID 1::

    >>> browser.open('/cart-container/1')
    >>> print browser.bycss('#cart-content')
    --- 1 ---
    <section id="cart-content"><h1>Cart ID: 1</h1>
    <p id="no-articles">There are no articles within this cart.</p>
    </section>
