diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index fe49547cee..afb24487f1 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -6,11 +6,17 @@ from django.contrib.auth import get_user_model from .models import StockLocation -class StockLocationTest(APITestCase): - """ - Series of API tests for the StockLocation API - """ - list_url = reverse('api-location-list') +class StockAPITestCase(APITestCase): + + fixtures = [ + 'category', + 'part', + 'company', + 'location', + 'supplier_part', + 'stock', + 'stock_tests', + ] def setUp(self): # Create a user for auth @@ -18,6 +24,21 @@ class StockLocationTest(APITestCase): User.objects.create_user('testuser', 'test@testing.com', 'password') self.client.login(username='testuser', password='password') + def doPost(self, url, data={}): + response = self.client.post(url, data=data, format='json') + + return response + + +class StockLocationTest(StockAPITestCase): + """ + Series of API tests for the StockLocation API + """ + list_url = reverse('api-location-list') + + def setUp(self): + super().setUp() + # Add some stock locations StockLocation.objects.create(name='top', description='top category') @@ -38,7 +59,7 @@ class StockLocationTest(APITestCase): self.assertEqual(response.status_code, status.HTTP_201_CREATED) -class StockItemTest(APITestCase): +class StockItemTest(StockAPITestCase): """ Series of API tests for the StockItem API """ @@ -49,11 +70,7 @@ class StockItemTest(APITestCase): return reverse('api-stock-detail', kwargs={'pk': pk}) def setUp(self): - # Create a user for auth - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') - self.client.login(username='testuser', password='password') - + super().setUp() # Create some stock locations top = StockLocation.objects.create(name='A', description='top') @@ -65,30 +82,11 @@ class StockItemTest(APITestCase): self.assertEqual(response.status_code, status.HTTP_200_OK) -class StocktakeTest(APITestCase): +class StocktakeTest(StockAPITestCase): """ Series of tests for the Stocktake API """ - fixtures = [ - 'category', - 'part', - 'company', - 'location', - 'supplier_part', - 'stock', - ] - - def setUp(self): - User = get_user_model() - User.objects.create_user('testuser', 'test@testing.com', 'password') - self.client.login(username='testuser', password='password') - - def doPost(self, url, data={}): - response = self.client.post(url, data=data, format='json') - - return response - def test_action(self): """ Test each stocktake action endpoint, @@ -179,3 +177,47 @@ class StocktakeTest(APITestCase): response = self.doPost(url, data) self.assertContains(response, 'Valid location must be specified', status_code=status.HTTP_400_BAD_REQUEST) + + +class StockTestResultTest(StockAPITestCase): + + def test_list(self): + + url = reverse('api-stock-test-result-list') + response = self.client.get(url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertGreaterEqual(len(response.data), 4) + + response = self.client.get(url, data={'stock_item': 105}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertGreaterEqual(len(response.data), 4) + + def test_post(self): + # Test creation of a new test result + + url = reverse('api-stock-test-result-list') + + response = self.client.get(url) + n = len(response.data) + + data = { + 'stock_item': 105, + 'test': 'Checked Steam Valve', + 'result': False, + 'value': '150kPa', + 'notes': 'I guess there was just too much pressure?', + } + + response = self.client.post(url, data, format='json') + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + response = self.client.get(url) + self.assertEqual(len(response.data), n + 1) + + # And read out again + response = self.client.get(url, data={'test': 'Checked Steam Valve'}) + + self.assertEqual(len(response.data), 1) + self.assertEqual(response.data[0]['value'], '150kPa')