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
|
from .models import StockLocation
|
||||||
|
|
||||||
|
|
||||||
class StockLocationTest(APITestCase):
|
class StockAPITestCase(APITestCase):
|
||||||
"""
|
|
||||||
Series of API tests for the StockLocation API
|
fixtures = [
|
||||||
"""
|
'category',
|
||||||
list_url = reverse('api-location-list')
|
'part',
|
||||||
|
'company',
|
||||||
|
'location',
|
||||||
|
'supplier_part',
|
||||||
|
'stock',
|
||||||
|
'stock_tests',
|
||||||
|
]
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# Create a user for auth
|
# Create a user for auth
|
||||||
@ -18,6 +24,21 @@ class StockLocationTest(APITestCase):
|
|||||||
User.objects.create_user('testuser', 'test@testing.com', 'password')
|
User.objects.create_user('testuser', 'test@testing.com', 'password')
|
||||||
self.client.login(username='testuser', password='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
|
# Add some stock locations
|
||||||
StockLocation.objects.create(name='top', description='top category')
|
StockLocation.objects.create(name='top', description='top category')
|
||||||
|
|
||||||
@ -38,7 +59,7 @@ class StockLocationTest(APITestCase):
|
|||||||
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
||||||
class StockItemTest(APITestCase):
|
class StockItemTest(StockAPITestCase):
|
||||||
"""
|
"""
|
||||||
Series of API tests for the StockItem API
|
Series of API tests for the StockItem API
|
||||||
"""
|
"""
|
||||||
@ -49,11 +70,7 @@ class StockItemTest(APITestCase):
|
|||||||
return reverse('api-stock-detail', kwargs={'pk': pk})
|
return reverse('api-stock-detail', kwargs={'pk': pk})
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# Create a user for auth
|
super().setUp()
|
||||||
User = get_user_model()
|
|
||||||
User.objects.create_user('testuser', 'test@testing.com', 'password')
|
|
||||||
self.client.login(username='testuser', password='password')
|
|
||||||
|
|
||||||
# Create some stock locations
|
# Create some stock locations
|
||||||
top = StockLocation.objects.create(name='A', description='top')
|
top = StockLocation.objects.create(name='A', description='top')
|
||||||
|
|
||||||
@ -65,30 +82,11 @@ class StockItemTest(APITestCase):
|
|||||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
class StocktakeTest(APITestCase):
|
class StocktakeTest(StockAPITestCase):
|
||||||
"""
|
"""
|
||||||
Series of tests for the Stocktake API
|
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):
|
def test_action(self):
|
||||||
"""
|
"""
|
||||||
Test each stocktake action endpoint,
|
Test each stocktake action endpoint,
|
||||||
@ -179,3 +177,47 @@ class StocktakeTest(APITestCase):
|
|||||||
|
|
||||||
response = self.doPost(url, data)
|
response = self.doPost(url, data)
|
||||||
self.assertContains(response, 'Valid location must be specified', status_code=status.HTTP_400_BAD_REQUEST)
|
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