81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
from types import SimpleNamespace
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from django.test import SimpleTestCase
|
|
|
|
from apps.wpm.serializers import MlogbwCreateUpdateSerializer
|
|
from apps.wpmw.models import Wpr
|
|
|
|
|
|
class MlogbwNumberUpdateTests(SimpleTestCase):
|
|
@staticmethod
|
|
def _apply_update(instance, validated_data):
|
|
instance.number = validated_data["number"]
|
|
return instance
|
|
|
|
@patch("apps.wpm.serializers.CustomModelSerializer.update")
|
|
def test_output_number_update_changes_linked_wpr_number(self, base_update):
|
|
base_update.side_effect = self._apply_update
|
|
wpr = MagicMock()
|
|
instance = SimpleNamespace(
|
|
number="OLD-001",
|
|
mlogb=SimpleNamespace(material_out_id="material-out"),
|
|
wpr=wpr,
|
|
ftest=None,
|
|
)
|
|
|
|
MlogbwCreateUpdateSerializer.update.__wrapped__(
|
|
MlogbwCreateUpdateSerializer(),
|
|
instance,
|
|
{"mlogb": instance.mlogb, "number": "NEW-001"},
|
|
)
|
|
|
|
wpr.change_number.assert_called_once_with("NEW-001")
|
|
|
|
@patch("apps.wpm.serializers.CustomModelSerializer.update")
|
|
def test_input_number_update_does_not_change_wpr_number(self, base_update):
|
|
base_update.side_effect = self._apply_update
|
|
wpr = MagicMock()
|
|
instance = SimpleNamespace(
|
|
number="OLD-001",
|
|
mlogb=SimpleNamespace(material_out_id=None),
|
|
wpr=wpr,
|
|
ftest=None,
|
|
)
|
|
|
|
MlogbwCreateUpdateSerializer.update.__wrapped__(
|
|
MlogbwCreateUpdateSerializer(),
|
|
instance,
|
|
{"mlogb": instance.mlogb, "number": "NEW-001"},
|
|
)
|
|
|
|
wpr.change_number.assert_not_called()
|
|
|
|
@patch("apps.wpmw.models.MIOItemw.objects.filter")
|
|
@patch("apps.wpmw.models.Handoverbw.objects.filter")
|
|
@patch("apps.wpmw.models.Mlogbw.objects.filter")
|
|
@patch("apps.wpmw.models.Wpr.objects.filter")
|
|
def test_wpr_number_change_updates_all_number_copies(
|
|
self,
|
|
wpr_filter,
|
|
mlogbw_filter,
|
|
handoverbw_filter,
|
|
mioitemw_filter,
|
|
):
|
|
conflict_qs = MagicMock()
|
|
conflict_qs.exists.return_value = False
|
|
current_qs = MagicMock()
|
|
wpr_filter.side_effect = [conflict_qs, current_qs]
|
|
mlogbw_qs = mlogbw_filter.return_value
|
|
handoverbw_qs = handoverbw_filter.return_value
|
|
mioitemw_qs = mioitemw_filter.return_value
|
|
wpr = Wpr(id="wpr-id", number="OLD-001")
|
|
|
|
wpr.change_number("NEW-001")
|
|
|
|
current_qs.update.assert_called_once_with(number="NEW-001")
|
|
mlogbw_qs.update.assert_called_once_with(number="NEW-001")
|
|
handoverbw_qs.update.assert_called_once_with(number="NEW-001")
|
|
mioitemw_qs.update.assert_called_once_with(number="NEW-001")
|
|
self.assertEqual(wpr.number, "NEW-001")
|