This PR contains the work done to improve the app layout for max iPhones and iPads by levering on the navigation split view. Plus, the floating button to add todo tasks was improved and integrated better into the layout and a critical bug occurring on max iPhones and iPads was fixed. Reviewed-on: rock-n-code/todos-app#10 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
84 lines
2.0 KiB
Swift
84 lines
2.0 KiB
Swift
import SwiftUI
|
|
import Testing
|
|
|
|
@testable import Todos
|
|
|
|
@MainActor
|
|
@Suite("ContentView view model tests")
|
|
struct ContentViewModelTests {
|
|
|
|
// MARK: Initialization Tests
|
|
|
|
@Test("View model initializes with default values")
|
|
func initialization() {
|
|
// GIVEN
|
|
// WHEN
|
|
let viewModel = ContentView.ViewModel()
|
|
|
|
// THEN
|
|
#expect(viewModel.newTaskShown == false)
|
|
#expect(viewModel.group == nil)
|
|
}
|
|
|
|
// MARK: - Computed Property Tests
|
|
|
|
@Test(
|
|
"showNewTaskButtonInDetails returns expected value for every group",
|
|
arguments: zip(
|
|
[TodoGroup.today, .upcoming, .overdue, .completed, nil],
|
|
[true, true, true, false, false]
|
|
)
|
|
)
|
|
func showNewTaskButtonInDetails(
|
|
for group: TodoGroup?,
|
|
expects expectation: Bool
|
|
) {
|
|
// GIVEN
|
|
let viewModel = ContentView.ViewModel()
|
|
|
|
viewModel.group = group
|
|
|
|
// WHEN
|
|
let shouldNewTaskButton = viewModel.showNewTaskButtonInDetails
|
|
|
|
// THEN
|
|
#expect(shouldNewTaskButton == expectation)
|
|
}
|
|
|
|
// MARK: - Functions Tests
|
|
|
|
@Test("showNewTask sets newTaskShown to true")
|
|
func newTaskShown() {
|
|
// GIVEN
|
|
let viewModel = ContentView.ViewModel()
|
|
|
|
// WHEN
|
|
viewModel.showNewTask()
|
|
|
|
// THEN
|
|
#expect(viewModel.newTaskShown == true)
|
|
}
|
|
|
|
@Test(
|
|
"showNewTaskButtonInSidebar returns expected value for every horizontal size class",
|
|
arguments: zip(
|
|
[UserInterfaceSizeClass.compact, .regular, nil],
|
|
[true, false, false]
|
|
)
|
|
)
|
|
func showNewTaskButtonInSidebar(
|
|
for horizontalSizeClass: UserInterfaceSizeClass?,
|
|
expects expectation: Bool
|
|
) {
|
|
// GIVEN
|
|
let viewModel = ContentView.ViewModel()
|
|
|
|
// WHEN
|
|
let shouldNewTaskButton = viewModel.showNewTaskButtonInSidebar(when: horizontalSizeClass)
|
|
|
|
// THEN
|
|
#expect(shouldNewTaskButton == expectation)
|
|
}
|
|
|
|
}
|