valia
Version:
A runtime data validator in TypeScript with advanced type inference, built-in validation functions, and seamless integration for server and client environments.
77 lines (63 loc) • 2.21 kB
JavaScript
import { describe, it } from "node:test";
import assert from "node:assert";
import { AbstractPlugin, SchemaPlugins, Issue } from "../../dist/index.js";
describe("Schema global criteria", () => {
it("schema plugin '1' plugin", () => {
class Plugin extends AbstractPlugin {
foo() { return ("foo_result"); }
beforeInitate() {}
afterInitate() {}
constructor(...args) {
super(...args)
}
}
const Schema = SchemaPlugins(Plugin);
const schemaInstance = new Schema({ type: "string" });
assert.strictEqual(schemaInstance.validate("test"), true);
assert.strictEqual(schemaInstance.foo(), "foo_result");
});
it("schema plugin '2' plugin", () => {
class Plugin_1 extends AbstractPlugin {
foo() { return ("foo_result"); }
beforeInitate() {}
afterInitate() {}
constructor(...args) {
super(...args)
}
}
class Plugin_2 extends AbstractPlugin {
bar() { return ("bar_result"); }
beforeInitate() {}
afterInitate() {}
constructor(...args) {
super(...args)
}
}
const Schema = SchemaPlugins(Plugin_1, Plugin_2);
const schemaInstance = new Schema({ type: "string" });
assert.strictEqual(schemaInstance.validate("test"), true);
assert.strictEqual(schemaInstance.foo(), "foo_result");
assert.strictEqual(schemaInstance.bar(), "bar_result");
});
it("schema plugin key conflict", () => {
class Plugin_1 extends AbstractPlugin {
foo() {}
beforeInitate() {}
afterInitate() {}
constructor(...args) {
super(...args)
}
}
class Plugin_2 extends AbstractPlugin {
foo() {}
beforeInitate() {}
afterInitate() {}
constructor(...args) {
super(...args)
}
}
assert.throws(() => {
SchemaPlugins(Plugin_1, Plugin_2);
}, Error);
});
});