UNPKG

@mdfriday/foundry

Version:

The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.

53 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const resourcepaths_1 = require("./resourcepaths"); // 创建一个测试用的 ResourcePaths 子类来访问私有方法 class TestableResourcePaths extends resourcepaths_1.ResourcePaths { testJoin(...parts) { return this.join(...parts); } } describe('ResourcePaths', () => { let resourcePaths; beforeEach(() => { // 创建一个测试实例 // ResourcePaths(dir, file, baseDirTarget, baseDirLink, targetBasePaths, baseUrl) resourcePaths = new TestableResourcePaths('', 'test.txt', '/public/', '/public/', [], '/public/'); }); describe('join method', () => { it('should handle the bug case: baseDirLink="/public/", dir="", file="abc.txt"', () => { const result = resourcePaths.testJoin('/public/', '', 'abc.txt'); expect(result).toBe('public/abc.txt'); }); it('should handle normal cases', () => { expect(resourcePaths.testJoin('/public/', 'assets', 'style.css')).toBe('public/assets/style.css'); expect(resourcePaths.testJoin('/public', 'assets', 'style.css')).toBe('public/assets/style.css'); expect(resourcePaths.testJoin('public/', 'assets/', 'style.css')).toBe('public/assets/style.css'); expect(resourcePaths.testJoin('public', 'assets', 'style.css')).toBe('public/assets/style.css'); }); it('should handle empty parts', () => { expect(resourcePaths.testJoin('/public/', '', '', 'file.txt')).toBe('public/file.txt'); expect(resourcePaths.testJoin('', '/public/', 'file.txt')).toBe('public/file.txt'); expect(resourcePaths.testJoin('/public/', '', 'dir/', 'file.txt')).toBe('public/dir/file.txt'); }); it('should handle paths with slashes', () => { expect(resourcePaths.testJoin('/public/', '/assets/', '/style.css')).toBe('public/assets/style.css'); expect(resourcePaths.testJoin('/public/', '/assets', 'style.css')).toBe('public/assets/style.css'); expect(resourcePaths.testJoin('/public', '/assets/', 'style.css')).toBe('public/assets/style.css'); }); it('should handle single part', () => { expect(resourcePaths.testJoin('/public/')).toBe('public'); expect(resourcePaths.testJoin('public')).toBe('public'); expect(resourcePaths.testJoin('file.txt')).toBe('file.txt'); }); it('should handle all empty parts', () => { expect(resourcePaths.testJoin('', '', '')).toBe(''); expect(resourcePaths.testJoin()).toBe(''); }); it('should handle complex nested paths', () => { expect(resourcePaths.testJoin('/public/', 'assets/', 'css/', 'main.css')).toBe('public/assets/css/main.css'); expect(resourcePaths.testJoin('/public/', '', 'assets/', '', 'main.css')).toBe('public/assets/main.css'); }); }); }); //# sourceMappingURL=resourcepaths.test.js.map