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.

tests.py 3.6KB

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