Merge pull request #944 from SchrodingersGat/stock-item-api-fix

Stock item api fix
This commit is contained in:
Oliver 2020-08-31 20:13:57 +10:00 committed by GitHub
commit 35cd3923a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 57 additions and 19 deletions

View File

@ -186,7 +186,7 @@ class StockCount(StockAdjust):
class StockAdd(StockAdjust):
"""
Endpoint for adding stock
Endpoint for adding a quantity of stock to an existing StockItem
"""
def post(self, request, *args, **kwargs):
@ -204,7 +204,7 @@ class StockAdd(StockAdjust):
class StockRemove(StockAdjust):
"""
Endpoint for removing stock.
Endpoint for removing a quantity of stock from an existing StockItem.
"""
def post(self, request, *args, **kwargs):

View File

@ -99,26 +99,10 @@ class StockItemSerializer(InvenTreeModelSerializer):
return queryset
belongs_to = serializers.PrimaryKeyRelatedField(read_only=True)
build_order = serializers.PrimaryKeyRelatedField(read_only=True)
customer = serializers.PrimaryKeyRelatedField(read_only=True)
location = serializers.PrimaryKeyRelatedField(read_only=True)
in_stock = serializers.BooleanField(read_only=True)
sales_order = serializers.PrimaryKeyRelatedField(read_only=True)
status_text = serializers.CharField(source='get_status_display', read_only=True)
supplier_part = serializers.PrimaryKeyRelatedField(read_only=True)
supplier_part_detail = SupplierPartSerializer(source='supplier_part', many=False, read_only=True)
part = serializers.PrimaryKeyRelatedField(read_only=True)
part_detail = PartBriefSerializer(source='part', many=False, read_only=True)
location_detail = LocationBriefSerializer(source='location', many=False, read_only=True)

View File

@ -81,6 +81,59 @@ class StockItemTest(StockAPITestCase):
response = self.client.get(self.list_url, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_stock_item_create(self):
"""
Test creation of a StockItem via the API
"""
# POST with an empty part reference
response = self.client.post(
self.list_url,
data={
'quantity': 10,
'location': 1
}
)
self.assertContains(response, 'This field is required', status_code=status.HTTP_400_BAD_REQUEST)
# POST with an invalid part reference
response = self.client.post(
self.list_url,
data={
'quantity': 10,
'location': 1,
'part': 10000000,
}
)
self.assertContains(response, 'does not exist', status_code=status.HTTP_400_BAD_REQUEST)
# POST without quantity
response = self.client.post(
self.list_url,
data={
'part': 1,
'location': 1,
}
)
self.assertContains(response, 'This field is required', status_code=status.HTTP_400_BAD_REQUEST)
# POST with quantity and part and location
response = self.client.post(
self.list_url,
data={
'part': 1,
'location': 1,
'quantity': 10,
}
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
class StocktakeTest(StockAPITestCase):
"""

View File

@ -24,4 +24,5 @@ django-stdimage==5.1.1 # Advanced ImageField management
django-tex==1.1.7 # LaTeX PDF export
django-weasyprint==1.0.1 # HTML PDF export
django-debug-toolbar==2.2 # Debug / profiling toolbar
inventree # Install the latest version of the InvenTree API python library