import { expect, test } from "vitest";
import { agencyCloseSchema, agencyJoinEnabledSchema, coinSellerStatusSchema } from "./schema";

test("coin seller contact accepts plus sign with large internal user id", () => {
    const result = coinSellerStatusSchema.safeParse({
        commandId: "coin-seller-edit-test",
        contact: "+63",
        reason: "update contact",
        status: "active",
        targetUserId: "320756743338463232",
    });

    expect(result.success).toBe(true);
    if (result.success) {
        expect(result.data.contact).toBe("+63");
        expect(result.data.targetUserId).toBe("320756743338463232");
    }
});

test("agency action schemas preserve large agency ids as strings", () => {
    const agencyId = "321170072154411009";
    const closeResult = agencyCloseSchema.safeParse({
        agencyId,
        commandId: "agency-close-test",
        reason: "close agency",
    });
    const joinResult = agencyJoinEnabledSchema.safeParse({
        agencyId,
        commandId: "agency-join-test",
        joinEnabled: false,
        reason: "disable join",
    });

    expect(closeResult.success).toBe(true);
    expect(joinResult.success).toBe(true);
    if (closeResult.success) {
        expect(closeResult.data.agencyId).toBe(agencyId);
    }
    if (joinResult.success) {
        expect(joinResult.data.agencyId).toBe(agencyId);
    }
});
