formoosejs
Version:
A simple, lightweight, and flexible form validation library
1,324 lines (940 loc) • 38.9 kB
JavaScript
import { expect, test } from "vitest";
import Formoose from "./formoose";
test("should create a new instance of formoose", () => {
let formoose = new Formoose();
expect(formoose).toBeInstanceOf(Formoose);
});
test("should initialize formoose", () => {
let formoose = new Formoose();
expect(formoose.forms).toBeInstanceOf(NodeList);
});
test("should validate the form when the data-formoose-form is provided", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-form");
document.body.appendChild(form);
expect(formoose.validateForm(form)).toBe(true);
document.body.removeChild(form);
});
test("should pass when a value is provided", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
});
test("should fail when a value is not provided", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
});
test("should pass when the value matches a valid email address format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-email", "true");
input.setAttribute("type", "email");
input.setAttribute("name", "test");
input.setAttribute("value", "test@domain.test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when the value does not match a valid email address format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-email", "true");
input.setAttribute("type", "email");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when the value length is greater than or equal to the specified minimum length", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-min", "5");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "testing");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when the value length is less than the specified minimum length", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-min", "5");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when the value length is less than or equal to the specified maximum length", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-max", "5");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when the value length is greater than the specified maximum length", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-max", "5");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "testing");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when the value is number", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-number", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should fail when the value is not a number", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-number", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when the value contains atleast one uppercase letter, one lowercase letter, one number and one special character", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-strongPassword", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "Password1!");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when the value does not contains atleast one uppercase letter, one lowercase letter, one number and one special character", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-strongPassword", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when the value matches the another input value", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-same", "test2");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-same", "test");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test2");
input2.setAttribute("value", "test");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when the value does not match the another input value", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-same", "test2");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test1");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-same", "test");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test2");
input2.setAttribute("value", "test");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-date", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "2021-01-01");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-date", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value contains only letters", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alpha", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not contains only letters", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alpha", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value contains letters and numbers", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alphaNumeric", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not contains letters and numbers", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alphaNumeric", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "!@#$%^&*");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value contains letters and dashes", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alphaDash", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test-_");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not contains letters and dashes", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-alphaDash", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is 'on', 'yes' or '1'", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-accepted", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "1");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not 'on', 'yes' or '1'", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-accepted", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is an array", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-array", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test[]");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-array", "true");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test[]");
input2.setAttribute("value", "test2");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not an array", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-array", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-array", "true");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test");
input2.setAttribute("value", "test2");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a date older than the specified date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-dateBefore", "2025-01-01");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "2020-01-01");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a date older than the specified date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-dateBefore", "2025-01-01");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "2026-01-01");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a date newer than the specified date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-dateAfter", "2025-01-01");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "2026-01-01");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a date newer than the specified date", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-dateAfter", "2025-01-01");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "2024-01-01");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a number between the specified range", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-between", "1,10");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "5");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a number between the specified range", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-between", "1,10");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "11");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a boolean", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-boolean", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "true");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a boolean", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-boolean", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is different than another input value", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-different", "test2");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-different", "test");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test2");
input2.setAttribute("value", "test2");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is same as another input value", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-different", "test2");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-different", "test");
input2.setAttribute("type", "text");
input2.setAttribute("name", "test2");
input2.setAttribute("value", "test");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a required radio button is checked", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "radio");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
input.setAttribute("checked", true);
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a required radio button is not checked", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "radio");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a required radio button group is checked", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "radio");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
input.setAttribute("checked", true);
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-required", "true");
input2.setAttribute("type", "radio");
input2.setAttribute("name", "test");
input2.setAttribute("value", "test2");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a required radio button group is not checked", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-required", "true");
input.setAttribute("type", "radio");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
let input2 = document.createElement("input");
input2.setAttribute("data-formoose-required", "true");
input2.setAttribute("type", "radio");
input2.setAttribute("name", "test");
input2.setAttribute("value", "test2");
form.appendChild(input);
form.appendChild(input2);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid URL", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-url", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "https://example.com");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid URL", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-url", "true");
input.setAttribute("type", "text");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value includes in a specified options", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-in", "test,test2,test3");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not includes in a specified options", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-in", "test,test2,test3");
input.setAttribute("name", "test");
input.setAttribute("value", "test4");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value does not includes in a specified options", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-notIn", "test,test2,test3");
input.setAttribute("name", "test");
input.setAttribute("value", "test4");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value includes in a specified options", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-notIn", "test,test2,test3");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value startsWith a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-startsWith", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "test123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not startsWith a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-startsWith", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "123test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value endsWith a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-endsWith", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "123test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not endsWith a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-endsWith", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "test123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value contains a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-contains", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "123test123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value does not contains a specified string", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-contains", "test");
input.setAttribute("name", "test");
input.setAttribute("value", "123123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid phone number", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-phone", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "+123 456 789 0123");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid phone number", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-phone", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is valid time format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-time", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "12:00 am");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not valid time format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-time", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "12:00");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid 24-hour time format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-time24", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "23:59");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid 24-hour time format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-time24", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "12:00 am");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid IPv4 address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-ipv4", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "0.0.0.0");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid IPv4 address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-ipv4", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid IPv6 address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-ipv6", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "2001:0db8:85a3:0000:0000:8a2e:0370:7334");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid IPv6 address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-ipv6", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid mac address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-macAddress", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "00:00:00:00:00:00");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid mac address", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("data-formoose-macAddress", "true");
input.setAttribute("name", "test");
input.setAttribute("value", "test");
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when a value is a valid image", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("type", "file");
input.setAttribute("data-formoose-image", "true");
input.setAttribute("name", "test");
let file = new File([""], "test.jpg", { type: "image/jpg" });
Object.defineProperty(input, "files", {
value: [file],
});
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when a value is not a valid image", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("type", "file");
input.setAttribute("data-formoose-image", "true");
input.setAttribute("name", "test");
let file = new File([""], "test.txt", { type: "text/plain" });
Object.defineProperty(input, "files", {
value: [file],
});
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});
test("should pass when an image has a valid image format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("type", "file");
input.setAttribute("data-formoose-formats", "jpg,png");
input.setAttribute("name", "test");
let file = new File([""], "test.jpg", { type: "image/jpg" });
Object.defineProperty(input, "files", {
value: [file],
});
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(true);
document.body.removeChild(form);
});
test("should fail when an image does not have a valid image format", () => {
let formoose = new Formoose();
let form = document.createElement("form");
let input = document.createElement("input");
input.setAttribute("type", "file");
input.setAttribute("data-formoose-formats", "jpg,png");
input.setAttribute("name", "test");
let file = new File([""], "test.txt", { type: "text/plain" });
Object.defineProperty(input, "files", {
value: [file],
});
form.appendChild(input);
document.body.appendChild(form);
expect(formoose.validateInput(input).isValid).toBe(false);
document.body.removeChild(form);
});