UNPKG

@dpkit/core

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

35 lines 3.85 kB
import { describe, expect, expectTypeOf, it } from "vitest"; import { AssertionError } from "../error/index.js"; import { assertSchema } from "./assert.js"; describe("assertSchema", () => { it("returns typed schema when valid", async () => { const descriptor = { fields: [ { name: "id", type: "integer", }, { name: "name", type: "string", }, ], primaryKey: ["id"], }; const schema = await assertSchema(descriptor); expectTypeOf(schema).toEqualTypeOf(); expect(schema).toEqual(descriptor); }); it("throws ValidationError when schema is invalid", async () => { const descriptor = { fields: [ { name: "id", type: 123, // Should be a string }, ], }; await expect(assertSchema(descriptor)).rejects.toThrow(AssertionError); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zY2hlbWEvYXNzZXJ0LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUUxQyxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxVQUFVLEdBQUc7WUFDakIsTUFBTSxFQUFFO2dCQUNOO29CQUNFLElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxTQUFTO2lCQUNoQjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsUUFBUTtpQkFDZjthQUNGO1lBQ0QsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ25CLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUU3QyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFVLENBQUE7UUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNwQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM3RCxNQUFNLFVBQVUsR0FBRztZQUNqQixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsSUFBSSxFQUFFLElBQUk7b0JBQ1YsSUFBSSxFQUFFLEdBQUcsRUFBRSxxQkFBcUI7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFBO1FBRUQsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUN4RSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgZXhwZWN0VHlwZU9mLCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBTY2hlbWEgfSBmcm9tIFwiLi9TY2hlbWEudHNcIlxuaW1wb3J0IHsgYXNzZXJ0U2NoZW1hIH0gZnJvbSBcIi4vYXNzZXJ0LnRzXCJcblxuZGVzY3JpYmUoXCJhc3NlcnRTY2hlbWFcIiwgKCkgPT4ge1xuICBpdChcInJldHVybnMgdHlwZWQgc2NoZW1hIHdoZW4gdmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcHJpbWFyeUtleTogW1wiaWRcIl0sXG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hID0gYXdhaXQgYXNzZXJ0U2NoZW1hKGRlc2NyaXB0b3IpXG5cbiAgICBleHBlY3RUeXBlT2Yoc2NoZW1hKS50b0VxdWFsVHlwZU9mPFNjaGVtYT4oKVxuICAgIGV4cGVjdChzY2hlbWEpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInRocm93cyBWYWxpZGF0aW9uRXJyb3Igd2hlbiBzY2hlbWEgaXMgaW52YWxpZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICAgIHR5cGU6IDEyMywgLy8gU2hvdWxkIGJlIGEgc3RyaW5nXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGF3YWl0IGV4cGVjdChhc3NlcnRTY2hlbWEoZGVzY3JpcHRvcikpLnJlamVjdHMudG9UaHJvdyhBc3NlcnRpb25FcnJvcilcbiAgfSlcbn0pXG4iXX0=