UNPKG

@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
"use strict"; 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