Files
steipete--codexbar/Tests/CodexBarTests/PlanUtilizationHistoryChartMenuViewTests.swift
T
2026-07-13 12:22:33 +08:00

89 lines
3.0 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
struct PlanUtilizationHistoryChartMenuViewTests {
@Test
func `merged entries preserve first occurrence order while removing duplicates`() {
let first = PlanUtilizationHistoryEntry(
capturedAt: Date(timeIntervalSince1970: 100),
usedPercent: 10,
resetsAt: Date(timeIntervalSince1970: 200))
let second = PlanUtilizationHistoryEntry(
capturedAt: Date(timeIntervalSince1970: 300),
usedPercent: 20,
resetsAt: nil)
let merged = PlanUtilizationHistoryChartMenuView.mergedEntries([
first,
second,
first,
second,
])
#expect(merged == [first, second])
}
@Test
func `generic primary weekly window keeps weekly history visible`() {
let history = PlanUtilizationSeriesHistory(
name: .weekly,
windowMinutes: 10080,
entries: [
PlanUtilizationHistoryEntry(
capturedAt: Date(timeIntervalSince1970: 1_700_000_000),
usedPercent: 42,
resetsAt: nil),
])
let snapshot = UsageSnapshot(
primary: RateWindow(usedPercent: 42, windowMinutes: 10080, resetsAt: nil, resetDescription: nil),
secondary: nil,
updatedAt: Date(timeIntervalSince1970: 1_700_000_000))
let model = PlanUtilizationHistoryChartMenuView._modelSnapshotForTesting(
histories: [history],
provider: .zai,
snapshot: snapshot)
#expect(model.visibleSeries == ["weekly:10080"])
#expect(model.selectedSeries == "weekly:10080")
}
@Test
func `generic unknown weekly extra window does not filter saved history`() {
let history = PlanUtilizationSeriesHistory(
name: .weekly,
windowMinutes: 10080,
entries: [
PlanUtilizationHistoryEntry(
capturedAt: Date(timeIntervalSince1970: 1_700_000_000),
usedPercent: 42,
resetsAt: nil),
])
let snapshot = UsageSnapshot(
primary: nil,
secondary: nil,
extraRateWindows: [
NamedRateWindow(
id: "weekly-reset-only",
title: "Weekly reset",
window: RateWindow(
usedPercent: 0,
windowMinutes: 10080,
resetsAt: Date(timeIntervalSince1970: 1_700_003_600),
resetDescription: nil),
usageKnown: false),
],
updatedAt: Date(timeIntervalSince1970: 1_700_000_000))
let model = PlanUtilizationHistoryChartMenuView._modelSnapshotForTesting(
histories: [history],
provider: .zed,
snapshot: snapshot)
#expect(model.visibleSeries == ["weekly:10080"])
#expect(model.selectedSeries == "weekly:10080")
}
}