Skip to main content

ai_usagebar/opencode_go/
mod.rs

1//! OpenCode Go subscription quota integration.
2
3pub 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}