import CodexBarCoreimport Foundationimport Testing/// Cross-platform tests for the OpenAI dashboard text parser.////// The dashboard renders reset countdowns like "Resets Wednesday at 3pm". The parser/// converts a textual weekday into the next occurrence of that weekday so it can be/// formatted into a concrete `Date`. These tests pin down full-weekday-name coverage/// because the underlying regex previously missed "Wednesday" and "Saturday" (their/// abbreviations were not long enough to combine with the optional "day" suffix).@Suitestruct OpenAIDashboardParserLinuxTests { private static func fixedNow() -> Date { var calendar = Calendar(identifier: .gregorian) calendar.timeZone = TimeZone(secondsFromGMT: 0)! // 2026-05-21 is a Thursday in the Gregorian calendar; using a fixed anchor keeps // the test deterministic regardless of when it executes. return calendar.date(from: DateComponents(year: 2026, month: 5, day: 21))! } private static func body(forWeekday weekday: String) -> String { """ 5h limit 50% remaining Resets \(weekday) """ } @Test func parsesResetLineForEveryFullWeekdayName() { let now = Self.fixedNow() for weekday in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] { let result = OpenAIDashboardParser.parseRateLimits( bodyText: Self.body(forWeekday: weekday), now: now) #expect( result.primary?.resetsAt != nil, "Expected a parsed resetsAt for weekday \(weekday)") } } @Test func parsesResetLineForLowercaseWednesday() { let now = Self.fixedNow() let result = OpenAIDashboardParser.parseRateLimits( bodyText: Self.body(forWeekday: "wednesday"), now: now) #expect(result.primary?.resetsAt != nil) } @Test func parsesResetLineForLowercaseSaturday() { let now = Self.fixedNow() let result = OpenAIDashboardParser.parseRateLimits( bodyText: Self.body(forWeekday: "saturday"), now: now) #expect(result.primary?.resetsAt != nil) }}
import CodexBarCore
import Foundation
import Testing
/// Cross-platform tests for the OpenAI dashboard text parser.
///
/// The dashboard renders reset countdowns like "Resets Wednesday at 3pm". The parser
/// converts a textual weekday into the next occurrence of that weekday so it can be
/// formatted into a concrete `Date`. These tests pin down full-weekday-name coverage
/// because the underlying regex previously missed "Wednesday" and "Saturday" (their
/// abbreviations were not long enough to combine with the optional "day" suffix).
@Suite
struct OpenAIDashboardParserLinuxTests {
private static func fixedNow() -> Date {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
// 2026-05-21 is a Thursday in the Gregorian calendar; using a fixed anchor keeps
// the test deterministic regardless of when it executes.
return calendar.date(from: DateComponents(year: 2026, month: 5, day: 21))!
}
private static func body(forWeekday weekday: String) -> String {
"""
5h limit
50% remaining
Resets \(weekday)
"""
}
@Test
func parsesResetLineForEveryFullWeekdayName() {
let now = Self.fixedNow()
for weekday in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] {
let result = OpenAIDashboardParser.parseRateLimits(
bodyText: Self.body(forWeekday: weekday),
now: now)
#expect(
result.primary?.resetsAt != nil,
"Expected a parsed resetsAt for weekday \(weekday)")
}
}
@Test
func parsesResetLineForLowercaseWednesday() {
let now = Self.fixedNow()
let result = OpenAIDashboardParser.parseRateLimits(
bodyText: Self.body(forWeekday: "wednesday"),
now: now)
#expect(result.primary?.resetsAt != nil)
}
@Test
func parsesResetLineForLowercaseSaturday() {
let now = Self.fixedNow()
let result = OpenAIDashboardParser.parseRateLimits(
bodyText: Self.body(forWeekday: "saturday"),
now: now)
#expect(result.primary?.resetsAt != nil)
}
}