diff --git a/InvenTree/order/test_views.py b/InvenTree/order/test_views.py index a197455a8a..5496dec6df 100644 --- a/InvenTree/order/test_views.py +++ b/InvenTree/order/test_views.py @@ -4,6 +4,12 @@ from django.test import TestCase from django.urls import reverse from django.contrib.auth import get_user_model +from InvenTree.status_codes import OrderStatus + +from .models import PurchaseOrder + +import json + class OrderViewTestCase(TestCase): @@ -75,3 +81,29 @@ class POTests(OrderViewTestCase): # Response should be streaming-content (file download) self.assertIn('streaming_content', dir(response)) + + def test_po_issue(self): + """ Test PurchaseOrderIssue view """ + + url = reverse('purchase-order-issue', args=(1,)) + + order = PurchaseOrder.objects.get(pk=1) + self.assertEqual(order.status, OrderStatus.PENDING) + + # Test without confirmation + response = self.client.post(url, {'confirm': 0}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + self.assertEqual(response.status_code, 200) + + data = json.loads(response.content) + self.assertFalse(data['form_valid']) + + # Test WITH confirmation + response = self.client.post(url, {'confirm': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + self.assertEqual(response.status_code, 200) + + data = json.loads(response.content) + self.assertTrue(data['form_valid']) + + # Test that the order was actually placed + order = PurchaseOrder.objects.get(pk=1) + self.assertEqual(order.status, OrderStatus.PLACED)