@mdfriday/foundry
Version:
The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.
105 lines • 4.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("../factory/fs");
const fs_2 = require("../entity/fs");
// Mock dependencies
jest.mock('../vo/overlay-factory');
jest.mock('../entity/basefs');
describe('Filesystem Factory', () => {
let mockWorkspace;
let mockModules;
let mockOsFs;
beforeEach(() => {
mockOsFs = {
name: jest.fn().mockReturnValue('MockOsFs'),
};
mockWorkspace = {
path: '/workspace',
publish: '/workspace/public',
osFs: mockOsFs,
};
mockModules = {};
});
afterEach(() => {
jest.clearAllMocks();
});
describe('createFs', () => {
it('should create Fs entity with all filesystem components', async () => {
// Mock dependencies
const mockOriginFs = {};
const mockCollector = {
overlayMountsPrompt: {},
overlayMountsWorkflow: {},
overlayMountsContent: {},
overlayMountsLayouts: {},
overlayMountsStatics: {},
overlayMountsAssets: {},
};
const mockWorkFs = {};
const { createOriginFs, createMainOverlayFs } = require('../vo/overlay-factory');
const { newBaseFs } = require('../entity/basefs');
createOriginFs.mockReturnValue(mockOriginFs);
createMainOverlayFs.mockResolvedValue(mockCollector);
newBaseFs.mockReturnValue(mockWorkFs);
const result = await (0, fs_1.createFs)(mockWorkspace, mockModules);
// Verify factory functions were called correctly
expect(createOriginFs).toHaveBeenCalledWith(mockWorkspace, mockModules);
expect(createMainOverlayFs).toHaveBeenCalledWith(mockOriginFs, mockModules);
expect(newBaseFs).toHaveBeenCalledWith(mockOsFs, ['/workspace']);
// Verify Fs entity was created correctly
expect(result).toBeInstanceOf(fs_2.Fs);
expect(result.originFs).toBe(mockOriginFs);
expect(result.prompts).toBe(mockCollector.overlayMountsPrompt);
expect(result.workflows).toBe(mockCollector.overlayMountsWorkflow);
expect(result.content).toBe(mockCollector.overlayMountsContent);
expect(result.layouts).toBe(mockCollector.overlayMountsLayouts);
expect(result.statics).toBe(mockCollector.overlayMountsStatics);
expect(result.assets).toBe(mockCollector.overlayMountsAssets);
expect(result.work).toBe(mockWorkFs);
});
it('should handle async operations correctly', async () => {
const mockOriginFs = {};
const mockCollector = {
overlayMountsPrompt: {},
overlayMountsWorkflow: {},
overlayMountsContent: {},
overlayMountsLayouts: {},
overlayMountsStatics: {},
overlayMountsAssets: {},
};
const { createOriginFs, createMainOverlayFs } = require('../vo/overlay-factory');
const { newBaseFs } = require('../entity/basefs');
createOriginFs.mockReturnValue(mockOriginFs);
createMainOverlayFs.mockImplementation(async () => {
// Simulate async operation
await new Promise(resolve => setTimeout(resolve, 1));
return mockCollector;
});
newBaseFs.mockReturnValue({});
const result = await (0, fs_1.createFs)(mockWorkspace, mockModules);
expect(result).toBeInstanceOf(fs_2.Fs);
expect(createMainOverlayFs).toHaveBeenCalledTimes(1);
});
it('should pass correct workspace path to work filesystem', async () => {
const customWorkspace = {
...mockWorkspace,
path: '/custom/workspace/path',
};
const { createOriginFs, createMainOverlayFs } = require('../vo/overlay-factory');
const { newBaseFs } = require('../entity/basefs');
createOriginFs.mockReturnValue({});
createMainOverlayFs.mockResolvedValue({
overlayMountsPrompt: {},
overlayMountsWorkflow: {},
overlayMountsContent: {},
overlayMountsLayouts: {},
overlayMountsStatics: {},
overlayMountsAssets: {},
});
newBaseFs.mockReturnValue({});
await (0, fs_1.createFs)(customWorkspace, mockModules);
expect(newBaseFs).toHaveBeenCalledWith(mockOsFs, ['/custom/workspace/path']);
});
});
});
//# sourceMappingURL=factory-fs.test.js.map