Skip to content

Commit 16882bc

Browse files
committed
feat: Tasks are not removed from Task list if its deletion fails
1 parent b6c9b1e commit 16882bc

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

Desktop.Tests/UnitTests/TaskListViewModelTests.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,28 @@ public void TaskPopulation_Fails_MessageNotifiesUser()
6363
}
6464

6565
[Test]
66-
public void TaskDeletion_Fails_MessageNotifiesUser()
66+
public void TaskDeletion_Fails_MessageNotifiesUserAndTaskRemains()
6767
{
68+
// Arrange.
6869
var existingTask = DesktopTask();
6970
var backendRepository =
7071
new InMemoryTaskRepository([existingTask]);
71-
backendRepository.FailAlways();
72+
7273
var messageNotifierMock = new Mock<IMessageNotifier>();
74+
7375
var sut = TaskListViewModel(backendRepository, messageNotifierMock.Object);
74-
76+
sut.PopulateTasks();
77+
backendRepository.FailAlways();
78+
79+
// Act.
7580
sut.Delete.Execute(existingTask);
7681

82+
// Assert.
7783
messageNotifierMock.Verify(x => x.Notify(
7884
"Task deletion has failed due to " +
7985
"an internal error. The Task won't be deleted. " +
8086
"Please, try again later."));
87+
sut.Tasks.Should().Contain(existingTask);
8188
}
8289

8390
private static TaskListViewModel TaskListViewModel(

Desktop/Project/TaskListViewModel.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ public TaskListViewModel(
3636

3737
Delete = new AsyncRelayCommand<Task>(async taskToRemove =>
3838
{
39-
Tasks.Remove(taskToRemove!);
40-
4139
foreach (var repository in this.taskRepositories)
4240
{
43-
var result = await repository.Delete(taskToRemove!);
41+
var deletion = await repository.Delete(taskToRemove!);
4442

45-
if (!result.Succeeded)
43+
if (deletion.Succeeded)
44+
Tasks.Remove(taskToRemove!);
45+
else
4646
messageNotifier.Notify(
4747
"Task deletion has failed due to " +
4848
"an internal error. The Task won't be deleted. " +

0 commit comments

Comments
 (0)