1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from decimal import Decimal as D
-
- from django.urls import reverse
-
- from oscar.core.loading import get_class, get_model
- from oscar.test import factories
-
- UserAddress = get_model('address', 'UserAddress')
- Country = get_model('address', 'Country')
- GatewayForm = get_class('checkout.forms', 'GatewayForm')
-
-
- class CheckoutMixin(object):
-
- def create_digital_product(self):
- product_class = factories.ProductClassFactory(
- requires_shipping=False, track_stock=False)
- product = factories.ProductFactory(product_class=product_class)
- factories.StockRecordFactory(
- num_in_stock=None, price_excl_tax=D('12.00'), product=product)
- return product
-
- def add_product_to_basket(self, product=None):
- if product is None:
- product = factories.ProductFactory()
- factories.StockRecordFactory(
- num_in_stock=10, price_excl_tax=D('12.00'), product=product)
- detail_page = self.get(product.get_absolute_url())
- form = detail_page.forms['add_to_basket_form']
- form.submit()
-
- def add_voucher_to_basket(self, voucher=None):
- if voucher is None:
- voucher = factories.create_voucher()
- basket_page = self.get(reverse('basket:summary'))
- form = basket_page.forms['voucher_form']
- form['code'] = voucher.code
- form.submit()
-
- def enter_guest_details(self, email='guest@example.com'):
- index_page = self.get(reverse('checkout:index'))
- index_page.form['username'] = email
- index_page.form.select('options', GatewayForm.GUEST)
- return index_page.form.submit()
-
- def create_shipping_country(self):
- return factories.CountryFactory(
- iso_3166_1_a2='GB', is_shipping_country=True)
-
- def enter_shipping_address(self):
- self.create_shipping_country()
- address_page = self.get(reverse('checkout:shipping-address'))
- form = address_page.forms['new_shipping_address']
- form['first_name'] = 'John'
- form['last_name'] = 'Doe'
- form['line1'] = '1 Egg Road'
- form['line4'] = 'Shell City'
- form['postcode'] = 'N12 9RT'
- form.submit()
-
- def enter_shipping_method(self):
- self.get(reverse('checkout:shipping-method'))
-
- def place_order(self):
- payment_details = self.get(
- reverse('checkout:shipping-method')).follow().follow()
- preview = payment_details.click(linkid="view_preview")
- return preview.forms['place_order_form'].submit().follow()
-
- def reach_payment_details_page(self, is_guest=False):
- self.add_product_to_basket()
- if is_guest:
- self.enter_guest_details('hello@egg.com')
- self.enter_shipping_address()
- return self.get(
- reverse('checkout:shipping-method')).follow().follow()
-
- def ready_to_place_an_order(self, is_guest=False):
- payment_details = self.reach_payment_details_page(is_guest)
- return payment_details.click(linkid="view_preview")
|