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.

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