import os
import time

import ai_provider


class DummyResponse:
    def __init__(self, status_code=200, json_data=None, headers=None):
        self.status_code = status_code
        self._json = json_data or {}
        self.headers = headers or {}

    def json(self):
        return self._json


def test_retry_on_429_then_success(monkeypatch):
    calls = {"n": 0}

    def fake_post(url, json, headers, timeout):
        calls["n"] += 1
        if calls["n"] <= 2:
            # first two calls return 429 with Retry-After: 1
            return DummyResponse(
                429, json_data={"error": "rate_limited"}, headers={"Retry-After": "1"}
            )
        return DummyResponse(200, json_data={"data": [{"embedding": [0.4, 0.5]}]})

    monkeypatch.setenv("OPENROUTER_API_KEY", "sk-test")
    monkeypatch.setattr("requests.post", fake_post)

    start = time.time()
    emb = ai_provider.get_embedding("hello")
    duration = time.time() - start

    # we should have waited at least ~2 seconds due to two Retry-After: 1 sleeps
    assert duration >= 2
    assert emb == [0.4, 0.5]
