UNPKG

@dpkit/core

Version:

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

30 lines 4.21 kB
import { describe, expect, it } from "vitest"; import { validateResourceDescriptor } from "./validate.js"; describe("validateResourceDescriptor", () => { it("returns valid result for valid resource", async () => { const descriptor = { name: "example-resource", path: "data.csv", format: "csv", encoding: "utf-8", }; const result = await validateResourceDescriptor(descriptor); expect(result.valid).toBe(true); expect(result.errors).toEqual([]); }); it("returns validation errors for invalid resource", async () => { const invalidResource = { name: 123, // Should be a string path: true, // Should be a string or array of strings }; const result = await validateResourceDescriptor(invalidResource); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Jlc291cmNlL3ZhbGlkYXRlLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxRCxRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO0lBQzFDLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RCxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDOUQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxFQUFFLEdBQUcsRUFBRSxxQkFBcUI7WUFDaEMsSUFBSSxFQUFFLElBQUksRUFBRSx5Q0FBeUM7U0FDdEQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQTBCLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRS9DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzNCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyB2YWxpZGF0ZVJlc291cmNlRGVzY3JpcHRvciB9IGZyb20gXCIuL3ZhbGlkYXRlLnRzXCJcblxuZGVzY3JpYmUoXCJ2YWxpZGF0ZVJlc291cmNlRGVzY3JpcHRvclwiLCAoKSA9PiB7XG4gIGl0KFwicmV0dXJucyB2YWxpZCByZXN1bHQgZm9yIHZhbGlkIHJlc291cmNlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJleGFtcGxlLXJlc291cmNlXCIsXG4gICAgICBwYXRoOiBcImRhdGEuY3N2XCIsXG4gICAgICBmb3JtYXQ6IFwiY3N2XCIsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZhbGlkYXRlUmVzb3VyY2VEZXNjcmlwdG9yKGRlc2NyaXB0b3IpXG5cbiAgICBleHBlY3QocmVzdWx0LnZhbGlkKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvRXF1YWwoW10pXG4gIH0pXG5cbiAgaXQoXCJyZXR1cm5zIHZhbGlkYXRpb24gZXJyb3JzIGZvciBpbnZhbGlkIHJlc291cmNlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBpbnZhbGlkUmVzb3VyY2UgPSB7XG4gICAgICBuYW1lOiAxMjMsIC8vIFNob3VsZCBiZSBhIHN0cmluZ1xuICAgICAgcGF0aDogdHJ1ZSwgLy8gU2hvdWxkIGJlIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3NcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2YWxpZGF0ZVJlc291cmNlRGVzY3JpcHRvcihpbnZhbGlkUmVzb3VyY2UpXG5cbiAgICBleHBlY3QocmVzdWx0LnZhbGlkKS50b0JlKGZhbHNlKVxuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG5cbiAgICBjb25zdCBlcnJvciA9IHJlc3VsdC5lcnJvcnNbMF1cbiAgICBleHBlY3QoZXJyb3IpLnRvQmVEZWZpbmVkKClcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGV4cGVjdChlcnJvci5rZXl3b3JkKS50b0JlKFwidHlwZVwiKVxuICAgIH1cbiAgfSlcbn0pXG4iXX0=