51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from django.contrib.auth.models import User
|
|
from django.test import TestCase
|
|
from django.urls import reverse
|
|
|
|
from shop.models import Order
|
|
from shop.tests.mixins import CreateProductsMixin
|
|
|
|
|
|
class TestBackofficeOrders(TestCase, CreateProductsMixin):
|
|
def setUp(self):
|
|
self.superuser = User.objects.create_superuser('vader', 'vader@empire.com', 'ihatesand')
|
|
self.client.force_login(self.superuser)
|
|
self.product = self.create_product()
|
|
self.order = Order.objects.create(
|
|
email='client@example.com',
|
|
billing_address='Tatooine',
|
|
billing_city='Mos Eisley',
|
|
billing_state='Tatooine',
|
|
billing_country='Tatooine',
|
|
billing_zip='00001',
|
|
shipping_address='Tatooine',
|
|
shipping_city='Mos Eisley',
|
|
shipping_state='Tatooine',
|
|
shipping_country='Tatooine',
|
|
shipping_zip='00001',
|
|
)
|
|
|
|
def test_order_list(self):
|
|
response = self.client.get(reverse('backoffice:order_list'))
|
|
assert response.status_code == 200
|
|
assert self.order.code in response.content.decode()
|
|
|
|
def test_order_list_filtered_by_status(self):
|
|
response = self.client.get(reverse('backoffice:order_list'), {'status': Order.Statuses.STATUS_PAID})
|
|
assert response.status_code == 200
|
|
assert self.order.code not in response.content.decode()
|
|
|
|
def test_order_detail(self):
|
|
response = self.client.get(reverse('backoffice:order_detail', args=[self.order.pk]))
|
|
assert response.status_code == 200
|
|
|
|
def test_update_shipping_status(self):
|
|
response = self.client.post(
|
|
reverse('backoffice:order_update_shipping_status', args=[self.order.pk]),
|
|
{'shipping_status': Order.ShippingStatuses.STATUS_SENT},
|
|
)
|
|
assert response.status_code == 302
|
|
|
|
self.order.refresh_from_db()
|
|
assert self.order.shipping_status == Order.ShippingStatuses.STATUS_SENT
|