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) } }