Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

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

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

Make Folder 'Shop' into Shop::

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

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

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

    >>> browser.open('/shop/shipping-methods')

Add Article::

    >>> browser.open('/shop/++add++collective.cart.core.Article')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Ärticle1'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Ärticle1'
    >>> browser.getControl(name="form.widgets.IDiscount.price").value = '12.30'
    >>> browser.getControl(name="form.widgets.ISize.weight").value = '100.0'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> article1_url = browser.url

    >>> print browser.bycss('.documentFirstHeading')
    --- 1 ---
    <h1 class="documentFirstHeading">&#196;rticle1</h1>

    >>> print browser.bycss('.documentDescription')
    --- 1 ---
    <p class="documentDescription">Description of &#196;rticle1</p>

    >>> print browser.bycss('.sold-out')
    --- 1 ---
    <p class="sold-out">Sold Out</p>

Add Stock to Ärticle1::

    >>> browser.open('/shop/article1/++add++collective.cart.stock.Stock')
    >>> browser.getControl(name="form.widgets.IBasic.title").value = 'Stöck1'
    >>> browser.getControl(name="form.widgets.IBasic.description").value = 'Description of Stöck1'
    >>> browser.getControl(name="form.widgets.stock").value = '100'
    >>> browser.getControl( name="form.widgets.IPrice.price").value = '0.0'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> stock1_url = browser.url

Go to Ärticle1::

    >>> browser.open(article1_url)

    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article1/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="100" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

    >>> '12.30 €' in browser.contents
    True

    >>> print browser.bycss('.sold-out')

    >>> article1 = portal['shop']['article1']
    >>> article1.gross_money
    12.30 EUR
    >>> article1.vat_money
    2.30 EUR
    >>> article1.net_money
    10.00 EUR

    >>> query = {'quantity': '1', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)

    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article1/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="99" size="2"><datalist id="numbers"><option value="1">...<option value="99">99</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

