From e8c801e5db586ada099440821be27f13fd89da04 Mon Sep 17 00:00:00 2001 From: hugo Date: Fri, 27 Feb 2026 21:29:03 +0100 Subject: [PATCH] fix: wired up python macro stuff --- .../engine/mainProcessPythonApiInvoker.ts | 12 +++++ .../mainProcessPythonApiInvoker.test.ts | 48 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/main/engine/mainProcessPythonApiInvoker.ts b/src/main/engine/mainProcessPythonApiInvoker.ts index 05c7865..c99f4a6 100644 --- a/src/main/engine/mainProcessPythonApiInvoker.ts +++ b/src/main/engine/mainProcessPythonApiInvoker.ts @@ -90,6 +90,10 @@ export const ENGINE_MAP: Record = { const { getScriptEngine } = require('../engine/ScriptEngine'); return getScriptEngine(); }, + templates: () => { + const { getTemplateEngine } = require('../engine/TemplateEngine'); + return getTemplateEngine(); + }, tasks: () => { const { taskManager } = require('../engine/TaskManager'); return taskManager; @@ -190,6 +194,14 @@ const METHOD_NAME_MAP: Record = { 'scripts.get': 'getScript', 'scripts.getAll': 'getAllScripts', 'scripts.rebuildFromFiles': 'rebuildDatabaseFromFiles', + 'templates.create': 'createTemplate', + 'templates.update': 'updateTemplate', + 'templates.delete': 'deleteTemplate', + 'templates.get': 'getTemplate', + 'templates.getAll': 'getAllTemplates', + 'templates.getEnabledByKind': 'getEnabledTemplatesByKind', + 'templates.validate': 'validateTemplate', + 'templates.rebuildFromFiles': 'rebuildDatabaseFromFiles', 'tasks.getAll': 'getAllTasks', 'tasks.getRunning': 'getRunningTasks', 'tasks.cancel': 'cancelTask', diff --git a/tests/engine/mainProcessPythonApiInvoker.test.ts b/tests/engine/mainProcessPythonApiInvoker.test.ts index 2c6f8a0..5add57e 100644 --- a/tests/engine/mainProcessPythonApiInvoker.test.ts +++ b/tests/engine/mainProcessPythonApiInvoker.test.ts @@ -39,6 +39,17 @@ const mockScriptEngine: Record> = { rebuildDatabaseFromFiles: vi.fn().mockResolvedValue(undefined), }; +const mockTemplateEngine: Record> = { + createTemplate: vi.fn().mockResolvedValue({ id: 't1' }), + updateTemplate: vi.fn().mockResolvedValue(null), + deleteTemplate: vi.fn().mockResolvedValue({ deleted: true }), + getTemplate: vi.fn().mockResolvedValue(null), + getAllTemplates: vi.fn().mockResolvedValue([]), + getEnabledTemplatesByKind: vi.fn().mockResolvedValue([]), + validateTemplate: vi.fn().mockResolvedValue({ valid: true, errors: [] }), + rebuildDatabaseFromFiles: vi.fn().mockResolvedValue(undefined), +}; + const mockTagEngine: Record> = { getAllTags: vi.fn().mockResolvedValue([]), getTagsWithCounts: vi.fn().mockResolvedValue([]), @@ -145,6 +156,7 @@ describe('invokeMainProcessPythonApi', () => { ENGINE_MAP.meta = () => mockMetaEngine as Record unknown>; ENGINE_MAP.tags = () => mockTagEngine as Record unknown>; ENGINE_MAP.scripts = () => mockScriptEngine as Record unknown>; + ENGINE_MAP.templates = () => mockTemplateEngine as Record unknown>; ENGINE_MAP.tasks = () => mockTaskManager as Record unknown>; ENGINE_MAP.sync = () => mockGitApiAdapter as Record unknown>; ENGINE_MAP.publish = () => mockPublishApiAdapter as Record unknown>; @@ -188,6 +200,42 @@ describe('invokeMainProcessPythonApi', () => { expect(mockScriptEngine.deleteScript).toHaveBeenCalledWith('s1'); }); + it('routes templates.create to TemplateEngine.createTemplate', async () => { + const data = { title: 'My Template', kind: 'post', content: '

hello

' }; + await invokeMainProcessPythonApi('templates.create', { data }); + expect(mockTemplateEngine.createTemplate).toHaveBeenCalledWith(data); + }); + + it('routes templates.get to TemplateEngine.getTemplate', async () => { + await invokeMainProcessPythonApi('templates.get', { id: 't1' }); + expect(mockTemplateEngine.getTemplate).toHaveBeenCalledWith('t1'); + }); + + it('routes templates.delete to TemplateEngine.deleteTemplate', async () => { + await invokeMainProcessPythonApi('templates.delete', { id: 't1' }); + expect(mockTemplateEngine.deleteTemplate).toHaveBeenCalledWith('t1', undefined); + }); + + it('routes templates.getAll to TemplateEngine.getAllTemplates', async () => { + await invokeMainProcessPythonApi('templates.getAll', {}); + expect(mockTemplateEngine.getAllTemplates).toHaveBeenCalledWith(); + }); + + it('routes templates.getEnabledByKind to TemplateEngine.getEnabledTemplatesByKind', async () => { + await invokeMainProcessPythonApi('templates.getEnabledByKind', { kind: 'post' }); + expect(mockTemplateEngine.getEnabledTemplatesByKind).toHaveBeenCalledWith('post'); + }); + + it('routes templates.validate to TemplateEngine.validateTemplate', async () => { + await invokeMainProcessPythonApi('templates.validate', { content: '

{{ title }}

' }); + expect(mockTemplateEngine.validateTemplate).toHaveBeenCalledWith('

{{ title }}

'); + }); + + it('routes templates.rebuildFromFiles to TemplateEngine.rebuildDatabaseFromFiles', async () => { + await invokeMainProcessPythonApi('templates.rebuildFromFiles', {}); + expect(mockTemplateEngine.rebuildDatabaseFromFiles).toHaveBeenCalledWith(); + }); + it('routes tags.getAll to TagEngine.getAllTags', async () => { await invokeMainProcessPythonApi('tags.getAll', {}); expect(mockTagEngine.getAllTags).toHaveBeenCalledWith();