|
import { open, stat } from "node:fs/promises"; |
|
import { TextDecoder } from "node:util"; |
|
import { describe, expect, it } from "vitest"; |
|
import { FileBlob } from "./FileBlob"; |
|
|
|
describe("FileBlob", () => { |
|
it("should create a FileBlob with a slice on the entire file", async () => { |
|
const file = await open("package.json", "r"); |
|
const { size } = await stat("package.json"); |
|
|
|
const fileBlob = await FileBlob.create("package.json"); |
|
|
|
expect(fileBlob).toMatchObject({ |
|
path: "package.json", |
|
start: 0, |
|
end: size, |
|
}); |
|
expect(fileBlob.size).toBe(size); |
|
expect(fileBlob.type).toBe(""); |
|
const text = await fileBlob.text(); |
|
const expectedText = (await file.read(Buffer.alloc(size), 0, size)).buffer.toString("utf8"); |
|
expect(text).toBe(expectedText); |
|
const result = await fileBlob.stream().getReader().read(); |
|
expect(new TextDecoder().decode(result.value)).toBe(expectedText); |
|
}); |
|
|
|
it("should create a slice on the file", async () => { |
|
const file = await open("package.json", "r"); |
|
const fileBlob = await FileBlob.create("package.json"); |
|
|
|
const slice = fileBlob.slice(10, 20); |
|
|
|
expect(slice).toMatchObject({ |
|
path: "package.json", |
|
start: 10, |
|
end: 20, |
|
}); |
|
expect(slice.size).toBe(10); |
|
const sliceText = await slice.text(); |
|
const expectedText = (await file.read(Buffer.alloc(10), 0, 10, 10)).buffer.toString("utf8"); |
|
expect(sliceText).toBe(expectedText); |
|
const result = await slice.stream().getReader().read(); |
|
expect(new TextDecoder().decode(result.value)).toBe(expectedText); |
|
}); |
|
}); |
|
|