Log in as Manager::

    >>> browser.login(TEST_USER_NAME, TEST_USER_PASSWORD)

Add some Shipping Methods::

    >>> browser.open('shipping-methods/createObject?type_name=ShippingMethod')
    >>> browser.getControl(name="title").value = 'ShippingMethöd1'
    >>> browser.getControl(name="description").value = 'Description of ShippingMethöd1'
    >>> browser.getControl(name="min_delivery_days").value = '3'
    >>> browser.getControl(name="max_delivery_days").value = '5'
    >>> browser.getControl(name="form.button.save").click()

Add Article1::

    >>> browser.open('/++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 = 'SKÖ1'
    >>> browser.getControl(name="form.widgets.IDiscount.price").value = '24.80'
    >>> browser.getControl(name="form.widgets.ISize.weight").value = '100.0'
    >>> browser.getControl(name="form.buttons.save").click()

Add Stock to Ärticle1::

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

Add Ärticle1 to cart::

    >>> browser.open('/article1')
    >>> browser.getControl(name="form.buttons.AddToCart").click()

Go to cart and then to billing-and-shipping page::

    >>> browser.open('/@@cart')
    >>> browser.getControl(name="form.buttons.CheckOut").click()

    >>> print browser.bycss('#check-out-flow')
    --- 1 ---
    <section id="check-out-flow"><ul><li class="cart">
    <a href="http://nohost/plone/@@cart">Cart</a>
    </li>
    <li class="billing-and-shipping current-step">
    Addresses
    </li>
    <li class="order-confirmation">
    Confirmation
    </li>
    </ul></section>

    >>> print browser.bycss('#shipping-methods')
    --- 1 ---
    <section id="shipping-methods"><dl class="field shipping-methods"><dt>
    Shipping Method
    </dt>
    <dd>
    <label>
    ShippingMeth&#246;d1  0.10 &#8364;
    </label>
    <p>Description of ShippingMeth&#246;d1</p>
    </dd>
    </dl></section>

    >>> print browser.bycss('#check-out-buttons')
    --- 1 ---
    <section id="check-out-buttons"><button formnovalidate type="submit" class="back" value="form.buttons.Back" name="form.buttons.Back">Back</button>
    <button type="submit" class="next" value="form.buttons.CheckOut" name="form.buttons.CheckOut">Next</button>
    </section>

Input first name::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Last name is missing.</dd>
    </dl>

Input first and last name::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Invalid e-mail address.</dd>
    </dl>

Input first, last name and invalid email::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'email'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Invalid e-mail address.</dd>
    </dl>

Input first, last name and email::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'billing@email.email'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Street address is missing.</dd>
    </dl>

Input first, last name, email and street::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'billing@email.email'
    >>> browser.getControl(name="billing_street").value = 'Billing Str€€t'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Post code is missing.</dd>
    </dl>

Input first, last name, email, street, and post::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'billing@email.email'
    >>> browser.getControl(name="billing_street").value = 'Billing Str€€t'
    >>> browser.getControl(name="billing_post").value = 'Billing Pöst'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>City is missing.</dd>
    </dl>

Input first, last name, email, street, post and city::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'billing@email.email'
    >>> browser.getControl(name="billing_street").value = 'Billing Str€€t'
    >>> browser.getControl(name="billing_post").value = 'Billing Pöst'
    >>> browser.getControl(name="billing_city").value = 'Billing Cıty'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Phone number is missing.</dd>
    </dl>

Input first, last name, email, street, post, city and phone::

    >>> browser.getControl(name="billing_first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="billing_last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="billing_email").value = 'billing@email.email'
    >>> browser.getControl(name="billing_street").value = 'Billing Str€€t'
    >>> browser.getControl(name="billing_post").value = 'Billing Pöst'
    >>> browser.getControl(name="billing_city").value = 'Billing Cıty'
    >>> browser.getControl(name="billing_phone").value = 'Billing Phöne Number'
    >>> browser.getControl(name="form.buttons.CheckOut").click()

    >>> browser.url
    'http://nohost/plone/@@order-confirmation'

Back to billing-and-shipping::

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

    >>> 'value="Billing First Näme"' in browser.contents
    True
    >>> 'value="Billing Last Näme"' in browser.contents
    True
    >>> 'value="billing@email.email"' in browser.contents
    True
    >>> 'value="Billing Str€€t"' in browser.contents
    True
    >>> 'value="Billing Pöst"' in browser.contents
    True
    >>> 'value="Billing Cıty"' in browser.contents
    True
    >>> 'value="Billing Phöne Number"' in browser.contents
    True

Input also organization, vat and post code::

    >>> browser.getControl(name="billing_organization").value = 'Billing Örgänizätiön'
    >>> browser.getControl(name="billing_vat").value = 'Billing VÄT'
    >>> browser.getControl(name="billing_post").value = 'Billing Pöst'
    >>> browser.getControl(name="form.buttons.CheckOut").click()

Back to billing-and-shipping::

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

    >>> 'value="Billing First Näme"' in browser.contents
    True
    >>> 'value="Billing Last Näme"' in browser.contents
    True
    >>> 'value="billing@email.email"' in browser.contents
    True
    >>> 'value="Billing Str€€t"' in browser.contents
    True
    >>> 'value="Billing Pöst"' in browser.contents
    True
    >>> 'value="Billing Cıty"' in browser.contents
    True
    >>> 'value="Billing Phöne Number"' in browser.contents
    True
    >>> 'value="Billing Örgänizätiön"' in browser.contents
    True
    >>> 'value="Billing VÄT"' in browser.contents
    True
    >>> 'value="Billing Pöst"' in browser.contents
    True

Billing info not same as shipping info::

    >>> browser.getControl(name="billing-same-as-shipping").value = ['different']
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> browser.url
    'http://nohost/plone/@@billing-and-shipping'

Input shipping first name::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Last name is missing.</dd>
    </dl>

Input shipping first and last name::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Invalid e-mail address.</dd>
    </dl>

Input shipping first, last name and invalid email::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'email'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Invalid e-mail address.</dd>
    </dl>

Input shipping first, last name and email::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'billing@email.email'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Street address is missing.</dd>
    </dl>

Input shipping first, last name, email and street::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'billing@email.email'
    >>> browser.getControl(name="shipping_street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Post code is missing.</dd>
    </dl>

Input shipping first, last name, email, street and post::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'billing@email.email'
    >>> browser.getControl(name="shipping_street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="shipping_post").value = 'Shipping Pöst'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>City is missing.</dd>
    </dl>

Input shipping first, last name, email, street, post and city::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'billing@email.email'
    >>> browser.getControl(name="shipping_street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="shipping_post").value = 'Shipping Pöst'
    >>> browser.getControl(name="shipping_city").value = 'Shipping Cıty'
    >>> browser.getControl(name="form.buttons.CheckOut").click()
    >>> print browser.bycss('.warn')
    --- 1 ---
    <dl class="portalMessage warn"><dt>Warn</dt>
    <dd>Phone number is missing.</dd>
    </dl>

Input first, last name, email, street, city and phone::

    >>> browser.getControl(name="shipping_first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="shipping_last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="shipping_email").value = 'billing@email.email'
    >>> browser.getControl(name="shipping_street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="shipping_city").value = 'Shipping Cıty'
    >>> browser.getControl(name="shipping_post").value = 'Shipping Pöst'
    >>> browser.getControl(name="shipping_phone").value = 'Shipping Phöne Number'
    >>> browser.getControl(name="form.buttons.CheckOut").click()

    >>> browser.url
    'http://nohost/plone/@@order-confirmation'

Back to billing-and-shipping::

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

    >>> 'value="Shipping First Näme"' in browser.contents
    True
    >>> 'value="Shipping Last Näme"' in browser.contents
    True
    >>> 'value="billing@email.email"' in browser.contents
    True
    >>> 'value="Shipping Str€€t"' in browser.contents
    True
    >>> 'value="Shipping Pöst"' in browser.contents
    True
    >>> 'value="Shipping Cıty"' in browser.contents
    True
    >>> 'value="Shipping Phöne Number"' in browser.contents
    True

Input also organization, vat and post code::

    >>> browser.getControl(name="shipping_organization").value = 'Shipping Örgänizätiön'
    >>> browser.getControl(name="shipping_vat").value = 'Shipping VÄT'
    >>> browser.getControl(name="form.buttons.CheckOut").click()

    >>> browser.url
    'http://nohost/plone/@@order-confirmation'

Back to billing-and-shipping::

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

    >>> 'value="Shipping First Näme"' in browser.contents
    True
    >>> 'value="Shipping Last Näme"' in browser.contents
    True
    >>> 'value="billing@email.email"' in browser.contents
    True
    >>> 'value="Shipping Str€€t"' in browser.contents
    True
    >>> 'value="Shipping Pöst"' in browser.contents
    True
    >>> 'value="Shipping Cıty"' in browser.contents
    True
    >>> 'value="Shipping Phöne Number"' in browser.contents
    True
    >>> 'value="Shipping Örgänizätiön"' in browser.contents
    True
    >>> 'value="Shipping VÄT"' in browser.contents
    True
