Skip to content

Commit 0f5b2eb

Browse files
committed
Fix failing test cases due to missing task lock history.
1 parent ead59cb commit 0f5b2eb

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

tests/backend/integration/api/tasks/test_actions.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,8 @@ def test_mapping_unlock_returns_200_on_success(self):
561561
"""Test returns 200 on success."""
562562
# Arrange
563563
task = Task.get(1, self.test_project.id)
564-
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
565-
task.locked_by = self.test_user.id
566-
task.update()
564+
task.status = TaskStatus.READY.value
565+
task.lock_task_for_mapping(self.test_user.id)
567566
# Act
568567
response = self.client.post(
569568
self.url,
@@ -584,9 +583,8 @@ def test_mapping_unlock_returns_200_on_success_with_comment(self):
584583
"""Test returns 200 on success."""
585584
# Arrange
586585
task = Task.get(1, self.test_project.id)
587-
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
588-
task.locked_by = self.test_user.id
589-
task.update()
586+
task.status = TaskStatus.READY.value
587+
task.lock_task_for_mapping(self.test_user.id)
590588
# Act
591589
response = self.client.post(
592590
self.url,
@@ -685,9 +683,8 @@ def test_mapping_stop_returns_200_on_success(self):
685683
"""Test returns 200 on success."""
686684
# Arrange
687685
task = Task.get(1, self.test_project.id)
688-
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
689-
task.locked_by = self.test_user.id
690-
task.update()
686+
task.status = TaskStatus.READY.value
687+
task.lock_task_for_mapping(self.test_user.id)
691688
# Act
692689
response = self.client.post(
693690
self.url,
@@ -703,9 +700,8 @@ def test_mapping_stop_returns_200_on_success_with_comment(self):
703700
"""Test returns 200 on success."""
704701
# Arrange
705702
task = Task.get(1, self.test_project.id)
706-
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
707-
task.locked_by = self.test_user.id
708-
task.update()
703+
task.status = TaskStatus.READY.value
704+
task.lock_task_for_mapping(self.test_user.id)
709705
# Act
710706
response = self.client.post(
711707
self.url,
@@ -992,11 +988,14 @@ def test_validation_unlock_returns_403_if_task_not_locked_for_validation(self):
992988
def lock_task_for_validation(task_id, project_id, user_id, mapped_by=None):
993989
"""Lock task for validation."""
994990
task = Task.get(task_id, project_id)
995-
task.task_status = TaskStatus.LOCKED_FOR_VALIDATION.value
996-
task.locked_by = user_id
991+
997992
if mapped_by:
998-
task.mapped_by = mapped_by
999-
task.update()
993+
task.status = TaskStatus.READY.value
994+
task.lock_task_for_mapping(mapped_by)
995+
task.unlock_task(mapped_by, TaskStatus.MAPPED)
996+
997+
task.status = TaskStatus.MAPPED.value
998+
task.lock_task_for_validating(user_id)
1000999

10011000
def test_validation_unlock_returns_403_if_task_locked_by_other_user(self):
10021001
"""Test returns 403 if task locked by other user."""
@@ -1197,7 +1196,6 @@ def test_validation_stop_returns_200_if_task_locked_by_user(self):
11971196
"""Test returns 200 if task locked by user."""
11981197
# Arrange
11991198
task = Task.get(1, self.test_project.id)
1200-
task.unlock_task(self.test_user.id, TaskStatus.MAPPED)
12011199
last_task_status = TaskStatus(task.task_status).name
12021200
TestTasksActionsValidationUnlockAPI.lock_task_for_validation(
12031201
1, self.test_project.id, self.test_user.id, self.test_user.id
@@ -1218,7 +1216,6 @@ def test_validation_stop_returns_200_if_task_locked_by_user_with_comment(self):
12181216
"""Test returns 200 if task locked by user with comment."""
12191217
# Arrange
12201218
task = Task.get(1, self.test_project.id)
1221-
task.unlock_task(self.test_user.id, TaskStatus.MAPPED)
12221219
last_task_status = TaskStatus(task.task_status).name
12231220
TestTasksActionsValidationUnlockAPI.lock_task_for_validation(
12241221
1, self.test_project.id, self.test_user.id, self.test_user.id

tests/backend/unit/services/test_mapping_service.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from unittest.mock import patch, MagicMock
2+
23
from backend.services.mapping_service import (
34
MappingService,
45
Task,
@@ -127,6 +128,7 @@ def test_if_new_state_not_acceptable_raise_error(self, mock_task):
127128
with self.assertRaises(MappingServiceError):
128129
MappingService.unlock_task_after_mapping(self.mapped_task_dto)
129130

131+
@patch.object(TaskHistory, "get_last_action")
130132
@patch.object(ProjectService, "send_email_on_project_progress")
131133
@patch.object(ProjectInfo, "get_dto_for_locale")
132134
@patch.object(Task, "get_per_task_instructions")
@@ -147,13 +149,18 @@ def test_unlock_with_comment_sets_history(
147149
mock_state,
148150
mock_project_name,
149151
mock_send_email,
152+
mock_last_action,
150153
):
151154
# Arrange
152155
self.task_stub.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
153156
self.mapped_task_dto.comment = "Test comment"
154157
mock_task.return_value = self.task_stub
155158
mock_state.return_value = TaskStatus.LOCKED_FOR_MAPPING
156159
mock_project_name.name.return_value = "Test project"
160+
history = TaskHistory(1, 1, 1)
161+
history.action = TaskAction.LOCKED_FOR_MAPPING.name
162+
mock_last_action.return_value = history
163+
157164
# Act
158165
test_task = MappingService.unlock_task_after_mapping(self.mapped_task_dto)
159166

@@ -163,6 +170,7 @@ def test_unlock_with_comment_sets_history(
163170
self.assertEqual(TaskAction.COMMENT.name, test_task.task_history[0].action)
164171
self.assertEqual(test_task.task_history[0].action_text, "Test comment")
165172

173+
@patch.object(TaskHistory, "get_last_action")
166174
@patch.object(ProjectService, "send_email_on_project_progress")
167175
@patch.object(Task, "get_per_task_instructions")
168176
@patch.object(StatsService, "update_stats_after_task_state_change")
@@ -179,11 +187,15 @@ def test_unlock_with_status_change_sets_history(
179187
mock_instructions,
180188
mock_state,
181189
mock_send_email,
190+
mock_last_action,
182191
):
183192
# Arrange
184193
self.task_stub.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
185194
mock_task.return_value = self.task_stub
186195
mock_state.return_value = TaskStatus.LOCKED_FOR_MAPPING
196+
history = TaskHistory(1, 1, 1)
197+
history.action = TaskAction.LOCKED_FOR_MAPPING.name
198+
mock_last_action.return_value = history
187199

188200
# Act
189201
test_task = MappingService.unlock_task_after_mapping(self.mapped_task_dto)

0 commit comments

Comments
 (0)