您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

order_tests.py 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import httplib
  2. from django.test import TestCase
  3. from django.contrib.auth.models import User
  4. from django.core.urlresolvers import reverse
  5. from django.template import Template, Context
  6. from django_dynamic_fixture import get
  7. from oscar.test import ClientTestCase
  8. from oscar.test.helpers import create_order
  9. from oscar.apps.order.models import Order, OrderNote
  10. class OrderListTests(ClientTestCase):
  11. is_staff = True
  12. def test_searching_for_valid_order_number_redirects_to_order_page(self):
  13. # Importing here as the import makes DB queries
  14. from oscar.apps.dashboard.orders.forms import OrderSearchForm
  15. order = create_order()
  16. fields = OrderSearchForm.base_fields.keys()
  17. pairs = dict(zip(fields, ['']*len(fields)))
  18. pairs['order_number'] = order.number
  19. pairs['response_format'] = 'html'
  20. url = '%s?%s' % (reverse('dashboard:order-list'), '&'.join(['%s=%s' % (k,v) for k,v in pairs.items()]))
  21. response = self.client.get(url)
  22. self.assertEqual(httplib.FOUND, response.status_code)
  23. class OrderDetailTests(ClientTestCase):
  24. is_staff = True
  25. def setUp(self):
  26. Order.pipeline = {'A': ('B', 'C')}
  27. self.order = create_order(status='A')
  28. self.url = reverse('dashboard:order-detail', kwargs={'number': self.order.number})
  29. super(OrderDetailTests, self).setUp()
  30. def fetch_order(self):
  31. return Order.objects.get(number=self.order.number)
  32. def test_order_detail_page_contains_order(self):
  33. response = self.client.get(self.url)
  34. self.assertTrue('order' in response.context)
  35. def test_order_status_change(self):
  36. params = {'order_action': 'change_order_status',
  37. 'new_status': 'B'}
  38. response = self.client.post(self.url, params)
  39. self.assertIsRedirect(response)
  40. self.assertEqual('B', self.fetch_order().status)
  41. def test_order_status_change_creates_system_note(self):
  42. params = {'order_action': 'change_order_status',
  43. 'new_status': 'B'}
  44. self.client.post(self.url, params)
  45. notes = self.order.notes.all()
  46. self.assertEqual(1, len(notes))
  47. self.assertEqual(OrderNote.SYSTEM, notes[0].note_type)
  48. class LineDetailTests(ClientTestCase):
  49. is_staff = True
  50. def setUp(self):
  51. self.order = create_order()
  52. self.line = self.order.lines.all()[0]
  53. self.url = reverse('dashboard:order-line-detail', kwargs={'number': self.order.number,
  54. 'line_id': self.line.id})
  55. super(LineDetailTests, self).setUp()
  56. def test_line_detail_page_exists(self):
  57. response = self.client.get(self.url)
  58. self.assertIsOk(response)
  59. def test_line_in_context(self):
  60. response = self.client.get(self.url)
  61. self.assertInContext(response, 'line')
  62. class TemplateTagTests(TestCase):
  63. def test_get_num_orders(self):
  64. user = get(User)
  65. for i in range(1, 4):
  66. get(Order, user=user)
  67. out = Template(
  68. "{% load dashboard_tags %}"
  69. "{% num_orders user %}"
  70. ).render(Context({
  71. 'user': user
  72. }))
  73. self.assertEquals(out, "3")