import { describe, expect, it } from "vitest";
import type { OpenAITTSConfig } from "./tts-openai.js";
import { OpenAITTSProvider } from "./tts-openai.js";

type ProviderInternals = {
  model: string;
  voice: string;
  speed: number;
};

function readProviderInternals(config: OpenAITTSConfig): ProviderInternals {
  return new OpenAITTSProvider(config) as unknown as ProviderInternals;
}

describe("OpenAITTSProvider constructor defaults", () => {
  it("uses speed: 0 when explicitly configured", () => {
    const provider = readProviderInternals({
      apiKey: "sk-test", // pragma: allowlist secret
      speed: 0,
    });

    expect(provider.speed).toBe(0);
  });

  it("falls back to speed default when undefined", () => {
    const provider = readProviderInternals({
      apiKey: "sk-test", // pragma: allowlist secret
    });

    expect(provider.speed).toBe(1.0);
  });

  it("treats blank model and voice overrides as unset", () => {
    const provider = readProviderInternals({
      apiKey: "sk-test", // pragma: allowlist secret
      model: "   ",
      voice: "",
    });

    expect(provider.model).toBe("gpt-4o-mini-tts");
    expect(provider.voice).toBe("coral");
  });
});
