- CalendarServiceに対するユニットテスト(ロード、保存の挙動)を実装 - Makefileにtestターゲットを追加し、コマンドラインからテスト実行を可能化 - Xcodeプロジェクト(yml)にテストターゲット(OreCalendarTests)とtest定義を追加
51 lines
1.6 KiB
Swift
51 lines
1.6 KiB
Swift
import XCTest
|
|
import EventKit
|
|
@testable import OreCalendar
|
|
|
|
@MainActor
|
|
final class CalendarServiceTests: XCTestCase {
|
|
var service: CalendarService!
|
|
let testKey = "selectedCalendars"
|
|
|
|
override func setUp() async throws {
|
|
try await super.setUp()
|
|
service = CalendarService()
|
|
UserDefaults.standard.removeObject(forKey: testKey)
|
|
}
|
|
|
|
override func tearDown() async throws {
|
|
UserDefaults.standard.removeObject(forKey: testKey)
|
|
service = nil
|
|
try await super.tearDown()
|
|
}
|
|
|
|
func testLoadDefaultSelectedCalendars_withSavedCalendars() async throws {
|
|
let savedCalendarIDs = ["calendar1", "calendar2", "calendar3"]
|
|
UserDefaults.standard.set(savedCalendarIDs, forKey: testKey)
|
|
|
|
service.loadDefaultSelectedCalendars()
|
|
|
|
XCTAssertEqual(service.selectedCalendars, Set(savedCalendarIDs))
|
|
}
|
|
|
|
func testLoadDefaultSelectedCalendars_withoutSavedCalendars() async throws {
|
|
UserDefaults.standard.removeObject(forKey: testKey)
|
|
|
|
service.loadDefaultSelectedCalendars()
|
|
|
|
let expectedCalendarIDs = Set(service.availableCalendars.map { $0.calendarIdentifier })
|
|
XCTAssertEqual(service.selectedCalendars, expectedCalendarIDs)
|
|
}
|
|
|
|
func testSaveSelectedCalendars() async throws {
|
|
let testCalendarIDs = ["cal1", "cal2", "cal3"]
|
|
service.selectedCalendars = Set(testCalendarIDs)
|
|
|
|
service.saveSelectedCalendars()
|
|
|
|
let savedCalendars = UserDefaults.standard.array(forKey: testKey) as? [String]
|
|
XCTAssertNotNil(savedCalendars)
|
|
XCTAssertEqual(Set(savedCalendars!), Set(testCalendarIDs))
|
|
}
|
|
}
|