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 merge 99676ee

* 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 commit ca96654622.

* use typing here

* Revert "Make API code cleaner"

This reverts commit 24fb68bd3e.

* 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:
Matthias Mair
2022-06-01 17:37:39 +02:00
committed by GitHub
parent 66a6915213
commit 0c97a50e47
223 changed files with 4416 additions and 6980 deletions

View File

@ -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)