diff --git a/InvenTree/part/fixtures/part.yaml b/InvenTree/part/fixtures/part.yaml index 7d6c09707b..508a1577bb 100644 --- a/InvenTree/part/fixtures/part.yaml +++ b/InvenTree/part/fixtures/part.yaml @@ -74,6 +74,7 @@ level: 0 lft: 0 rght: 0 + default_expiry: 10 - model: part.part pk: 50 diff --git a/InvenTree/stock/test_views.py b/InvenTree/stock/test_views.py index 1f55d74eec..021ca9e138 100644 --- a/InvenTree/stock/test_views.py +++ b/InvenTree/stock/test_views.py @@ -6,6 +6,7 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group import json +from datetime import datetime, timedelta class StockViewTestCase(TestCase): @@ -135,21 +136,53 @@ class StockItemTest(StockViewTestCase): self.assertEqual(response.status_code, 200) def test_create_item(self): - # Test creation of StockItem - response = self.client.get(reverse('stock-item-create'), {'part': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + """ + Test creation of StockItem + """ + + url = reverse('stock-item-create') + + response = self.client.get(url, {'part': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) - response = self.client.get(reverse('stock-item-create'), {'part': 999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + response = self.client.get(url, {'part': 999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) # Copy from a valid item, valid location - response = self.client.get(reverse('stock-item-create'), {'location': 1, 'copy': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + response = self.client.get(url, {'location': 1, 'copy': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) # Copy from an invalid item, invalid location - response = self.client.get(reverse('stock-item-create'), {'location': 999, 'copy': 9999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + response = self.client.get(url, {'location': 999, 'copy': 9999}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 200) + def test_create_stock_with_expiry(self): + """ + Test creation of stock item of a part with an expiry date. + The initial value for the "expiry_date" field should be pre-filled, + and should be in the future! + """ + + url = reverse('stock-item-create') + + response = self.client.get(url, {'part': 25}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + + self.assertEqual(response.status_code, 200) + + # We are expecting 10 days in the future + expiry = datetime.now().date() + timedelta(10) + + expected = f'name=\\\\"expiry_date\\\\" value=\\\\"{expiry.isoformat()}\\\\"' + + self.assertIn(expected, str(response.content)) + + # Now check with a part which does *not* have a default expiry period + response = self.client.get(url, {'part': 1}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') + + expected = 'name=\\\\"expiry_date\\\\" placeholder=\\\\"\\\\"' + + self.assertIn(expected, str(response.content)) + def test_serialize_item(self): # Test the serialization view