@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
JavaScript
;
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