2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 20:45:44 +00:00

Part duplicate bug fix (#4370)

* Make 'copy_category_parameters' part of actual serializer

* Parameter copying is now handled by the API serializer

* Make field not required

* linting fixes

* pre commit fix

* Fix unit tests

* Further fix for unit test

* Unit tests for category parameter duplication
This commit is contained in:
Oliver
2023-02-20 18:48:55 +11:00
committed by GitHub
parent 95ecd0cd32
commit 782ae133b7
6 changed files with 92 additions and 84 deletions

View File

@ -1363,6 +1363,51 @@ class PartCreationTests(PartAPITestBase):
self.assertEqual(part.bom_items.count(), 4 if bom else 0)
self.assertEqual(part.parameters.count(), 2 if params else 0)
def test_category_parameters(self):
"""Test that category parameters are correctly applied"""
cat = PartCategory.objects.get(pk=1)
# Add some parameter template to the parent category
for pk in [1, 2, 3]:
PartCategoryParameterTemplate.objects.create(
parameter_template=PartParameterTemplate.objects.get(pk=pk),
category=cat,
default_value=f"Value {pk}"
)
self.assertEqual(cat.parameter_templates.count(), 3)
# Creat a new Part, without copying category parameters
data = self.post(
reverse('api-part-list'),
{
'category': 1,
'name': 'Some new part',
'description': 'A new part without parameters',
'copy_category_parameters': False,
},
expected_code=201,
).data
prt = Part.objects.get(pk=data['pk'])
self.assertEqual(prt.parameters.count(), 0)
# Create a new part, this time copying category parameters
data = self.post(
reverse('api-part-list'),
{
'category': 1,
'name': 'Another new part',
'description': 'A new part with parameters',
'copy_category_parameters': True,
},
expected_code=201,
).data
prt = Part.objects.get(pk=data['pk'])
self.assertEqual(prt.parameters.count(), 3)
class PartDetailTests(PartAPITestBase):
"""Test that we can create / edit / delete Part objects via the API."""