Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Add Shop::

    >>> browser.open('/++add++collective.cart.shopping.Shop')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Shöp'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Shöp.'
    >>> browser.getControl(name="form.buttons.save").click()

Add Article Container::

    >>> browser.open('/shop/++add++collective.cart.shopping.ArticleContainer')
    >>> browser.getControl(name="form.widgets.IDublinCore.title").value = 'Ärticle Cöntäiner'
    >>> browser.getControl(name="form.widgets.IDublinCore.description").value = 'Description of Äarticle Cöntäiner.'
    >>> browser.getControl(name="form.buttons.save").click()

Add Article1::

    >>> browser.open('/shop/article-container/++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.ISKU.sku").value = 'SKU1'
    >>> 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()

Check stock::

    >>> stock_path = '/shop/article-container/article1/@@stock'

    >>> browser.open(stock_path)

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

    >>> print browser.bycss('.documentDescription')
    --- 1 ---
    <div class="documentDescription">There are no stocks available.</div>

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')

Add stock::

    >>> browser.getControl(name="form.buttons.AddNewStock").click()
    >>> 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.IStockPrice.price").value = '4.00'
    >>> browser.getControl(name="form.buttons.save").click()

    >>> browser.url
    'http://nohost/plone/shop/article-container/article1/@@stock'

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="100" size="3"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    100
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>

Add another stock::

    >>> browser.getControl(name="form.buttons.AddNewStock").click()
    >>> 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 = '50'
    >>> browser.getControl( name="form.widgets.IStockPrice.price").value = '5.00'
    >>> browser.getControl(name="form.buttons.save").click()

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="150" size="3"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    100
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>

Subtract stock::

    >>> browser.getControl(name="quick-subtract").value = '70'
    >>> browser.getControl(name="form.buttons.QuickSubtract").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    <dl class="portalMessage info" id="kssPortalMessage" style="display:none"><dt>Info</dt>
    <dd></dd>
    </dl>
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully subtracted 70 pc(s).</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-add"><input name="quick-add" type="number" min="1" max="70" size="2"><button name="form.buttons.QuickAdd" value="form.buttons.QuickAdd" type="submit">Quick Add</button>
    </section><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="80" size="2"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    30
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>

Add stock::

    >>> browser.getControl(name="quick-add").value = '50'
    >>> browser.getControl(name="form.buttons.QuickAdd").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    <dl class="portalMessage info" id="kssPortalMessage" style="display:none"><dt>Info</dt>
    <dd></dd>
    </dl>
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully added 50 pc(s).</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-add"><input name="quick-add" type="number" min="1" max="20" size="2"><button name="form.buttons.QuickAdd" value="form.buttons.QuickAdd" type="submit">Quick Add</button>
    </section><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="130" size="3"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    80
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>


Add too many pcs::

    >>> browser.getControl(name="quick-add").value = '30'
    >>> browser.getControl(name="form.buttons.QuickAdd").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    <dl class="portalMessage info" id="kssPortalMessage" style="display:none"><dt>Info</dt>
    <dd></dd>
    </dl>
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully added 20 pc(s).</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="150" size="3"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    100
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>


Subtract too many pcs::

    >>> browser.getControl(name="quick-subtract").value = '160'
    >>> browser.getControl(name="form.buttons.QuickSubtract").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    <dl class="portalMessage info" id="kssPortalMessage" style="display:none"><dt>Info</dt>
    <dd></dd>
    </dl>
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully subtracted 150 pc(s).</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-add"><input name="quick-add" type="number" min="1" max="150" size="3"><button name="form.buttons.QuickAdd" value="form.buttons.QuickAdd" type="submit">Quick Add</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    0
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    0
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>


Add stock again::

    >>> browser.getControl(name="quick-add").value = '130'
    >>> browser.getControl(name="form.buttons.QuickAdd").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    <dl class="portalMessage info" id="kssPortalMessage" style="display:none"><dt>Info</dt>
    <dd></dd>
    </dl>
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully added 130 pc(s).</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-add"><input name="quick-add" type="number" min="1" max="20" size="2"><button name="form.buttons.QuickAdd" value="form.buttons.QuickAdd" type="submit">Quick Add</button>
    </section><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="130" size="3"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock1" title="Description of St&#246;ck1">St&#246;ck1</a>
    </td>
    <td>
    ...
    </td>
    <td>
    100
    </td>
    <td>
    80
    </td>
    <td>
    4.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock1">Remove</button>
    </td>
    </tr></tbody></table></section>

Remove stocks::

    >>> browser.getControl(name="form.buttons.Remove", index=1).click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    ...
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully removed 80 pc(s) of stock.</dd>
    </dl>

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

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

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="quick-subtract"><input name="quick-subtract" type="number" min="1" max="50" size="2"><button name="form.buttons.QuickSubtract" value="form.buttons.QuickSubtract" type="submit">Quick Subtract</button>
    </section><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>

    >>> print browser.bycss('#stock-listing')
    --- 1 ---
    <section id="stock-listing"><table class="listing"><thead><tr><th>Title</th>
    <th>Created</th>
    <th>Initial Stock</th>
    <th>Current Stock</th>
    <th>Purchase Price VAT 0%</th>
    <th>Remove</th>
    </tr></thead><tbody><tr><td>
    <a href="http://nohost/plone/shop/article-container/article1/stock2" title="Description of St&#246;ck2">St&#246;ck2</a>
    </td>
    <td>
    ...
    </td>
    <td>
    50
    </td>
    <td>
    50
    </td>
    <td>
    5.00 &#8364;
    </td>
    <td>
    <button name="form.buttons.Remove" type="submit" value="stock2">Remove</button>
    </td>
    </tr></tbody></table></section>

    >>> browser.getControl(name="form.buttons.Remove").click()

    >>> print browser.bycss('.portalMessage')
    --- 1 ---
    ...
    --- 2 ---
    <dl class="portalMessage info"><dt>Info</dt>
    <dd>Successfully removed 50 pc(s) of stock.</dd>
    </dl>

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

    >>> print browser.bycss('.documentDescription')
    --- 1 ---
    <div class="documentDescription">There are no stocks available.</div>

    >>> print browser.bycss('#add-subtract-stock')
    --- 1 ---
    <section id="add-subtract-stock"><section id="add-new-stock"><button name="form.buttons.AddNewStock" value="form.buttons.AddNewStock" type="submit">Add New Stock</button>
    </section></section>
