@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
24 lines • 3.46 kB
JavaScript
import { describe, expect, expectTypeOf, it } from "vitest";
import { AssertionError } from "../general/index.js";
import { assertResource } from "./assert.js";
describe("assertResource", () => {
it("returns typed resource when valid", async () => {
const descriptor = {
name: "example-resource",
path: "data.csv",
format: "csv",
encoding: "utf-8",
};
const resource = await assertResource(descriptor);
expectTypeOf(resource).toEqualTypeOf();
expect(resource).toEqual(descriptor);
});
it("throws AssertionError when resource is invalid", async () => {
const invalidResource = {
name: 123, // Should be a string
path: true, // Should be a string or array of strings
};
await expect(assertResource(invalidResource)).rejects.toThrow(AssertionError);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvdXJjZS9hc3NlcnQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTVDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFBO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFakQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBWSxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDOUQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxFQUFFLEdBQUcsRUFBRSxxQkFBcUI7WUFDaEMsSUFBSSxFQUFFLElBQUksRUFBRSx5Q0FBeUM7U0FDdEQsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQzNELGNBQWMsQ0FDZixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGV4cGVjdFR5cGVPZiwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcIi4uL2dlbmVyYWwvaW5kZXguanNcIlxuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCIuL1Jlc291cmNlLmpzXCJcbmltcG9ydCB7IGFzc2VydFJlc291cmNlIH0gZnJvbSBcIi4vYXNzZXJ0LmpzXCJcblxuZGVzY3JpYmUoXCJhc3NlcnRSZXNvdXJjZVwiLCAoKSA9PiB7XG4gIGl0KFwicmV0dXJucyB0eXBlZCByZXNvdXJjZSB3aGVuIHZhbGlkXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJleGFtcGxlLXJlc291cmNlXCIsXG4gICAgICBwYXRoOiBcImRhdGEuY3N2XCIsXG4gICAgICBmb3JtYXQ6IFwiY3N2XCIsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlID0gYXdhaXQgYXNzZXJ0UmVzb3VyY2UoZGVzY3JpcHRvcilcblxuICAgIGV4cGVjdFR5cGVPZihyZXNvdXJjZSkudG9FcXVhbFR5cGVPZjxSZXNvdXJjZT4oKVxuICAgIGV4cGVjdChyZXNvdXJjZSkudG9FcXVhbChkZXNjcmlwdG9yKVxuICB9KVxuXG4gIGl0KFwidGhyb3dzIEFzc2VydGlvbkVycm9yIHdoZW4gcmVzb3VyY2UgaXMgaW52YWxpZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW52YWxpZFJlc291cmNlID0ge1xuICAgICAgbmFtZTogMTIzLCAvLyBTaG91bGQgYmUgYSBzdHJpbmdcbiAgICAgIHBhdGg6IHRydWUsIC8vIFNob3VsZCBiZSBhIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzXG4gICAgfVxuXG4gICAgYXdhaXQgZXhwZWN0KGFzc2VydFJlc291cmNlKGludmFsaWRSZXNvdXJjZSkpLnJlamVjdHMudG9UaHJvdyhcbiAgICAgIEFzc2VydGlvbkVycm9yLFxuICAgIClcbiAgfSlcbn0pXG4iXX0=