Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

order_tests.py 3.2KB

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