mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Docstring checks in QC checks (#3089)
* Add pre-commit to the stack * exclude static * Add locales to excludes * fix style errors * rename pipeline steps * also wait on precommit * make template matching simpler * Use the same code for python setup everywhere * use step and cache for python setup * move regular settings up into general envs * just use full update * Use invoke instead of static references * make setup actions more similar * use python3 * refactor names to be similar * fix runner version * fix references * remove incidential change * use matrix for os * Github can't do this right now * ignore docstyle errors * Add seperate docstring test * update flake call * do not fail on docstring * refactor setup into workflow * update reference * switch to action * resturcture * add bash statements * remove os from cache * update input checks * make code cleaner * fix boolean * no relative paths * install wheel by python * switch to install * revert back to simple wheel * refactor import export tests * move setup keys back to not disturbe tests * remove docstyle till that is fixed * update references * continue on error * add docstring test * use relativ action references * Change step / job docstrings * update to merge * reformat comments 1 * fix docstrings 2 * fix docstrings 3 * fix docstrings 4 * fix docstrings 5 * fix docstrings 6 * fix docstrings 7 * fix docstrings 8 * fix docstirns 9 * fix docstrings 10 * docstring adjustments * update the remaining docstrings * small docstring changes * fix function name * update support files for docstrings * Add missing args to docstrings * Remove outdated function * Add docstrings for the 'build' app * Make API code cleaner * add more docstrings for plugin app * Remove dead code for plugin settings No idea what that was even intended for * ignore __init__ files for docstrings * More docstrings * Update docstrings for the 'part' directory * Fixes for related_part functionality * Fix removed stuff from merge99676ee
* make more consistent * Show statistics for docstrings * add more docstrings * move specific register statements to make them clearer to understant * More docstrings for common * and more docstrings * and more * simpler call * docstrings for notifications * docstrings for common/tests * Add docs for common/models * Revert "move specific register statements to make them clearer to understant" This reverts commitca96654622
. * use typing here * Revert "Make API code cleaner" This reverts commit24fb68bd3e
. * docstring updates for the 'users' app * Add generic Meta info to simple Meta classes * remove unneeded unique_together statements * More simple metas * Remove unnecessary format specifier * Remove extra json format specifiers * Add docstrings for the 'plugin' app * Docstrings for the 'label' app * Add missing docstrings for the 'report' app * Fix build test regression * Fix top-level files * docstrings for InvenTree/InvenTree * reduce unneeded code * add docstrings * and more docstrings * more docstrings * more docstrings for stock * more docstrings * docstrings for order/views * Docstrings for various files in the 'order' app * Docstrings for order/test_api.py * Docstrings for order/serializers.py * Docstrings for order/admin.py * More docstrings for the order app * Add docstrings for the 'company' app * Add unit tests for rebuilding the reference fields * Prune out some more dead code * remove more dead code Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
This commit is contained in:
@ -1,3 +1,5 @@
|
||||
"""Unit tests for the BuildOrder API"""
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.urls import reverse
|
||||
@ -13,8 +15,8 @@ from InvenTree.api_tester import InvenTreeAPITestCase
|
||||
|
||||
|
||||
class TestBuildAPI(InvenTreeAPITestCase):
|
||||
"""
|
||||
Series of tests for the Build DRF API
|
||||
"""Series of tests for the Build DRF API.
|
||||
|
||||
- Tests for Build API
|
||||
- Tests for BuildItem API
|
||||
"""
|
||||
@ -33,10 +35,7 @@ class TestBuildAPI(InvenTreeAPITestCase):
|
||||
]
|
||||
|
||||
def test_get_build_list(self):
|
||||
"""
|
||||
Test that we can retrieve list of build objects
|
||||
"""
|
||||
|
||||
"""Test that we can retrieve list of build objects."""
|
||||
url = reverse('api-build-list')
|
||||
response = self.client.get(url, format='json')
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
@ -65,7 +64,7 @@ class TestBuildAPI(InvenTreeAPITestCase):
|
||||
self.assertEqual(len(response.data), 0)
|
||||
|
||||
def test_get_build_item_list(self):
|
||||
""" Test that we can retrieve list of BuildItem objects """
|
||||
"""Test that we can retrieve list of BuildItem objects."""
|
||||
url = reverse('api-build-item-list')
|
||||
|
||||
response = self.client.get(url, format='json')
|
||||
@ -77,9 +76,7 @@ class TestBuildAPI(InvenTreeAPITestCase):
|
||||
|
||||
|
||||
class BuildAPITest(InvenTreeAPITestCase):
|
||||
"""
|
||||
Series of tests for the Build DRF API
|
||||
"""
|
||||
"""Series of tests for the Build DRF API."""
|
||||
|
||||
fixtures = [
|
||||
'category',
|
||||
@ -96,18 +93,12 @@ class BuildAPITest(InvenTreeAPITestCase):
|
||||
'build.add'
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
|
||||
super().setUp()
|
||||
|
||||
|
||||
class BuildTest(BuildAPITest):
|
||||
"""
|
||||
Unit testing for the build complete API endpoint
|
||||
"""
|
||||
"""Unit testing for the build complete API endpoint."""
|
||||
|
||||
def setUp(self):
|
||||
|
||||
"""Basic setup for this test suite"""
|
||||
super().setUp()
|
||||
|
||||
self.build = Build.objects.get(pk=1)
|
||||
@ -115,10 +106,7 @@ class BuildTest(BuildAPITest):
|
||||
self.url = reverse('api-build-output-complete', kwargs={'pk': self.build.pk})
|
||||
|
||||
def test_invalid(self):
|
||||
"""
|
||||
Test with invalid data
|
||||
"""
|
||||
|
||||
"""Test with invalid data."""
|
||||
# Test with an invalid build ID
|
||||
self.post(
|
||||
reverse('api-build-output-complete', kwargs={'pk': 99999}),
|
||||
@ -199,10 +187,7 @@ class BuildTest(BuildAPITest):
|
||||
)
|
||||
|
||||
def test_complete(self):
|
||||
"""
|
||||
Test build order completion
|
||||
"""
|
||||
|
||||
"""Test build order completion."""
|
||||
# Initially, build should not be able to be completed
|
||||
self.assertFalse(self.build.can_complete)
|
||||
|
||||
@ -270,8 +255,7 @@ class BuildTest(BuildAPITest):
|
||||
self.assertTrue(self.build.is_complete)
|
||||
|
||||
def test_cancel(self):
|
||||
""" Test that we can cancel a BuildOrder via the API """
|
||||
|
||||
"""Test that we can cancel a BuildOrder via the API."""
|
||||
bo = Build.objects.get(pk=1)
|
||||
|
||||
url = reverse('api-build-cancel', kwargs={'pk': bo.pk})
|
||||
@ -285,10 +269,7 @@ class BuildTest(BuildAPITest):
|
||||
self.assertEqual(bo.status, BuildStatus.CANCELLED)
|
||||
|
||||
def test_create_delete_output(self):
|
||||
"""
|
||||
Test that we can create and delete build outputs via the API
|
||||
"""
|
||||
|
||||
"""Test that we can create and delete build outputs via the API."""
|
||||
bo = Build.objects.get(pk=1)
|
||||
|
||||
n_outputs = bo.output_count
|
||||
@ -494,7 +475,7 @@ class BuildTest(BuildAPITest):
|
||||
self.assertIn('This build output has already been completed', str(response.data))
|
||||
|
||||
def test_download_build_orders(self):
|
||||
|
||||
"""Test that we can download a list of build orders via the API"""
|
||||
required_cols = [
|
||||
'reference',
|
||||
'status',
|
||||
@ -539,19 +520,17 @@ class BuildTest(BuildAPITest):
|
||||
|
||||
|
||||
class BuildAllocationTest(BuildAPITest):
|
||||
"""
|
||||
Unit tests for allocation of stock items against a build order.
|
||||
"""Unit tests for allocation of stock items against a build order.
|
||||
|
||||
For this test, we will be using Build ID=1;
|
||||
|
||||
- This points to Part 100 (see fixture data in part.yaml)
|
||||
- This Part already has a BOM with 4 items (see fixture data in bom.yaml)
|
||||
- There are no BomItem objects yet created for this build
|
||||
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
|
||||
"""Basic operation as part of test suite setup"""
|
||||
super().setUp()
|
||||
|
||||
self.assignRole('build.add')
|
||||
@ -565,10 +544,7 @@ class BuildAllocationTest(BuildAPITest):
|
||||
self.n = BuildItem.objects.count()
|
||||
|
||||
def test_build_data(self):
|
||||
"""
|
||||
Check that our assumptions about the particular BuildOrder are correct
|
||||
"""
|
||||
|
||||
"""Check that our assumptions about the particular BuildOrder are correct."""
|
||||
self.assertEqual(self.build.part.pk, 100)
|
||||
|
||||
# There should be 4x BOM items we can use
|
||||
@ -578,26 +554,17 @@ class BuildAllocationTest(BuildAPITest):
|
||||
self.assertEqual(self.build.allocated_stock.count(), 0)
|
||||
|
||||
def test_get(self):
|
||||
"""
|
||||
A GET request to the endpoint should return an error
|
||||
"""
|
||||
|
||||
"""A GET request to the endpoint should return an error."""
|
||||
self.get(self.url, expected_code=405)
|
||||
|
||||
def test_options(self):
|
||||
"""
|
||||
An OPTIONS request to the endpoint should return information about the endpoint
|
||||
"""
|
||||
|
||||
"""An OPTIONS request to the endpoint should return information about the endpoint."""
|
||||
response = self.options(self.url, expected_code=200)
|
||||
|
||||
self.assertIn("API endpoint to allocate stock items to a build order", str(response.data))
|
||||
|
||||
def test_empty(self):
|
||||
"""
|
||||
Test without any POST data
|
||||
"""
|
||||
|
||||
"""Test without any POST data."""
|
||||
# Initially test with an empty data set
|
||||
data = self.post(self.url, {}, expected_code=400).data
|
||||
|
||||
@ -618,10 +585,7 @@ class BuildAllocationTest(BuildAPITest):
|
||||
self.assertEqual(self.n, BuildItem.objects.count())
|
||||
|
||||
def test_missing(self):
|
||||
"""
|
||||
Test with missing data
|
||||
"""
|
||||
|
||||
"""Test with missing data."""
|
||||
# Missing quantity
|
||||
data = self.post(
|
||||
self.url,
|
||||
@ -674,10 +638,7 @@ class BuildAllocationTest(BuildAPITest):
|
||||
self.assertEqual(self.n, BuildItem.objects.count())
|
||||
|
||||
def test_invalid_bom_item(self):
|
||||
"""
|
||||
Test by passing an invalid BOM item
|
||||
"""
|
||||
|
||||
"""Test by passing an invalid BOM item."""
|
||||
data = self.post(
|
||||
self.url,
|
||||
{
|
||||
@ -695,11 +656,10 @@ class BuildAllocationTest(BuildAPITest):
|
||||
self.assertIn('must point to the same part', str(data))
|
||||
|
||||
def test_valid_data(self):
|
||||
"""
|
||||
Test with valid data.
|
||||
"""Test with valid data.
|
||||
|
||||
This should result in creation of a new BuildItem object
|
||||
"""
|
||||
|
||||
self.post(
|
||||
self.url,
|
||||
{
|
||||
@ -725,17 +685,12 @@ class BuildAllocationTest(BuildAPITest):
|
||||
|
||||
|
||||
class BuildListTest(BuildAPITest):
|
||||
"""
|
||||
Tests for the BuildOrder LIST API
|
||||
"""
|
||||
"""Tests for the BuildOrder LIST API."""
|
||||
|
||||
url = reverse('api-build-list')
|
||||
|
||||
def test_get_all_builds(self):
|
||||
"""
|
||||
Retrieve *all* builds via the API
|
||||
"""
|
||||
|
||||
"""Retrieve *all* builds via the API."""
|
||||
builds = self.get(self.url)
|
||||
|
||||
self.assertEqual(len(builds.data), 5)
|
||||
@ -753,10 +708,7 @@ class BuildListTest(BuildAPITest):
|
||||
self.assertEqual(len(builds.data), 0)
|
||||
|
||||
def test_overdue(self):
|
||||
"""
|
||||
Create a new build, in the past
|
||||
"""
|
||||
|
||||
"""Create a new build, in the past."""
|
||||
in_the_past = datetime.now().date() - timedelta(days=50)
|
||||
|
||||
part = Part.objects.get(pk=50)
|
||||
@ -776,10 +728,7 @@ class BuildListTest(BuildAPITest):
|
||||
self.assertEqual(len(builds), 1)
|
||||
|
||||
def test_sub_builds(self):
|
||||
"""
|
||||
Test the build / sub-build relationship
|
||||
"""
|
||||
|
||||
"""Test the build / sub-build relationship."""
|
||||
parent = Build.objects.get(pk=5)
|
||||
|
||||
part = Part.objects.get(pk=50)
|
||||
|
Reference in New Issue
Block a user