mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add API tests for test statistics
This commit is contained in:
parent
7385c831f2
commit
ad4a0e80db
@ -1779,6 +1779,93 @@ class StockTestResultTest(StockAPITestCase):
|
||||
expected_code=201,
|
||||
)
|
||||
|
||||
def _add_test_result(self, dut, template, passed):
|
||||
StockItemTestResult.objects.create(
|
||||
template=template,
|
||||
stock_item=dut,
|
||||
result=1 if passed else 0,
|
||||
value='PASSED' if passed else 'FAILED',
|
||||
)
|
||||
|
||||
def test_part_test_statistics(self):
|
||||
"""Test that part's test statistics are calculated correctly."""
|
||||
part = Part.objects.create(name='Test part', trackable=True)
|
||||
|
||||
dut1 = StockItem.objects.create(part=part, serial='DUT#1')
|
||||
dut2 = StockItem.objects.create(part=part, serial='DUT#2')
|
||||
|
||||
test_template1 = PartTestTemplate.objects.create(part=part, test_name='FVT1')
|
||||
test_template2 = PartTestTemplate.objects.create(part=part, test_name='FVT2')
|
||||
|
||||
# create some dummy test results
|
||||
self._add_test_result(dut1, test_template1, 0)
|
||||
self._add_test_result(dut1, test_template1, 0)
|
||||
self._add_test_result(dut1, test_template1, 1)
|
||||
|
||||
# one of the DUTs have 1 passed on FVT1 and 2 failed on FVT2
|
||||
response = self.get(
|
||||
reverse('api-test-statistics-by-part', kwargs={'pk': part.pk}),
|
||||
expected_code=200,
|
||||
)
|
||||
|
||||
# ensure total calculation
|
||||
self.assertEqual(response.data[0]['total']['passed'], 1)
|
||||
self.assertEqual(response.data[0]['total']['failed'], 2)
|
||||
self.assertEqual(response.data[0]['total']['total'], 3)
|
||||
|
||||
# ensure by test type calculation
|
||||
self.assertEqual(response.data[0]['FVT1']['passed'], 1)
|
||||
self.assertEqual(response.data[0]['FVT1']['failed'], 2)
|
||||
self.assertEqual(response.data[0]['FVT1']['total'], 3)
|
||||
|
||||
self.assertEqual(response.data[0]['FVT2']['passed'], 0)
|
||||
self.assertEqual(response.data[0]['FVT2']['failed'], 0)
|
||||
self.assertEqual(response.data[0]['FVT2']['total'], 0)
|
||||
|
||||
# add some result to the another DUT
|
||||
self._add_test_result(dut2, test_template1, 0)
|
||||
self._add_test_result(dut2, test_template1, 1)
|
||||
self._add_test_result(dut2, test_template2, 0)
|
||||
self._add_test_result(dut2, test_template2, 1)
|
||||
|
||||
response = self.get(
|
||||
reverse('api-test-statistics-by-part', kwargs={'pk': part.pk}),
|
||||
expected_code=200,
|
||||
)
|
||||
|
||||
# ensure total calculation
|
||||
self.assertEqual(response.data[0]['total']['passed'], 3)
|
||||
self.assertEqual(response.data[0]['total']['failed'], 4)
|
||||
self.assertEqual(response.data[0]['total']['total'], 7)
|
||||
|
||||
# ensure by test type calculation
|
||||
self.assertEqual(response.data[0]['FVT1']['passed'], 2)
|
||||
self.assertEqual(response.data[0]['FVT1']['failed'], 3)
|
||||
self.assertEqual(response.data[0]['FVT1']['total'], 5)
|
||||
|
||||
self.assertEqual(response.data[0]['FVT2']['passed'], 1)
|
||||
self.assertEqual(response.data[0]['FVT2']['failed'], 1)
|
||||
self.assertEqual(response.data[0]['FVT2']['total'], 2)
|
||||
|
||||
# create an another part add some results and check that it does not alters the stats of part1
|
||||
part2 = Part.objects.create(name='Test part2', trackable=True)
|
||||
|
||||
dut3 = StockItem.objects.create(part=part2, serial='DUT#3')
|
||||
|
||||
test_template3 = PartTestTemplate.objects.create(part=part2, test_name='FVT1')
|
||||
self._add_test_result(dut3, test_template3, 0)
|
||||
self._add_test_result(dut3, test_template3, 0)
|
||||
|
||||
response = self.get(
|
||||
reverse('api-test-statistics-by-part', kwargs={'pk': part.pk}),
|
||||
expected_code=200,
|
||||
)
|
||||
|
||||
# ensure total calculation
|
||||
self.assertEqual(response.data[0]['total']['passed'], 3)
|
||||
self.assertEqual(response.data[0]['total']['failed'], 4)
|
||||
self.assertEqual(response.data[0]['total']['total'], 7)
|
||||
|
||||
|
||||
class StockTrackingTest(StockAPITestCase):
|
||||
"""Tests for the StockTracking API endpoints."""
|
||||
|
Loading…
Reference in New Issue
Block a user