InvenTree/InvenTree/order/test_views.py

106 lines
2.9 KiB
Python
Raw Normal View History

2019-08-08 13:49:35 +00:00
""" Unit tests for Order views (see views.py) """
2019-09-30 03:44:19 +00:00
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
2019-08-08 13:49:35 +00:00
from django.test import TestCase
from django.urls import reverse
from django.contrib.auth import get_user_model
2020-10-06 09:10:14 +00:00
from django.contrib.auth.models import Group
2019-08-08 13:49:35 +00:00
from InvenTree.status_codes import PurchaseOrderStatus
2019-09-13 08:15:05 +00:00
2021-10-05 05:39:18 +00:00
from .models import PurchaseOrder
2019-09-13 08:15:05 +00:00
import json
2019-08-08 13:49:35 +00:00
class OrderViewTestCase(TestCase):
2019-08-08 13:49:35 +00:00
fixtures = [
'category',
'part',
'bom',
'location',
'company',
'supplier_part',
'stock',
'order',
]
def setUp(self):
super().setUp()
# Create a user
user = get_user_model().objects.create_user('username', 'user@email.com', 'password')
2020-10-06 09:10:14 +00:00
# Ensure that the user has the correct permissions!
g = Group.objects.create(name='orders')
user.groups.add(g)
for rule in g.rule_sets.all():
if rule.name in ['purchase_order', 'sales_order']:
rule.can_change = True
rule.can_add = True
rule.can_delete = True
rule.save()
g.save()
2019-08-08 13:49:35 +00:00
self.client.login(username='username', password='password')
class OrderListTest(OrderViewTestCase):
def test_order_list(self):
2020-03-22 09:13:38 +00:00
response = self.client.get(reverse('po-index'))
2019-08-08 13:49:35 +00:00
self.assertEqual(response.status_code, 200)
class POTests(OrderViewTestCase):
""" Tests for PurchaseOrder views """
def test_detail_view(self):
""" Retrieve PO detail view """
2020-03-22 09:13:38 +00:00
response = self.client.get(reverse('po-detail', args=(1,)))
2019-08-08 13:49:35 +00:00
self.assertEqual(response.status_code, 200)
keys = response.context.keys()
self.assertIn('PurchaseOrderStatus', keys)
2019-08-08 13:49:35 +00:00
def test_po_export(self):
""" Export PurchaseOrder """
2020-03-22 09:13:38 +00:00
response = self.client.get(reverse('po-export', args=(1,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest')
2019-08-08 13:49:35 +00:00
# Response should be streaming-content (file download)
self.assertIn('streaming_content', dir(response))
2019-09-13 08:15:05 +00:00
def test_po_issue(self):
""" Test PurchaseOrderIssue view """
2020-03-22 09:13:38 +00:00
url = reverse('po-issue', args=(1,))
2019-09-13 08:15:05 +00:00
order = PurchaseOrder.objects.get(pk=1)
self.assertEqual(order.status, PurchaseOrderStatus.PENDING)
2019-09-13 08:15:05 +00:00
# Test without confirmation
response = self.client.post(url, {'confirm': 0}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
2019-09-13 08:15:05 +00:00
data = json.loads(response.content)
2020-10-30 10:34:56 +00:00
2019-09-13 08:15:05 +00:00
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, PurchaseOrderStatus.PLACED)