ai_usagebar/opencode_go/
mod.rs1pub mod creds;
4pub mod fetch;
5pub mod types;
6pub mod vendor;
7
8#[cfg(test)]
9mod tests {
10 use serde_json::Value;
11
12 use super::types::parse_usage;
13
14 #[test]
15 fn official_usage_fixture_uses_percent_not_usage_percent() {
16 let value: Value =
17 serde_json::from_str(include_str!("../../tests/fixtures/opencode-go/usage.json"))
18 .expect("fixture JSON must be valid");
19 let parsed = parse_usage(&value).expect("official usage fixture must parse");
20 let rolling = parsed.rolling.expect("rolling");
21 assert_eq!(rolling.status, "ok");
22 assert_eq!(rolling.percent, 12.3);
23 assert_eq!(rolling.resets_at.to_rfc3339(), "2026-08-16T20:00:00+00:00");
24 assert_eq!(parsed.weekly.expect("weekly").percent, 45.6);
25 assert_eq!(parsed.monthly.expect("monthly").percent, 78.9);
26 }
27
28 #[test]
29 fn obsolete_usage_percent_field_is_not_accepted() {
30 let value = serde_json::json!({
31 "usage": {
32 "rolling": {
33 "status": "ok",
34 "usagePercent": 12.3,
35 "resetsAt": "2026-08-16T20:00:00Z"
36 }
37 }
38 });
39 assert!(parse_usage(&value).is_err());
40 }
41}