From 888b58c33efe880d7a9785935baaf7ee8ed9becc Mon Sep 17 00:00:00 2001 From: Oleg Date: Sun, 28 Aug 2022 13:44:46 +0300 Subject: [PATCH] setup jest files, do not replace dot after extension, incrase code-coverage, refactorings --- babel.config.js | 6 ++++ jest-preset.js | 0 jest.config.js | 7 +++++ package.json | 2 ++ src/services/file.service.ts | 9 +++++- src/services/file.services.test.ts | 45 +++++++++++++++++++++++++++--- 6 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 babel.config.js create mode 100644 jest-preset.js create mode 100644 jest.config.js diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..8165fe4 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = { + presets: [ + ['@babel/preset-env', { targets: { node: 'current' } }], + '@babel/preset-typescript', + ], +}; diff --git a/jest-preset.js b/jest-preset.js new file mode 100644 index 0000000..e69de29 diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..309fb6c --- /dev/null +++ b/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + 'roots': [''], + 'modulePaths': [''], + preset: 'ts-jest', + testEnvironment: 'node', + moduleDirectories: ['node_modules'], +}; diff --git a/package.json b/package.json index cc74a4f..5e82eec 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", + "alias-hq": "^5.4.0", "builtin-modules": "3.3.0", "esbuild": "0.15.5", "esbuild-jest": "^0.5.0", @@ -28,6 +29,7 @@ "jest": "29.0.1", "obsidian": "latest", "prettier": "2.7.1", + "ts-jest": "^28.0.8", "tslib": "2.4.0", "typescript": "^4.7.4" } diff --git a/src/services/file.service.ts b/src/services/file.service.ts index d22d91c..fcd63a5 100644 --- a/src/services/file.service.ts +++ b/src/services/file.service.ts @@ -55,7 +55,14 @@ const selectFilenamesWithReplacedPath = (plugin: BulkRenamePlugin) => { export const replaceFilePath = (plugin: BulkRenamePlugin, file: TFile) => { const { replacePattern, existingSymbol } = plugin.settings; - return file.path.replaceAll(existingSymbol, replacePattern); + const pathWithoutExtension = file.path.split('.').slice(0, -1).join('.'); + + const newPath = pathWithoutExtension?.replaceAll( + existingSymbol, + replacePattern, + ); + + return `${newPath}.${file.extension}`; }; export const renameFilesInObsidian = (app: App, plugin: BulkRenamePlugin) => { diff --git a/src/services/file.services.test.ts b/src/services/file.services.test.ts index 5109bd8..42c1692 100644 --- a/src/services/file.services.test.ts +++ b/src/services/file.services.test.ts @@ -18,6 +18,26 @@ describe('File Services', () => { }); describe('Renaming', () => { + it('should replace symbols in naming', () => { + const plugin = { + settings: { + replacePattern: '-', + existingSymbol: '_', + }, + } as unknown as BulkRenamePlugin; + + const file = { + path: 'journals/2022_10_13.md', + extension: 'md', + } as unknown as TFile; + + const expectedResult = 'journals/2022-10-13.md'; + + const result = replaceFilePath(plugin, file); + + expect(result).toEqual(expectedResult); + }); + it('should not rename extensions', () => { const plugin = { settings: { @@ -28,6 +48,7 @@ describe('File Services', () => { const file = { path: '2022.10.13.md', + extension: 'md', } as unknown as TFile; const expectedResult = '2022-10-13.md'; @@ -36,9 +57,25 @@ describe('File Services', () => { expect(result).toEqual(expectedResult); }); - it.todo('should replace symbols in naming'); - it.todo( - 'Should rename files only in a particular directory if the name could match other directories', - ); + + it('should update directory path', () => { + const plugin = { + settings: { + replacePattern: 'days', + existingSymbol: 'journals', + }, + } as unknown as BulkRenamePlugin; + + const file = { + path: 'journals/2022_10_13.md', + extension: 'md', + } as unknown as TFile; + + const expectedResult = 'days/2022_10_13.md'; + + const result = replaceFilePath(plugin, file); + + expect(result).toEqual(expectedResult); + }); }); });