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.

test_manipulation.py 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from oscar.apps.basket import models
  2. from oscar.core.loading import get_model
  3. from oscar.test import factories
  4. from oscar.test.testcases import WebTestCase
  5. Option = get_model("catalogue", "Option")
  6. AttributeOptionGroup = get_model("catalogue", "AttributeOptionGroup")
  7. AttributeOption = get_model("catalogue", "AttributeOption")
  8. class TestAddingToBasket(WebTestCase):
  9. def test_works_for_standalone_product(self):
  10. product = factories.ProductFactory()
  11. detail_page = self.get(product.get_absolute_url())
  12. response = detail_page.forms['add_to_basket_form'].submit()
  13. self.assertIsRedirect(response)
  14. baskets = models.Basket.objects.all()
  15. self.assertEqual(1, len(baskets))
  16. basket = baskets[0]
  17. self.assertEqual(1, basket.num_items)
  18. def test_works_for_child_product(self):
  19. parent = factories.ProductFactory(structure='parent', stockrecords=[])
  20. for x in range(3):
  21. variant = factories.ProductFactory(parent=parent, structure='child')
  22. detail_page = self.get(variant.get_absolute_url())
  23. form = detail_page.forms['add_to_basket_form']
  24. response = form.submit()
  25. self.assertIsRedirect(response)
  26. baskets = models.Basket.objects.all()
  27. self.assertEqual(1, len(baskets))
  28. basket = baskets[0]
  29. self.assertEqual(3, basket.num_items)
  30. def test_validation_errors_in_form(self):
  31. product = factories.ProductFactory()
  32. product_class = product.get_product_class()
  33. group = AttributeOptionGroup.objects.create(name="checkbox options")
  34. AttributeOption.objects.create(group=group, option="1")
  35. AttributeOption.objects.create(group=group, option="2")
  36. option = Option.objects.create(
  37. type=Option.CHECKBOX,
  38. required=True,
  39. name="Required checkbox",
  40. option_group=group
  41. )
  42. text_option = Option.objects.create(type=Option.TEXT, required=False, name="Open tekst")
  43. product_class.options.add(option)
  44. product_class.options.add(text_option)
  45. product_class.save()
  46. detail_page = self.get(product.get_absolute_url())
  47. detail_page.forms["add_to_basket_form"]["open-tekst"] = "test harrie"
  48. response = detail_page.forms['add_to_basket_form'].submit().follow()
  49. self.assertEqual(response.forms["add_to_basket_form"]["open-tekst"].value, "test harrie")
  50. baskets = models.Basket.objects.all()
  51. self.assertEqual(1, len(baskets))
  52. basket = baskets[0]
  53. self.assertEqual(0, basket.lines.count())