diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..8bb3720 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,5 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', +} diff --git a/package.json b/package.json index 39b84c7..d88074c 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "cli": "yarn workspace client start", "lint": "eslint --ext .js,.vue .", "format": "prettier --ignore-path .prettierignore --write app server", - "test": "yarn node --experimental-vm-modules $(yarn bin jest)", + "test": "yarn jest", "test:e2e": "yarn workspace tests test", "test:open": "yarn workspace tests test:open", "analytics": "yarn workspace analytics dev", diff --git a/packages/file-graph/package.json b/packages/file-graph/package.json index 1b7b087..0f763f1 100644 --- a/packages/file-graph/package.json +++ b/packages/file-graph/package.json @@ -6,6 +6,7 @@ "types": "dist/index.d.ts", "license": "MIT", "scripts": { - "build": "tsc && node post-build-script.js" + "build": "tsc && node post-build-script.js", + "test": "yarn build && jest" } } diff --git a/packages/file-graph/src/file.js b/packages/file-graph/src/file.js deleted file mode 100644 index 983cbeb..0000000 --- a/packages/file-graph/src/file.js +++ /dev/null @@ -1,21 +0,0 @@ -import { basename } from './utils.js' - -export default class File { - constructor({ path, type, discovered }) { - this.path = path.trimEnd('/') - this.name = basename(path) - this.type = type - this.discovered = discovered - } - - isDirectory() { - return this.type === 'folder' - } - - contains(file) { - if (!this.isDirectory()) return false - if (this.path === file.path) return true - const parentPath = this.path.endsWith('/') ? this.path : `${this.path}/` - return file.path.startsWith(parentPath) - } -} diff --git a/packages/file-graph/tests/file.test.js b/packages/file-graph/src/file.test.ts similarity index 92% rename from packages/file-graph/tests/file.test.js rename to packages/file-graph/src/file.test.ts index f1f84ce..1637a96 100644 --- a/packages/file-graph/tests/file.test.js +++ b/packages/file-graph/src/file.test.ts @@ -1,4 +1,6 @@ -import File from './file.js' +import { describe, expect, test } from '@jest/globals' + +import File from './file' describe('File', () => { let file diff --git a/packages/file-graph/src/file.ts b/packages/file-graph/src/file.ts new file mode 100644 index 0000000..e416bf2 --- /dev/null +++ b/packages/file-graph/src/file.ts @@ -0,0 +1,33 @@ +/* eslint-disable lines-between-class-members */ +import { basename } from './utils' + +interface FileObject { + path: string + type: string + discovered: boolean +} + +export default class File implements FileObject { + path: string + name: string + type: string + discovered: boolean + + constructor(obj: FileObject) { + this.path = obj.path.trimEnd() + this.name = basename(obj.path) + this.type = obj.type + this.discovered = obj.discovered + } + + isDirectory() { + return this.type === 'folder' + } + + contains(file: FileObject) { + if (!this.isDirectory()) return false + if (this.path === file.path) return true + const parentPath = this.path.endsWith('/') ? this.path : `${this.path}/` + return file.path.startsWith(parentPath) + } +} diff --git a/packages/file-graph/tests/fileGraph.test.js b/packages/file-graph/src/fileGraph.test.js similarity index 97% rename from packages/file-graph/tests/fileGraph.test.js rename to packages/file-graph/src/fileGraph.test.js index 509b33d..34c146b 100644 --- a/packages/file-graph/tests/fileGraph.test.js +++ b/packages/file-graph/src/fileGraph.test.js @@ -1,5 +1,5 @@ -import FileGraph from './fileGraph.js' -import FileNode from './fileNode.js' +import FileGraph from './fileGraph' +import FileNode from './fileNode' describe('FileGraph', () => { let root diff --git a/packages/file-graph/src/fileNode.js b/packages/file-graph/src/fileNode.js index 15b439a..716cadf 100644 --- a/packages/file-graph/src/fileNode.js +++ b/packages/file-graph/src/fileNode.js @@ -1,4 +1,4 @@ -import File from './file.js' +import File from './file' import { DuplicateItemError, ParentNotExistsError, diff --git a/packages/file-graph/tests/fileNode.test.js b/packages/file-graph/src/fileNode.test.js similarity index 99% rename from packages/file-graph/tests/fileNode.test.js rename to packages/file-graph/src/fileNode.test.js index 3690cf1..6969996 100644 --- a/packages/file-graph/tests/fileNode.test.js +++ b/packages/file-graph/src/fileNode.test.js @@ -1,5 +1,5 @@ import { DuplicateItemError, ParentNotExistsError } from './errors' -import FileNode from './fileNode.js' +import FileNode from './fileNode' function createNodeFromFiles(files) { const node = new FileNode(files[0]) diff --git a/packages/file-graph/src/index.js b/packages/file-graph/src/index.js index 4b1fcda..de0c671 100644 --- a/packages/file-graph/src/index.js +++ b/packages/file-graph/src/index.js @@ -1,3 +1,3 @@ -export { default as File } from './file.js' +export { default as File } from './file' export { default as FileNode } from './fileNode.js' export { default as FileGraph } from './fileGraph.js'