import mongoose from "mongoose"; import { validatable } from "../index"; import { createModel } from "./utils"; import { DocumentValidator } from "../DocumentValidator"; import createError from "http-errors"; const Schema = mongoose.Schema; describe("index", () => { describe("validatable", () => { test("pass validator - success", async () => { const definition = { name: { type: String, required: true } }; const schema = new Schema(definition); const validator = new DocumentValidator(schema); schema.plugin(validatable, { validator }); const Model = createModel(schema); const doc = new Model({ name: "hej" }); await doc.validate(); }); test("pass validator - fails", async () => { const definition = { name: { type: String, required: true } }; const schema = new Schema(definition); const validator = new DocumentValidator(schema); schema.plugin(validatable, { validator }); const Model = createModel(schema); const doc = new Model({ name: null }); try { await doc.validate(); fail(); } catch (err) { expect(err).toBeInstanceOf(createError.BadRequest); } }); test("no validator - success", async () => { const definition = { name: { type: String, required: true } }; const schema = new Schema(definition); schema.plugin(validatable); const Model = createModel(schema); const doc = new Model({ name: "hej" }); await doc.validate(); }); test("no validator - fails", async () => { const definition = { name: { type: String, required: true } }; const schema = new Schema(definition); schema.plugin(validatable); const Model = createModel(schema); const doc = new Model({ name: null }); try { await doc.validate(); fail(); } catch (err) { expect(err).toBeInstanceOf(createError.BadRequest); } }); }); });