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