Skip to main content

ai_usagebar/opencode_go/
mod.rs

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