import test from "node:test" import assert from "node:assert/strict" import fs from "node:fs" import fsMock from "mock-fs" import { copyDirectory } from "../copyDirectory.js" await test("utils/copyDirectory", async (t) => { t.afterEach(() => { fsMock.restore() }) await t.test("copy the files", async () => { fsMock({ "/source": { "default.png": "", "index.ts": "", }, "/destination": {}, }) let destinationDirectoryContent = await fs.promises.readdir("/destination") let sourceDirectoryContent = await fs.promises.readdir("/source") assert.strictEqual(destinationDirectoryContent.length, 0) assert.strictEqual(sourceDirectoryContent.length, 2) await copyDirectory("/source", "/destination") destinationDirectoryContent = await fs.promises.readdir("/destination") sourceDirectoryContent = await fs.promises.readdir("/source") assert.strictEqual(destinationDirectoryContent.length, 2) assert.strictEqual(sourceDirectoryContent.length, 2) assert.deepStrictEqual(destinationDirectoryContent, [ "default.png", "index.ts", ]) assert.deepStrictEqual(sourceDirectoryContent, ["default.png", "index.ts"]) }) await t.test("copy the files and folders recursively", async () => { fsMock({ "/source": { "random-folder": { "default.png": "", "second-random-folder": { "mycode.ts": "", }, }, "index.ts": "", }, "/destination": {}, }) let destinationDirectoryContent = await fs.promises.readdir("/destination") let sourceDirectoryContent = await fs.promises.readdir("/source") let randomFolderContent = await fs.promises.readdir("/source/random-folder") let secondRandomFolderContent = await fs.promises.readdir( "/source/random-folder/second-random-folder", ) assert.strictEqual(randomFolderContent.length, 2) assert.strictEqual(secondRandomFolderContent.length, 1) assert.strictEqual(destinationDirectoryContent.length, 0) assert.strictEqual(sourceDirectoryContent.length, 2) await copyDirectory("/source", "/destination") destinationDirectoryContent = await fs.promises.readdir("/destination") sourceDirectoryContent = await fs.promises.readdir("/source") randomFolderContent = await fs.promises.readdir( "/destination/random-folder", ) secondRandomFolderContent = await fs.promises.readdir( "/destination/random-folder/second-random-folder", ) assert.strictEqual(destinationDirectoryContent.length, 2) assert.strictEqual(sourceDirectoryContent.length, 2) assert.deepStrictEqual(destinationDirectoryContent, [ "index.ts", "random-folder", ]) assert.deepStrictEqual(sourceDirectoryContent, [ "index.ts", "random-folder", ]) assert.strictEqual(randomFolderContent.length, 2) assert.strictEqual(secondRandomFolderContent.length, 1) assert.deepStrictEqual(randomFolderContent, [ "default.png", "second-random-folder", ]) assert.deepStrictEqual(secondRandomFolderContent, ["mycode.ts"]) }) })