Files
Reflect/ReflectTests/DayViewViewModelTests.swift
Trey t 0442eab1f8 Rebrand entire project from Feels to Reflect
Complete rename across all bundle IDs, App Groups, CloudKit containers,
StoreKit product IDs, data store filenames, URL schemes, logger subsystems,
Swift identifiers, user-facing strings (7 languages), file names, directory
names, Xcode project, schemes, assets, and documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 11:47:16 -06:00

43 lines
1.5 KiB
Swift

//
// DayViewViewModelTests.swift
// ReflectTests
//
// Unit tests for DayViewViewModel.countEntries verifies safe counting
// across various grouped dictionary shapes (TDD for force-unwrap fix).
//
import XCTest
import SwiftData
@testable import Reflect
@MainActor
final class DayViewViewModelTests: XCTestCase {
func testCountEntries_EmptyGrouped() {
let grouped: [Int: [Int: [MoodEntryModel]]] = [:]
XCTAssertEqual(DayViewViewModel.countEntries(in: grouped), 0)
}
func testCountEntries_SingleYearSingleMonth() {
let entry = MoodEntryModel(forDate: Date(), mood: .great, entryType: .listView)
let grouped: [Int: [Int: [MoodEntryModel]]] = [2026: [2: [entry]]]
XCTAssertEqual(DayViewViewModel.countEntries(in: grouped), 1)
}
func testCountEntries_MultipleYearsAndMonths() {
let e1 = MoodEntryModel(forDate: Date(), mood: .great, entryType: .listView)
let e2 = MoodEntryModel(forDate: Date(), mood: .good, entryType: .listView)
let e3 = MoodEntryModel(forDate: Date(), mood: .bad, entryType: .listView)
let grouped: [Int: [Int: [MoodEntryModel]]] = [
2025: [12: [e1, e2]],
2026: [1: [e3], 2: [e1, e2, e3]]
]
XCTAssertEqual(DayViewViewModel.countEntries(in: grouped), 6)
}
func testCountEntries_YearWithEmptyMonth() {
let grouped: [Int: [Int: [MoodEntryModel]]] = [2026: [1: []]]
XCTAssertEqual(DayViewViewModel.countEntries(in: grouped), 0)
}
}