Files
workouts/WorkoutsTests/SplitDocumentCodableTests.swift
T
rzen ddd5631ef2 Add WorkoutsTests unit test target
No unit test target existed (testTargets: [] in scheme). Adds a
bundle.unit-test target wired into the Workouts scheme, with a smoke test
that round-trips SplitDocument through IndieSync's DocumentCoder — the
same codec DocumentFileStore uses for every iCloud document.
2026-07-05 10:23:08 -04:00

46 lines
1.5 KiB
Swift

import Foundation
import Testing
import IndieSync
@testable import Workouts
/// Round-trips `SplitDocument` through `DocumentCoder` — the exact JSON codec
/// (ISO-8601 dates, sorted keys, pretty-printed) `DocumentFileStore` uses to
/// write and read every document in this app's iCloud container.
struct SplitDocumentCodableTests {
/// A whole-second epoch so ISO-8601 round-trips (no fractional-second loss).
private static let stableTimestamp = Date(timeIntervalSince1970: 1_700_000_000)
@Test func encodeDecodeRoundTrip() throws {
let exercise = ExerciseDocument(
id: ULID.make(),
name: "Bench Press",
order: 0,
sets: 4,
reps: 10,
weight: 135,
loadType: 0,
durationSeconds: 0,
weightLastUpdated: Self.stableTimestamp,
weightReminderWeeks: 4
)
let original = SplitDocument(
schemaVersion: SplitDocument.currentSchemaVersion,
id: ULID.make(),
name: "Push Day",
color: "blue",
systemImage: "dumbbell.fill",
order: 0,
createdAt: Self.stableTimestamp,
updatedAt: Self.stableTimestamp,
exercises: [exercise],
activityType: nil
)
let data = try DocumentCoder.encode(original)
let decoded = try DocumentCoder.decode(SplitDocument.self, from: data)
#expect(decoded == original)
#expect(decoded.relativePath == "Splits/\(original.id).json")
}
}