From 94fbe994dd67b64d593c4b3c66dad652fd3a7d4e Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Jul 2026 11:54:45 +0200 Subject: [PATCH] Update sparse pads test to use server module loading for transformers and webView --- tests/sparse-pads.test.ts | 71 ++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/tests/sparse-pads.test.ts b/tests/sparse-pads.test.ts index 045249e..4a01bde 100644 --- a/tests/sparse-pads.test.ts +++ b/tests/sparse-pads.test.ts @@ -1,19 +1,10 @@ import assert from 'node:assert/strict'; import test from 'node:test'; +import { createServer } from 'vite'; import { collectPads } from '../src/lib/parsers'; -import abletonTransformer from '../src/lib/transformers/ableton'; -import dawProjectTransformer from '../src/lib/transformers/dawProject'; -import midiTransformer from '../src/lib/transformers/midi'; -import reaperTransformer from '../src/lib/transformers/reaper'; import { TarFile } from '../src/lib/untar'; -import { - EffectType, - FaderParam, - Group, - GroupFaderParam, - ProjectRawData, -} from '../src/types/types'; import { findPad } from '../src/lib/utils'; +import { EffectType, FaderParam, Group, GroupFaderParam, ProjectRawData } from '../src/types/types'; function faderParams(): GroupFaderParam { return Object.fromEntries( @@ -72,7 +63,7 @@ function sparseProject(): ProjectRawData { }; } -test('keeps physical p02 on zero-based pattern source 1 when p01 is omitted', () => { +test('keeps physical p02 on zero-based pattern source 1 when p01 is omitted', async () => { const data = sparseProject(); const physicalPad = data.pads.a[0]; @@ -81,20 +72,44 @@ test('keeps physical p02 on zero-based pattern source 1 when p01 is omitted', () assert.equal(findPad('a1', data.pads), physicalPad); const params = { exportAllPadsWithSamples: true, keepUnusedPatterns: false }; - assert.deepEqual( - abletonTransformer(data, params).tracks.map((track) => track.padCode), - ['a1'], - ); - assert.deepEqual( - midiTransformer(data, params).tracks.map((track) => track.padCode), - ['a1'], - ); - assert.deepEqual( - reaperTransformer(data, params).tracks.map((track) => track.padCode), - ['a1'], - ); - assert.deepEqual( - dawProjectTransformer(data, params).tracks.map((track) => track.padCode), - ['a1'], - ); + const server = await createServer({ + server: { middlewareMode: true }, + appType: 'custom', + mode: 'production', + define: { 'import.meta.env.DEV': 'false' }, + }); + + try { + const [abletonModule, midiModule, reaperModule, dawProjectModule, webViewModule] = + await Promise.all([ + server.ssrLoadModule('/src/lib/transformers/ableton.ts'), + server.ssrLoadModule('/src/lib/transformers/midi.ts'), + server.ssrLoadModule('/src/lib/transformers/reaper.ts'), + server.ssrLoadModule('/src/lib/transformers/dawProject.ts'), + server.ssrLoadModule('/src/lib/transformers/webView.ts'), + ]); + + assert.deepEqual( + abletonModule.default(data, params).tracks.map((track: { padCode: string }) => track.padCode), + ['a1'], + ); + assert.deepEqual( + midiModule.default(data, params).tracks.map((track: { padCode: string }) => track.padCode), + ['a1'], + ); + assert.deepEqual( + reaperModule.default(data, params).tracks.map((track: { padCode: string }) => track.padCode), + ['a1'], + ); + assert.deepEqual( + dawProjectModule.default(data, params).tracks.map((track: { padCode: string }) => track.padCode), + ['a1'], + ); + assert.deepEqual( + webViewModule.default(data).scenes[0].patterns.map((pattern: { pad: string }) => pattern.pad), + ['a1'], + ); + } finally { + await server.close(); + } });