import { describe, expect, it } from "vitest";
import { slugify, validateEmail } from "./utils";


describe("utils", () => {
    describe("validateEmail", () => {
        it("should returns false for non-emails", () => {
            expect(validateEmail(undefined)).toBe(false);
            expect(validateEmail(null)).toBe(false);
            expect(validateEmail("")).toBe(false);
            expect(validateEmail("not-an-email")).toBe(false);
            expect(validateEmail("n@")).toBe(false);
        });

        it("should returns true for emails", () => {
            expect(validateEmail("kody@example.com")).toBe(true);
        });
    });

    describe("slugify", () => {
        it("should convert text into url safe text", () => {
            expect(slugify("Abc dEf")).toBe("abc-def");
            expect(slugify("  abc def ")).toBe("abc-def");
            expect(slugify("abcDef")).toBe("abcdef");
            expect(slugify("abc.def")).toBe("abcdef");
            expect(slugify("abc!def")).toBe("abcdef");
            expect(slugify("abcdëf")).toBe("abcdef");
            expect(slugify("abc--def")).toBe("abc-def");
            expect(slugify("abc&def")).toBe("abc-and-def");
            expect(slugify("abc12def")).toBe("abc12def");
            expect(slugify("abc_def")).toBe("abc-def");
        });
    });
});