You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

__init__.py 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from decimal import Decimal as D
  2. from django.core.urlresolvers import reverse
  3. from oscar.apps.address.models import Country
  4. from oscar.test import factories
  5. class CheckoutMixin(object):
  6. def create_digital_product(self):
  7. product = factories.create_product(price=D('12.00'), num_in_stock=None)
  8. product.product_class.requires_shipping = False
  9. product.product_class.track_stock = False
  10. product.product_class.save()
  11. return product
  12. def add_product_to_basket(self, product=None):
  13. if product is None:
  14. product = factories.create_product(price=D('12.00'),
  15. num_in_stock=10)
  16. detail_page = self.get(product.get_absolute_url())
  17. form = detail_page.forms['add_to_basket_form']
  18. form.submit()
  19. def add_voucher_to_basket(self, voucher=None):
  20. if voucher is None:
  21. voucher = factories.create_voucher()
  22. basket_page = self.get(reverse('basket:summary'))
  23. form = basket_page.forms['voucher_form']
  24. form['code'] = voucher.code
  25. form.submit()
  26. def enter_guest_details(self, email='guest@example.com'):
  27. index_page = self.get(reverse('checkout:index'))
  28. index_page.form['username'] = email
  29. index_page.form.submit()
  30. def create_shipping_country(self):
  31. Country.objects.get_or_create(
  32. iso_3166_1_a2='GB', is_shipping_country=True)
  33. def enter_shipping_address(self):
  34. self.create_shipping_country()
  35. address_page = self.get(reverse('checkout:shipping-address'))
  36. form = address_page.forms['new_shipping_address']
  37. form['first_name'] = 'John'
  38. form['last_name'] = 'Doe'
  39. form['line1'] = '1 Egg Road'
  40. form['line4'] = 'Shell City'
  41. form['postcode'] = 'N12 9RT'
  42. form.submit()
  43. def enter_shipping_method(self):
  44. self.get(reverse('checkout:shipping-method'))
  45. def place_order(self):
  46. payment_details = self.get(
  47. reverse('checkout:shipping-method')).follow().follow()
  48. preview = payment_details.click(linkid="view_preview")
  49. return preview.forms['place-order-form'].submit().follow()