mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
128 lines
3.2 KiB
TypeScript
128 lines
3.2 KiB
TypeScript
import {
|
|
type FileTree,
|
|
createFile,
|
|
existsFile,
|
|
getFileContent,
|
|
isFolder,
|
|
moveFile,
|
|
removeFile,
|
|
traverse,
|
|
} from "./filetree";
|
|
|
|
test("createFile() set file into the file tree", () => {
|
|
let fileTree: FileTree = {
|
|
"main.tf": "terraform",
|
|
images: { "java.Dockerfile": "java dockerfile" },
|
|
};
|
|
fileTree = createFile(
|
|
"images/python.Dockerfile",
|
|
fileTree,
|
|
"python dockerfile",
|
|
);
|
|
expect((fileTree.images as FileTree)["python.Dockerfile"]).toEqual(
|
|
"python dockerfile",
|
|
);
|
|
});
|
|
|
|
test("getFileContent() return the file content from the file tree", () => {
|
|
const fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: { "java.Dockerfile": "java dockerfile" },
|
|
};
|
|
expect(getFileContent("images/java.Dockerfile", fileTree)).toEqual(
|
|
"java dockerfile",
|
|
);
|
|
});
|
|
|
|
test("removeFile() removes a file from a folder", () => {
|
|
let fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
"python.Dockerfile": "python Dockerfile",
|
|
},
|
|
};
|
|
fileTree = removeFile("images/python.Dockerfile", fileTree);
|
|
const expectedFileTree = {
|
|
"main.tf": "terraform content",
|
|
images: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
},
|
|
};
|
|
expect(expectedFileTree).toEqual(fileTree);
|
|
});
|
|
|
|
test("removeFile() removes a file from root", () => {
|
|
let fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
"python.Dockerfile": "python Dockerfile",
|
|
},
|
|
};
|
|
fileTree = removeFile("main.tf", fileTree);
|
|
const expectedFileTree = {
|
|
images: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
"python.Dockerfile": "python Dockerfile",
|
|
},
|
|
};
|
|
expect(expectedFileTree).toEqual(fileTree);
|
|
});
|
|
|
|
test("moveFile() moves a file from in file tree", () => {
|
|
let fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
"python.Dockerfile": "python Dockerfile",
|
|
},
|
|
};
|
|
fileTree = moveFile(
|
|
"images/java.Dockerfile",
|
|
"other/java.Dockerfile",
|
|
fileTree,
|
|
);
|
|
const expectedFileTree = {
|
|
"main.tf": "terraform content",
|
|
images: {
|
|
"python.Dockerfile": "python Dockerfile",
|
|
},
|
|
other: {
|
|
"java.Dockerfile": "java dockerfile",
|
|
},
|
|
};
|
|
expect(fileTree).toEqual(expectedFileTree);
|
|
});
|
|
|
|
test("existsFile() returns if there is or not a file", () => {
|
|
const fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: { "java.Dockerfile": "java dockerfile" },
|
|
};
|
|
expect(existsFile("images/java.Dockerfile", fileTree)).toBeTruthy();
|
|
expect(existsFile("no-existent-path", fileTree)).toBeFalsy();
|
|
});
|
|
|
|
test("isFolder() returns when a path is a folder or not", () => {
|
|
const fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: { "java.Dockerfile": "java dockerfile" },
|
|
};
|
|
expect(isFolder("images", fileTree)).toBeTruthy();
|
|
expect(isFolder("images/java.Dockerfile", fileTree)).toBeFalsy();
|
|
});
|
|
|
|
test("traverse() go trough all the file tree files", () => {
|
|
const fileTree: FileTree = {
|
|
"main.tf": "terraform content",
|
|
images: { "java.Dockerfile": "java dockerfile" },
|
|
};
|
|
const filePaths: string[] = [];
|
|
traverse(fileTree, (_content, _filename, fullPath) => {
|
|
filePaths.push(fullPath);
|
|
});
|
|
const expectedFilePaths = ["main.tf", "images", "images/java.Dockerfile"];
|
|
expect(filePaths).toEqual(expectedFilePaths);
|
|
});
|