Manual task reordering feature (#6)
This PR contains the work done to add support for manual todo task reordering in the *Task list* view Reviewed-on: rock-n-code/todos-app#6 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #6.
This commit is contained in:
@@ -36,7 +36,7 @@ struct TaskListViewModelTests {
|
||||
) {
|
||||
// GIVEN
|
||||
let viewModel = TaskListView.ViewModel(group: group)
|
||||
|
||||
|
||||
viewModel.showCompleted = showCompleted
|
||||
|
||||
// WHEN
|
||||
@@ -46,7 +46,8 @@ struct TaskListViewModelTests {
|
||||
if showCompleted {
|
||||
#expect(title == "view.task-list.label.hide-completed")
|
||||
#expect(icon == "eye.slash")
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
#expect(title == "view.task-list.label.show-completed")
|
||||
#expect(icon == "eye")
|
||||
}
|
||||
@@ -90,6 +91,56 @@ struct TaskListViewModelTests {
|
||||
|
||||
// MARK: Method tests
|
||||
|
||||
@Test("reorderTasks updates order property when moving task forward")
|
||||
func reorderTasksMovingForward() {
|
||||
// GIVEN
|
||||
let viewModel = TaskListView.ViewModel(group: .today)
|
||||
let tasks: [Todo] = [
|
||||
.init(title: "Task 1", due: .now, order: 0),
|
||||
.init(title: "Task 2", due: .now, order: 1),
|
||||
.init(title: "Task 3", due: .now, order: 2),
|
||||
.init(title: "Task 4", due: .now, order: 3),
|
||||
]
|
||||
|
||||
// WHEN
|
||||
viewModel.reorderTasks(
|
||||
tasks,
|
||||
from: IndexSet(integer: 0),
|
||||
to: 3
|
||||
)
|
||||
|
||||
// THEN
|
||||
#expect(tasks[0].order == 2)
|
||||
#expect(tasks[1].order == 0)
|
||||
#expect(tasks[2].order == 1)
|
||||
#expect(tasks[3].order == 3)
|
||||
}
|
||||
|
||||
@Test("reorderTasks updates order property when moving task backward")
|
||||
func reorderTasksMovingBackward() {
|
||||
// GIVEN
|
||||
let viewModel = TaskListView.ViewModel(group: .today)
|
||||
let tasks: [Todo] = [
|
||||
.init(title: "Task 1", due: .now, order: 0),
|
||||
.init(title: "Task 2", due: .now, order: 1),
|
||||
.init(title: "Task 3", due: .now, order: 2),
|
||||
.init(title: "Task 4", due: .now, order: 3),
|
||||
]
|
||||
|
||||
// WHEN
|
||||
viewModel.reorderTasks(
|
||||
tasks,
|
||||
from: IndexSet(integer: 3),
|
||||
to: 1
|
||||
)
|
||||
|
||||
// THEN
|
||||
#expect(tasks[0].order == 0)
|
||||
#expect(tasks[1].order == 2)
|
||||
#expect(tasks[2].order == 3)
|
||||
#expect(tasks[3].order == 1)
|
||||
}
|
||||
|
||||
@Test("toggleCompletedVisbility toggles the showCompleted property")
|
||||
func toggleCompletedVisibility() {
|
||||
// GIVEN
|
||||
|
||||
Reference in New Issue
Block a user