test(core): Ensure that a ticket milestone comes from the same assigned project

ref: #744 #723
This commit is contained in:
2025-05-12 04:46:44 +09:30
parent 01b4a681da
commit 764f1b20d9
2 changed files with 107 additions and 5 deletions

View File

@ -241,6 +241,7 @@ class TicketBaseSerializerTestCases:
)
request.cls.valid_data.update({
'organization': request.cls.organization,
'category': TicketCategory.objects.create(
organization = request.cls.organization,
name = 'a category'
@ -262,10 +263,28 @@ class TicketBaseSerializerTestCases:
})
project_two = Project.objects.create(
organization = request.cls.organization,
name = 'project_two'
)
request.cls.project_milestone_two = ProjectMilestone.objects.create(
organization = request.cls.organization,
name = 'project milestone two',
project = project_two
)
yield
with django_db_blocker.unblock():
request.cls.project_milestone_two.delete()
project_two.delete()
request.cls.entity_user.delete()
parent_ticket.delete()
@ -335,6 +354,70 @@ class TicketBaseSerializerTestCases:
def test_serializer_valid_data_milestone_from_different_project_not_valid(self, fake_view, create_serializer):
"""Serializer Validation Check
Ensure that when creating an object with valid data, no validation
error occurs.
"""
valid_data = self.valid_data.copy()
valid_data['milestone'] = self.project_milestone_two.id
view_set = fake_view(
user = self.view_user,
_has_import = True,
_has_triage = True
)
serializer = create_serializer(
context = {
'request': view_set.request,
'view': view_set,
},
data = valid_data
)
assert not serializer.is_valid(raise_exception = False)
def test_serializer_valid_data_milestone_from_different_project_raises_exception(self, fake_view, create_serializer):
"""Serializer Validation Check
Ensure that when creating an object with valid data, no validation
error occurs.
"""
valid_data = self.valid_data.copy()
valid_data['milestone'] = self.project_milestone_two.id
view_set = fake_view(
user = self.view_user,
_has_import = True,
_has_triage = True
)
with pytest.raises(ValidationError) as err:
serializer = create_serializer(
context = {
'request': view_set.request,
'view': view_set,
},
data = valid_data
)
serializer.is_valid(raise_exception = True)
assert err.value.get_codes()['milestone'][0] == 'milestone_same_project'
def test_serializer_valid_data_missing_field_raises_exception(self, fake_view, parameterized, param_key_test_data,
create_serializer,
param_value,