@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 "../error/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvdXJjZS9hc3NlcnQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTVDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsTUFBTSxFQUFFLEtBQUs7WUFDYixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFBO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFakQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBWSxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDOUQsTUFBTSxlQUFlLEdBQUc7WUFDdEIsSUFBSSxFQUFFLEdBQUcsRUFBRSxxQkFBcUI7WUFDaEMsSUFBSSxFQUFFLElBQUksRUFBRSx5Q0FBeUM7U0FDdEQsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQzNELGNBQWMsQ0FDZixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGV4cGVjdFR5cGVPZiwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB7IEFzc2VydGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9yL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2UgfSBmcm9tIFwiLi9SZXNvdXJjZS50c1wiXG5pbXBvcnQgeyBhc3NlcnRSZXNvdXJjZSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbmRlc2NyaWJlKFwiYXNzZXJ0UmVzb3VyY2VcIiwgKCkgPT4ge1xuICBpdChcInJldHVybnMgdHlwZWQgcmVzb3VyY2Ugd2hlbiB2YWxpZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IFwiZXhhbXBsZS1yZXNvdXJjZVwiLFxuICAgICAgcGF0aDogXCJkYXRhLmNzdlwiLFxuICAgICAgZm9ybWF0OiBcImNzdlwiLFxuICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGF3YWl0IGFzc2VydFJlc291cmNlKGRlc2NyaXB0b3IpXG5cbiAgICBleHBlY3RUeXBlT2YocmVzb3VyY2UpLnRvRXF1YWxUeXBlT2Y8UmVzb3VyY2U+KClcbiAgICBleHBlY3QocmVzb3VyY2UpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInRocm93cyBBc3NlcnRpb25FcnJvciB3aGVuIHJlc291cmNlIGlzIGludmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGludmFsaWRSZXNvdXJjZSA9IHtcbiAgICAgIG5hbWU6IDEyMywgLy8gU2hvdWxkIGJlIGEgc3RyaW5nXG4gICAgICBwYXRoOiB0cnVlLCAvLyBTaG91bGQgYmUgYSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5nc1xuICAgIH1cblxuICAgIGF3YWl0IGV4cGVjdChhc3NlcnRSZXNvdXJjZShpbnZhbGlkUmVzb3VyY2UpKS5yZWplY3RzLnRvVGhyb3coXG4gICAgICBBc3NlcnRpb25FcnJvcixcbiAgICApXG4gIH0pXG59KVxuIl19