import { describe, expect, it } from "vitest";
import { cloudinaryAvatarUrl } from "~/lib/cloudinary-url";

const BASE = "https://res.cloudinary.com/demo/image/upload/v1/avatars/user-1.jpg";

describe("cloudinaryAvatarUrl", () => {
  it("inserts retina transformation into a Cloudinary URL", () => {
    expect(cloudinaryAvatarUrl(BASE, 48)).toBe(
      "https://res.cloudinary.com/demo/image/upload/w_96,h_96,c_fill,g_face,f_auto,q_auto/v1/avatars/user-1.jpg"
    );
  });

  it("doubles the display size for retina", () => {
    const result = cloudinaryAvatarUrl(BASE, 24);
    expect(result).toContain("w_48,h_48");
  });

  it("passes non-Cloudinary URLs through unchanged", () => {
    const url = "https://lh3.googleusercontent.com/photo.jpg";
    expect(cloudinaryAvatarUrl(url, 48)).toBe(url);
  });

  it("passes null-ish strings through unchanged", () => {
    expect(cloudinaryAvatarUrl("", 48)).toBe("");
  });

  it("is idempotent — calling twice returns the same URL", () => {
    const once = cloudinaryAvatarUrl(BASE, 48);
    expect(cloudinaryAvatarUrl(once, 48)).toBe(once);
  });
});
