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 = 'Descriptiön 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 = 'Descriptiön 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()

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 = 'Descriptiön 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.checkout").click()

Check the shipping method::

    >>> print browser.bycss('.shipping-methods')
    --- 1 ---
    <dl class="field shipping-methods"><dt>
    Shipping Method
    </dt>
    <dd>
    <div>
    <label>
    <span>ShippingMeth&#246;d1  0.10 EUR</span>
    </label>
    <p>Descripti&#246;n of ShippingMeth&#246;d1</p>
    </div>
    </dd>
    </dl>

Input first name::

    >>> browser.getControl(name="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="email").value = 'email'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="email").value = 'shipping@email.email'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="email").value = 'shipping@email.email'
    >>> browser.getControl(name="street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="form.to.confirmation").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 and city::

    >>> browser.getControl(name="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="email").value = 'shipping@email.email'
    >>> browser.getControl(name="street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="city").value = 'Shipping Cıty'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Shipping First Näme'
    >>> browser.getControl(name="last_name").value = 'Shipping Last Näme'
    >>> browser.getControl(name="email").value = 'shipping@email.email'
    >>> browser.getControl(name="street").value = 'Shipping Str€€t'
    >>> browser.getControl(name="city").value = 'Shipping Cıty'
    >>> browser.getControl(name="phone").value = 'Shipping Phöne Number'
    >>> browser.getControl(name="form.to.confirmation").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="shipping@email.email"' in browser.contents
    True
    >>> 'value="Shipping Str€€t"' 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="organization").value = 'Shipping Örgänizätiön'
    >>> browser.getControl(name="vat").value = 'Shipping VÄT'
    >>> browser.getControl(name="post").value = 'Shipping Pöst'
    >>> browser.getControl(name="form.to.confirmation").click()

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="shipping@email.email"' in browser.contents
    True
    >>> 'value="Shipping Str€€t"' 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
    >>> 'value="Shipping Pöst"' in browser.contents
    True

Billing info not same as shipping info::

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

Back to billing-and-shipping::

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

Chekout::

    >>> browser.getControl(name="form.to.confirmation").click()
    >>> browser.url
    'http://nohost/plone/@@shipping-info'

Input first name::

    >>> browser.getControl(name="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="email").value = 'email'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="email").value = 'billing@email.email'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="email").value = 'billing@email.email'
    >>> browser.getControl(name="street").value = 'Billing Str€€t'
    >>> browser.getControl(name="form.to.confirmation").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 and city::

    >>> browser.getControl(name="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="email").value = 'billing@email.email'
    >>> browser.getControl(name="street").value = 'Billing Str€€t'
    >>> browser.getControl(name="city").value = 'Billing Cıty'
    >>> browser.getControl(name="form.to.confirmation").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="first_name").value = 'Billing First Näme'
    >>> browser.getControl(name="last_name").value = 'Billing Last Näme'
    >>> browser.getControl(name="email").value = 'billing@email.email'
    >>> browser.getControl(name="street").value = 'Billing Str€€t'
    >>> browser.getControl(name="city").value = 'Billing Cıty'
    >>> browser.getControl(name="phone").value = 'Billing Phöne Number'
    >>> browser.getControl(name="form.to.confirmation").click()

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

Back to billing-and-shipping::

    >>> browser.getControl(name="form.buttons.back").click()
    >>> browser.getControl(name="form.to.confirmation").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 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="organization").value = 'Billing Örgänizätiön'
    >>> browser.getControl(name="vat").value = 'Billing VÄT'
    >>> browser.getControl(name="post").value = 'Billing Pöst'
    >>> browser.getControl(name="form.to.confirmation").click()

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