Check Stöck1::

    >>> browser.open(stock1_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">99</span>

Check Cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('#cart')
    --- 1 ---
    <section id="cart"><h1>Cart</h1>
    <section><table class="listing"><tbody><form method="post" action="http://nohost/plone/shop/@@cart">
    <tr><td class="image">
    <a href="http://nohost/plone/shop/article1" title="&#196;rticle1">
    </a>
    </td>
    <td class="name">
    <h3>
    <a href="http://nohost/plone/shop/article1">&#196;rticle1</a>
    </h3>
    <p>Description of &#196;rticle1</p>
    </td>
    <td class="price">
    12.30 &#8364;
    <span id="vat">Including VAT: 23.00 %</span>
    </td>
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="100" value="1" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="1">Update</button>
    </td>
    <td class="delete">
    <button class="standalone delete" name="form.delete.article" type="submit" value="1">Delete</button>
    </td>
    </tr></form>
    ...

Go to Ärticle1 and add more to cart::

    >>> browser.open(article1_url)
    >>> query = {'quantity': '9', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)
    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article1/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="90" size="2"><datalist id="numbers"><option value="1">...<option value="90">90</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

Check Stöck1::

    >>> browser.open(stock1_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">90</span>

Check Cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('.quantity')
    --- 1 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="100" value="10" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="1">Update</button>
    </td>

Add another Article::

    >>> browser.open('/shop/++add++collective.cart.core.Article')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Ärticle2'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Ärticle2'
    >>> browser.getControl(name="form.widgets.IDiscount.price").value = '24.60'
    >>> browser.getControl(name="form.widgets.ISize.weight").value = '100.0'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> article2_url = browser.url

Add Stock to Ärticle2::

    >>> browser.open('/shop/article2/++add++collective.cart.stock.Stock')
    >>> browser.getControl(name="form.widgets.IBasic.title").value = 'Stöck2'
    >>> browser.getControl(name="form.widgets.IBasic.description").value = 'Description of Stöck2'
    >>> browser.getControl(name="form.widgets.stock").value = '20'
    >>> browser.getControl( name="form.widgets.IPrice.price").value = '0.0'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> stock2_url = browser.url

Add another stock to Ärticle2

    >>> browser.open(article2_url)
    >>> browser.open('/shop/article2/++add++collective.cart.stock.Stock')
    >>> browser.getControl(name="form.widgets.IBasic.title").value = 'Stöck3'
    >>> browser.getControl(name="form.widgets.IBasic.description").value = 'Description of Stöck3'
    >>> browser.getControl(name="form.widgets.stock").value = '10'
    >>> browser.getControl( name="form.widgets.IPrice.price").value = '0.0'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> stock3_url = browser.url

Go to Ärtile2:

    >>> browser.open(article2_url)
    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article2/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="30" size="2"><datalist id="numbers"><option value="1">...<option value="30">30</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

Add to Cart::

    >>> query = {'quantity': '5', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)
    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article2/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="25" size="2"><datalist id="numbers"><option value="1">...<option value="25">25</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

Check Stöck2::

    >>> browser.open(stock2_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">15</span>

Check Stöck3::

    >>> browser.open(stock3_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">10</span>

Check Cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <h3>
    <a href="http://nohost/plone/shop/article1">&#196;rticle1</a>
    </h3>
    <p>Description of &#196;rticle1</p>
    </td>
    --- 2 ---
    <td class="name">
    <h3>
    <a href="http://nohost/plone/shop/article2">&#196;rticle2</a>
    </h3>
    <p>Description of &#196;rticle2</p>
    </td>

    >>> print browser.bycss('.price')
    --- 1 ---
    <td class="price">
    12.30 &#8364;
    <span id="vat">Including VAT: 23.00 %</span>
    </td>
    --- 2 ---
    <td class="price">
    24.60 &#8364;
    <span id="vat">Including VAT: 23.00 %</span>
    </td>

    >>> print browser.bycss('.quantity')
    --- 1 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="100" value="10" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="1">Update</button>
    </td>
    --- 2 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="30" value="5" size="2"><datalist id="numbers"><option value="1">...<option value="30">30</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="2">Update</button>
    </td>

Go to Ärticle2 and add more to cart::

    >>> browser.open(article2_url)
    >>> query = {'quantity': '25', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)

    >>> print browser.bycss('.sold-out')
    --- 1 ---
    <p class="sold-out">Sold Out</p>

Check Stöck2::

    >>> browser.open(stock2_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">0</span>

Check Stöck3::

    >>> browser.open(stock3_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">0</span>

Check Cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('.quantity')
    --- 1 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="100" value="10" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="1">Update</button>
    </td>
    --- 2 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="30" value="30" size="2"><datalist id="numbers"><option value="1">...<option value="30">30</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="2">Update</button>
    </td>

Delete Ärticle1::

    >>> query = {'form.delete.article': '1'}
    >>> browser.post(browser.url, query)
    >>> print browser.bycss('.name')
    --- 1 ---
    <td class="name">
    <h3>
    <a href="http://nohost/plone/shop/article2">&#196;rticle2</a>
    </h3>
    <p>Description of &#196;rticle2</p>
    </td>

Check Stöck1::

    >>> browser.open(stock1_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">100</span>

Go to Ärticle1::

    >>> browser.open(article1_url)

    >>> print browser.bycss('#add-to-cart')
    --- 1 ---
    <div id="add-to-cart">
    <form method="post" action="http://nohost/plone/shop/article1/view">
    <label>Quantity</label>
    <input id="quantity" list="numbers" min="1" name="quantity" value="1" type="number" max="100" size="3"><datalist id="numbers"><option value="1">...<option value="100">100</option></datalist><span id="pcs">pcs</span>
    <button type="submit" name="form.addtocart" value="form.addtocart">Add To Cart</button>
    </form>
    </div>

Go to Cart::

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

Update Ärticle2 in Cart::

    >>> query = {'form.update.article': '2'}
    >>> browser.post(browser.url, query)
    >>> print browser.bycss('.quantity')
    --- 1 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="30" value="30" size="2"><datalist id="numbers"><option value="1">...<option value="30">30</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="2">Update</button>
    </td>

    >>> query = {'quantity': '20', 'form.update.article': '2'}
    >>> browser.post(browser.url, query)
    >>> print browser.bycss('.quantity')
    --- 1 ---
    <td class="quantity">
    <input id="quantity" list="numbers" min="1" name="quantity" type="number" max="30" value="20" size="2"><datalist id="numbers"><option value="1">...<option value="30">30</option></datalist><button class="standalone update" name="form.update.article" type="submit" value="2">Update</button>
    </td>

Check Stöck2::

    >>> browser.open(stock2_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">0</span>

Check Stöck3::

    >>> browser.open(stock3_url)
    >>> print browser.bycss('#form-widgets-stock')
    --- 1 ---
    <span id="form-widgets-stock" class="text-widget required int-field">10</span>

Go to Cart Container:

    >>> browser.open('/shop/cart-container')
    >>> print browser.bycss('#cart-container')
    --- 1 ---
    <section id="cart-container"><h1>Cart Container</h1>
    <p id="next-cart-id">The next cart ID: 2</p>
    <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/shop/cart-container/1">1</a>
    </td>
    <td class="cart-state">created</td>
    <td class="cart-modified">...</td>
    </tr></tbody></table></section>

    >>> browser.open('/shop/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">2</td>
    <td class="article-title">
    <a href="http://nohost/plone/shop/article2">&#196;rticle2</a>
    </td>
    </tr></tbody></table>...

Go to Ärticle2 and update discount::

    >>> browser.open('/shop/article2/edit')
    >>> browser.getControl(name="form.widgets.IDiscount.discount_enabled:list").value = True
    >>> browser.getControl(name="form.widgets.IDiscount.discount_price").value = '12.30'
    >>> browser.getControl(name="form.widgets.IDiscount.discount_start-day").value = str(today.day)
    >>> browser.getControl(name="form.widgets.IDiscount.discount_start-month").value = [str(today.month)]
    >>> browser.getControl(name="form.widgets.IDiscount.discount_start-year").value = str(today.year)
    >>> browser.getControl(name="form.buttons.save").click()

    >>> print browser.bycss('#price')
    --- 1 ---
    <p id="price">12.30 &#8364;</p>

Add to Cart::

    >>> query = {'quantity': '5', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)

Check cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('.price')
    --- 1 ---
    <td class="price">
    24.60 &#8364;
    <span id="vat">Including VAT: 23.00 %</span>
    </td>

Remove Ärticle2 from cart::

    >>> query = {'form.delete.article': '2'}
    >>> browser.post(browser.url, query)

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

Add Ärticle2 once again::

    >>> browser.open('/shop/article2')
    >>> query = {'quantity': '5', 'form.addtocart': 'form.addtocart'}
    >>> browser.post(browser.url, query)

Go to Cart::

    >>> browser.open('/shop/@@cart')
    >>> print browser.bycss('.price')
    --- 1 ---
    <td class="price">
    12.30 &#8364;
    <span id="vat">Including VAT: 23.00 %</span>
    </td>
