valia
Version:
A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.
49 lines (41 loc) • 1.61 kB
JavaScript
import { describe, it } from "node:test";
import assert from "node:assert";
import { Schema } from "../../../dist/index.js";
describe("Schema format: 'number'", () => {
it("basic", () => {
const schema = new Schema({ type: "number" });
assert.strictEqual(schema.validate('0'), false);
assert.strictEqual(schema.validate(0), true);
});
it("'min' parameter", () => {
const schema = new Schema({ type: "number", min: 3 });
assert.strictEqual(schema.validate(1), false);
assert.strictEqual(schema.validate(2), false);
assert.strictEqual(schema.validate(3), true);
assert.strictEqual(schema.validate(4), true);
});
it("'max' parameter", () => {
const schema = new Schema({ type: "number", max: 3 });
assert.strictEqual(schema.validate(5), false);
assert.strictEqual(schema.validate(4), false);
assert.strictEqual(schema.validate(3), true);
assert.strictEqual(schema.validate(2), true);
});
it("'enum' parameter", () => {
const schema_enum_array = new Schema({ type: "number", enum: [1, 2, 3]});
const schema_enum_object = new Schema({ type: "number", enum: { Red: 1, Green: 2, Blue: 3 }});
assert.strictEqual(schema_enum_array.validate(4), false);
assert.strictEqual(schema_enum_array.validate(3), true);
assert.strictEqual(schema_enum_object.validate(4), false);
assert.strictEqual(schema_enum_object.validate(3), true);
});
it("'custom' parameter", () => {
const schema = new Schema({
type: "number",
custom(x) { return (x % 2 === 0);
}
});
assert.strictEqual(schema.validate(3), false);
assert.strictEqual(schema.validate(2), true);
});
});