Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

order_tests.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import httplib
  2. from django.test import TestCase
  3. from django.core.urlresolvers import reverse
  4. from django.template import Template, Context
  5. from django_dynamic_fixture import get
  6. from oscar.test.testcases import ClientTestCase, WebTestCase
  7. from oscar.test.factories import create_order
  8. from oscar.apps.order.models import Order, OrderNote, ShippingAddress
  9. from oscar.core.compat import get_user_model
  10. User = get_user_model()
  11. class TestOrderListDashboard(WebTestCase):
  12. is_staff = True
  13. def test_redirects_to_detail_page(self):
  14. order = create_order()
  15. page = self.get(reverse('dashboard:order-list'))
  16. form = page.forms['search_form']
  17. form['order_number'] = order.number
  18. response = form.submit()
  19. self.assertEqual(httplib.FOUND, response.status_code)
  20. def test_downloads_to_csv_without_error(self):
  21. address = get(ShippingAddress)
  22. create_order(shipping_address=address)
  23. page = self.get(reverse('dashboard:order-list'))
  24. form = page.forms['orders_form']
  25. form['selected_order'].checked = True
  26. form.submit('download_selected')
  27. class OrderDetailTests(ClientTestCase):
  28. is_staff = True
  29. def setUp(self):
  30. Order.pipeline = {'A': ('B', 'C')}
  31. self.order = create_order(status='A')
  32. self.url = reverse('dashboard:order-detail', kwargs={'number': self.order.number})
  33. super(OrderDetailTests, self).setUp()
  34. def fetch_order(self):
  35. return Order.objects.get(number=self.order.number)
  36. def test_order_detail_page_contains_order(self):
  37. response = self.client.get(self.url)
  38. self.assertTrue('order' in response.context)
  39. def test_order_status_change(self):
  40. params = {'order_action': 'change_order_status',
  41. 'new_status': 'B'}
  42. response = self.client.post(self.url, params)
  43. self.assertIsRedirect(response)
  44. self.assertEqual('B', self.fetch_order().status)
  45. def test_order_status_change_creates_system_note(self):
  46. params = {'order_action': 'change_order_status',
  47. 'new_status': 'B'}
  48. self.client.post(self.url, params)
  49. notes = self.order.notes.all()
  50. self.assertEqual(1, len(notes))
  51. self.assertEqual(OrderNote.SYSTEM, notes[0].note_type)
  52. class LineDetailTests(ClientTestCase):
  53. is_staff = True
  54. def setUp(self):
  55. self.order = create_order()
  56. self.line = self.order.lines.all()[0]
  57. self.url = reverse('dashboard:order-line-detail', kwargs={'number': self.order.number,
  58. 'line_id': self.line.id})
  59. super(LineDetailTests, self).setUp()
  60. def test_line_detail_page_exists(self):
  61. response = self.client.get(self.url)
  62. self.assertIsOk(response)
  63. def test_line_in_context(self):
  64. response = self.client.get(self.url)
  65. self.assertInContext(response, 'line')
  66. class TemplateTagTests(TestCase):
  67. def test_get_num_orders(self):
  68. user = get(User)
  69. for i in range(1, 4):
  70. get(Order, user=user)
  71. out = Template(
  72. "{% load dashboard_tags %}"
  73. "{% num_orders user %}"
  74. ).render(Context({
  75. 'user': user
  76. }))
  77. self.assertEquals(out, "3")