mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add API unit tests
This commit is contained in:
parent
d6a56da441
commit
247cfcc514
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user