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