@dpkit/core
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
28 lines • 4.8 kB
JavaScript
import { join, relative } from "node:path";
import { describe, expect, expectTypeOf, it } from "vitest";
import { loadPackageDescriptor } from "./load.js";
describe("loadPackageDescriptor", async () => {
const getFixturePath = (name) => relative(process.cwd(), join(__dirname, "fixtures", name));
it("loads a package from a local file path", async () => {
const datapackage = await loadPackageDescriptor(getFixturePath("package.json"));
expectTypeOf(datapackage).toEqualTypeOf();
expect(datapackage.name).toBe("name");
expect(datapackage.resources.length).toBeGreaterThan(0);
const resource = datapackage.resources[0];
expect(resource).toBeDefined();
if (resource) {
expect(resource).toEqual({
type: "table",
name: "name",
format: "csv",
path: getFixturePath("table.csv"),
dialect: getFixturePath("dialect.json"),
schema: getFixturePath("schema.json"),
});
}
});
it("throws an error when package is invalid", async () => {
await expect(loadPackageDescriptor(getFixturePath("package-invalid.json"))).rejects.toThrow();
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9sb2FkLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFakQsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDdEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRTVELEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0RCxNQUFNLFdBQVcsR0FBRyxNQUFNLHFCQUFxQixDQUM3QyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQy9CLENBQUE7UUFFRCxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxFQUFXLENBQUE7UUFDbEQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXZELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRTlCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUN2QixJQUFJLEVBQUUsT0FBTztnQkFDYixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsS0FBSztnQkFDYixJQUFJLEVBQUUsY0FBYyxDQUFDLFdBQVcsQ0FBQztnQkFDakMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZDLE1BQU0sRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDO2FBQ3RDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RCxNQUFNLE1BQU0sQ0FDVixxQkFBcUIsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUM5RCxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNyQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiwgcmVsYXRpdmUgfSBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGV4cGVjdFR5cGVPZiwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuaW1wb3J0IHsgbG9hZFBhY2thZ2VEZXNjcmlwdG9yIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5cbmRlc2NyaWJlKFwibG9hZFBhY2thZ2VEZXNjcmlwdG9yXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgZ2V0Rml4dHVyZVBhdGggPSAobmFtZTogc3RyaW5nKSA9PlxuICAgIHJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpvaW4oX19kaXJuYW1lLCBcImZpeHR1cmVzXCIsIG5hbWUpKVxuXG4gIGl0KFwibG9hZHMgYSBwYWNrYWdlIGZyb20gYSBsb2NhbCBmaWxlIHBhdGhcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgbG9hZFBhY2thZ2VEZXNjcmlwdG9yKFxuICAgICAgZ2V0Rml4dHVyZVBhdGgoXCJwYWNrYWdlLmpzb25cIiksXG4gICAgKVxuXG4gICAgZXhwZWN0VHlwZU9mKGRhdGFwYWNrYWdlKS50b0VxdWFsVHlwZU9mPFBhY2thZ2U+KClcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UubmFtZSkudG9CZShcIm5hbWVcIilcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UucmVzb3VyY2VzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGRhdGFwYWNrYWdlLnJlc291cmNlc1swXVxuICAgIGV4cGVjdChyZXNvdXJjZSkudG9CZURlZmluZWQoKVxuXG4gICAgaWYgKHJlc291cmNlKSB7XG4gICAgICBleHBlY3QocmVzb3VyY2UpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICBmb3JtYXQ6IFwiY3N2XCIsXG4gICAgICAgIHBhdGg6IGdldEZpeHR1cmVQYXRoKFwidGFibGUuY3N2XCIpLFxuICAgICAgICBkaWFsZWN0OiBnZXRGaXh0dXJlUGF0aChcImRpYWxlY3QuanNvblwiKSxcbiAgICAgICAgc2NoZW1hOiBnZXRGaXh0dXJlUGF0aChcInNjaGVtYS5qc29uXCIpLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgaXQoXCJ0aHJvd3MgYW4gZXJyb3Igd2hlbiBwYWNrYWdlIGlzIGludmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIGxvYWRQYWNrYWdlRGVzY3JpcHRvcihnZXRGaXh0dXJlUGF0aChcInBhY2thZ2UtaW52YWxpZC5qc29uXCIpKSxcbiAgICApLnJlamVjdHMudG9UaHJvdygpXG4gIH0pXG59KVxuIl19