73 lines
2.2 KiB
Swift
73 lines
2.2 KiB
Swift
import Foundation
|
|
import Testing
|
|
@testable import CodexBar
|
|
|
|
@MainActor
|
|
struct GoogleWorkspaceStatusTests {
|
|
private let productID = "npdyhgECDJ6tB66MxXyo"
|
|
|
|
@Test
|
|
func `parse workspace status selects worst incident`() throws {
|
|
let data = Data(#"""
|
|
[
|
|
{
|
|
"id": "inc-1",
|
|
"begin": "2025-12-02T09:00:00+00:00",
|
|
"end": null,
|
|
"affected_products": [
|
|
{"title": "Gemini", "id": "npdyhgECDJ6tB66MxXyo"}
|
|
],
|
|
"most_recent_update": {
|
|
"when": "2025-12-02T10:00:00+00:00",
|
|
"status": "SERVICE_INFORMATION",
|
|
"text": "**Summary**\nMinor issue.\n"
|
|
}
|
|
},
|
|
{
|
|
"id": "inc-2",
|
|
"begin": "2025-12-02T11:00:00+00:00",
|
|
"end": null,
|
|
"affected_products": [
|
|
{"title": "Gemini", "id": "npdyhgECDJ6tB66MxXyo"}
|
|
],
|
|
"most_recent_update": {
|
|
"when": "2025-12-02T12:00:00+00:00",
|
|
"status": "SERVICE_OUTAGE",
|
|
"text": "**Summary**\nGemini API error.\n"
|
|
}
|
|
}
|
|
]
|
|
"""#.utf8)
|
|
|
|
let status = try UsageStore.parseGoogleWorkspaceStatus(data: data, productID: self.productID)
|
|
#expect(status.indicator == .critical)
|
|
#expect(status.description == "Gemini API error.")
|
|
#expect(status.updatedAt != nil)
|
|
}
|
|
|
|
@Test
|
|
func `parse workspace status ignores resolved incidents`() throws {
|
|
let data = Data(#"""
|
|
[
|
|
{
|
|
"id": "inc-3",
|
|
"begin": "2025-12-02T08:00:00+00:00",
|
|
"end": "2025-12-02T09:00:00+00:00",
|
|
"affected_products": [
|
|
{"title": "Gemini", "id": "npdyhgECDJ6tB66MxXyo"}
|
|
],
|
|
"most_recent_update": {
|
|
"when": "2025-12-02T09:00:00+00:00",
|
|
"status": "AVAILABLE",
|
|
"text": "**Summary**\nResolved.\n"
|
|
}
|
|
}
|
|
]
|
|
"""#.utf8)
|
|
|
|
let status = try UsageStore.parseGoogleWorkspaceStatus(data: data, productID: self.productID)
|
|
#expect(status.indicator == .none)
|
|
#expect(status.description == nil)
|
|
}
|
|
}
|