@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
33 lines • 4.3 kB
JavaScript
import { describe, expect, it } from "vitest";
import { validatePackageDescriptor } from "./validate.js";
describe("validatePackageDescriptor", () => {
it("returns valid result for valid package", async () => {
const descriptor = {
name: "example-package",
resources: [
{
name: "resource-1",
path: "data.csv",
},
],
};
const result = await validatePackageDescriptor(descriptor);
expect(result.valid).toBe(true);
expect(result.errors).toEqual([]);
});
it("returns validation errors for invalid package", async () => {
const descriptor = {
name: 123, // Should be a string
resources: "not-an-array", // Should be an array
};
const result = await validatePackageDescriptor(descriptor);
expect(result.valid).toBe(false);
expect(result.errors.length).toBeGreaterThan(0);
const error = result.errors[0];
expect(error).toBeDefined();
if (error) {
expect(error.keyword).toBe("type");
}
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvdmFsaWRhdGUuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXpELFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDekMsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsVUFBVTtpQkFDakI7YUFDRjtTQUNGLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRTFELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzdELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxHQUFHLEVBQUUscUJBQXFCO1lBQ2hDLFNBQVMsRUFBRSxjQUFjLEVBQUUscUJBQXFCO1NBQ2pELENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRTFELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUvQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUMzQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgdmFsaWRhdGVQYWNrYWdlRGVzY3JpcHRvciB9IGZyb20gXCIuL3ZhbGlkYXRlLnRzXCJcblxuZGVzY3JpYmUoXCJ2YWxpZGF0ZVBhY2thZ2VEZXNjcmlwdG9yXCIsICgpID0+IHtcbiAgaXQoXCJyZXR1cm5zIHZhbGlkIHJlc3VsdCBmb3IgdmFsaWQgcGFja2FnZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IFwiZXhhbXBsZS1wYWNrYWdlXCIsXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicmVzb3VyY2UtMVwiLFxuICAgICAgICAgIHBhdGg6IFwiZGF0YS5jc3ZcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmFsaWRhdGVQYWNrYWdlRGVzY3JpcHRvcihkZXNjcmlwdG9yKVxuXG4gICAgZXhwZWN0KHJlc3VsdC52YWxpZCkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzKS50b0VxdWFsKFtdKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyB2YWxpZGF0aW9uIGVycm9ycyBmb3IgaW52YWxpZCBwYWNrYWdlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogMTIzLCAvLyBTaG91bGQgYmUgYSBzdHJpbmdcbiAgICAgIHJlc291cmNlczogXCJub3QtYW4tYXJyYXlcIiwgLy8gU2hvdWxkIGJlIGFuIGFycmF5XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmFsaWRhdGVQYWNrYWdlRGVzY3JpcHRvcihkZXNjcmlwdG9yKVxuXG4gICAgZXhwZWN0KHJlc3VsdC52YWxpZCkudG9CZShmYWxzZSlcbiAgICBleHBlY3QocmVzdWx0LmVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKVxuXG4gICAgY29uc3QgZXJyb3IgPSByZXN1bHQuZXJyb3JzWzBdXG4gICAgZXhwZWN0KGVycm9yKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBleHBlY3QoZXJyb3Iua2V5d29yZCkudG9CZShcInR5cGVcIilcbiAgICB9XG4gIH0pXG59KVxuIl19