import { isUrl } from "./utils";

describe("isUrl tests", () => {
  it("should return false for invalid and corner case inputs", () => {
    expect(isUrl([])).toBeFalsy();
    expect(isUrl({})).toBeFalsy();
    expect(isUrl(false)).toBeFalsy();
    expect(isUrl(true)).toBeFalsy();
    expect(isUrl(NaN)).toBeFalsy();
    expect(isUrl(null)).toBeFalsy();
    expect(isUrl(undefined)).toBeFalsy();
    expect(isUrl("")).toBeFalsy();
  });
  it("should return false for invalid URLs", () => {
    expect(isUrl("foo")).toBeFalsy();
    expect(isUrl("bar")).toBeFalsy();
    expect(isUrl("bar/test")).toBeFalsy();
    expect(isUrl("http:/example.com/")).toBeFalsy();
    expect(isUrl("ttp://example.com/")).toBeFalsy();
  });
  it("should return true for valid URLs", () => {
    expect(isUrl("http://example.com/")).toBeTruthy();
    expect(isUrl("https://example.com/")).toBeTruthy();
    expect(isUrl("http://example.com/test/123")).toBeTruthy();
    expect(isUrl("https://example.com/test/123")).toBeTruthy();
    expect(isUrl("http://example.com/test/123?foo=bar")).toBeTruthy();
    expect(isUrl("https://example.com/test/123?foo=bar")).toBeTruthy();
    expect(isUrl("http://www.example.com/")).toBeTruthy();
    expect(isUrl("https://www.example.com/")).toBeTruthy();
    expect(isUrl("http://www.example.com/test/123")).toBeTruthy();
    expect(isUrl("https://www.example.com/test/123")).toBeTruthy();
    expect(isUrl("http://www.example.com/test/123?foo=bar")).toBeTruthy();
    expect(isUrl("https://www.example.com/test/123?foo=bar")).toBeTruthy();
  });
});
