Merge pull request #455 from SchrodingersGat/stock-tests

Stock tests
This commit is contained in:
Oliver 2019-08-30 12:58:25 +10:00 committed by GitHub
commit 8f340df41e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 4 deletions

View File

@ -4,6 +4,8 @@ from django.test import TestCase
from django.urls import reverse
from django.contrib.auth import get_user_model
import json
class StockViewTestCase(TestCase):
@ -128,3 +130,43 @@ class StockItemTest(StockViewTestCase):
# Copy from an invalid item, invalid location
response = self.client.get(reverse('stock-item-create'), {'location': 999, 'copy': 9999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
def test_serialize_item(self):
# Test the serialization view
url = reverse('stock-item-serialize', args=(100,))
# GET the form
response = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
data_valid = {
'quantity': 5,
'serial_numbers': '1-5',
'destination': 4,
'notes': 'Serializing stock test'
}
data_invalid = {
'quantity': 4,
'serial_numbers': 'dd-23-adf',
'destination': 'blorg'
}
# POST
response = self.client.post(url, data_valid, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
data = json.loads(response.content)
self.assertTrue(data['form_valid'])
# Try again to serialize with the same numbers
response = self.client.post(url, data_valid, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
data = json.loads(response.content)
self.assertFalse(data['form_valid'])
# POST with invalid data
response = self.client.post(url, data_invalid, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
data = json.loads(response.content)
self.assertFalse(data['form_valid'])

View File

@ -267,6 +267,9 @@ class StockTest(TestCase):
with self.assertRaises(ValidationError):
item.serializeStock(5, [1, 2, 3, 4, 5], self.user)
with self.assertRaises(ValidationError):
item.serializeStock(5, [1, 2, 3], self.user)
# Pick a StockItem which can actually be serialized
item = StockItem.objects.get(pk=100)
@ -284,7 +287,7 @@ class StockTest(TestCase):
with self.assertRaises(ValidationError):
item.serializeStock(3, "hello", self.user)
def test_seiralize_stock_valid(self):
def test_serialize_stock_valid(self):
""" Perform valid stock serializations """
# There are 10 of these in stock

View File

@ -491,10 +491,10 @@ class StockItemSerialize(AjaxUpdateView):
item = self.get_object()
quantity = request.POST.get('quantity', None)
quantity = request.POST.get('quantity', 0)
serials = request.POST.get('serial_numbers', '')
dest_id = request.POST.get('destination', None)
notes = request.POST.get('note', None)
notes = request.POST.get('note', '')
user = request.user
valid = True
@ -509,6 +509,7 @@ class StockItemSerialize(AjaxUpdateView):
except ValidationError as e:
form.errors['serial_numbers'] = e.messages
valid = False
numbers = []
if valid:
try:
@ -517,7 +518,7 @@ class StockItemSerialize(AjaxUpdateView):
messages = e.message_dict
for k in messages.keys():
if k in ['quantity', 'destionation', 'serial_numbers']:
if k in ['quantity', 'destination', 'serial_numbers']:
form.errors[k] = messages[k]
else:
form.non_field_errors = messages[k]