UNPKG

@dpkit/file

Version:

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

112 lines (110 loc) 2.88 kB
import { describe, expect, it } from "vitest" import { saveResourceFiles } from "./save.ts" describe("saveResourceFiles", () => { it.each([ { description: "local path", basepath: "data", resource: { path: "data/table.csv" }, descriptor: { path: "table.csv" }, }, { description: "local paths", basepath: "data", resource: { path: ["data/table1.csv", "data/table2.csv"] }, descriptor: { path: ["table1.csv", "table2.csv"] }, }, { description: "local path and remote path", basepath: "data", resource: { path: "data/table.csv", schema: "https://example.com/schema.json", }, descriptor: { path: "table.csv", schema: "https://example.com/schema.json", }, }, { description: "local path and remote path using withRemote", basepath: "data", withRemote: true, resource: { type: "table", path: "data/table.csv", schema: "https://example.com/schema.json", }, descriptor: { type: "table", path: "table.csv", schema: "schema.json", }, }, { description: "remote paths with the same filename using withRemote", basepath: "data", withRemote: true, resource: { path: [ "http://example1.com/table.csv", "http://example2.com/table.csv", "http://example3.com/table.csv", "http://example4.com/table.csv.zip", "http://example5.com/table.csv.zip", ], }, descriptor: { path: [ "table.csv", "table-1.csv", "table-2.csv", "table.csv.zip", "table-1.csv.zip", ], }, }, { description: "local paths in different folders", basepath: "data", resource: { type: "table", path: "data/folder1/table.csv", schema: "data/folder2/schema.json", }, descriptor: { type: "table", path: "folder1/table.csv", schema: "folder2/schema.json", }, }, { description: "local paths in different folders using withoutFolders", basepath: "data", withoutFolders: true, resource: { type: "table", path: "data/folder1/table.csv", schema: "data/folder2/schema.json", }, descriptor: { type: "table", path: "folder1-table.csv", schema: "folder2-schema.json", }, }, ])( "$description", async ({ resource, basepath, withRemote, withoutFolders, descriptor }) => { expect( // @ts-ignore await saveResourceFiles(resource, { basepath, withRemote, withoutFolders, saveFile: async props => props.denormalizedPath, }), ).toEqual(descriptor) }, ) })