mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2024-12-08 00:45:29 +01:00
93 lines
3.1 KiB
TypeScript
93 lines
3.1 KiB
TypeScript
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"])
|
|
})
|
|
})
|