Files
ggbond268--mactools/Plugins/Calendar/Tests/CalendarComponentViewModelTests.swift
T
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

61 lines
1.8 KiB
Swift

import XCTest
@testable import MacTools
@testable import CalendarPlugin
@MainActor
final class CalendarComponentViewModelTests: XCTestCase {
func testOpenSelectsDayAndDelegatesToSystemCalendar() throws {
let calendar = Self.makeCalendar()
let service = MockCalendarEventService()
let targetDate = try XCTUnwrap(calendar.date(from: DateComponents(year: 2026, month: 4, day: 29)))
let viewModel = CalendarComponentViewModel(
eventService: service,
holidayProvider: .empty,
calendar: calendar,
today: targetDate
)
let targetDay = CalendarDayModel(
id: "20260429",
date: targetDate,
dayNumber: "29",
lunarText: "十三",
isInDisplayedMonth: true,
isToday: true,
isWeekend: false,
holidayKind: nil,
events: []
)
viewModel.open(targetDay)
XCTAssertEqual(viewModel.selectedDay?.id, "20260429")
XCTAssertEqual(service.openedDates, [targetDate])
}
private static func makeCalendar() -> Calendar {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
calendar.locale = Locale(identifier: "en_US_POSIX")
calendar.firstWeekday = 1
return calendar
}
}
@MainActor
private final class MockCalendarEventService: CalendarEventServicing {
var authorization: CalendarEventAuthorization = .denied("未授权")
private(set) var openedDates: [Date] = []
func requestAccess() async -> CalendarEventAuthorization {
authorization
}
func events(from startDate: Date, to endDate: Date) async throws -> [CalendarEventInput] {
[]
}
func openSystemCalendar(at date: Date) {
openedDates.append(date)
}
}