Manifestbasierter Production-Updater 3.3, Modulnavigation, optionales Produktbild Studio, Listing-Studio-Aktionsleiste sowie plattformübergreifende Windows-/Linux-Release-Gates.
42 lines
2.7 KiB
JavaScript
42 lines
2.7 KiB
JavaScript
import { mkdtempSync } from 'node:fs';
|
|
import { join } from 'node:path';
|
|
import { tmpdir } from 'node:os';
|
|
import { closeVendooDatabase, removeTempDirectory } from './test-runtime-cleanup.mjs';
|
|
|
|
const tempPrefix = process.env.VENDOO_TEST_TEMP_PREFIX || 'vendoo-module-defaults-';
|
|
const temp = mkdtempSync(join(tmpdir(), tempPrefix));
|
|
process.env.VENDOO_DATA_DIR = temp;
|
|
process.env.VENDOO_DB_PATH = join(temp, 'db', 'vendoo.db');
|
|
process.env.VENDOO_CONFIG_PATH = join(temp, 'config', 'vendoo.env');
|
|
process.env.VENDOO_MODULE_STATE_PATH = join(temp, 'config', 'modules-state.json');
|
|
process.env.VENDOO_MODULES_DIR = join(temp, 'modules');
|
|
process.env.VENDOO_INITIAL_DISABLED_MODULES = 'vendoo.flux-studio';
|
|
|
|
const failures = [];
|
|
const assert = (condition, message) => { if (!condition) failures.push(message); };
|
|
|
|
try {
|
|
const { createPlatformKernel } = await import('../app/kernel/platform-kernel.mjs');
|
|
const first = createPlatformKernel({ version: '1.43.0-test', hasPermission: () => true });
|
|
assert(first.modules.describe('vendoo.flux-studio')?.enabled === false, 'FLUX Studio ist beim ersten Start nicht deaktiviert');
|
|
assert(first.modules.describe('vendoo.product-image-tools')?.enabled === false, 'Produktbild Studio ist beim ersten Start nicht deaktiviert');
|
|
assert(first.modules.describe('vendoo.deployments')?.enabled === true, 'Geschütztes Deployment-Modul ist nicht aktiviert');
|
|
const { ModuleStateStore } = await import('../app/core/modules/module-state-store.mjs');
|
|
const stateStore = new ModuleStateStore(process.env.VENDOO_MODULE_STATE_PATH);
|
|
stateStore.setEnabled('vendoo.flux-studio', true, { source: 'test' });
|
|
stateStore.setEnabled('vendoo.product-image-tools', true, { source: 'test' });
|
|
const second = createPlatformKernel({ version: '1.43.0-test', hasPermission: () => true });
|
|
assert(second.modules.describe('vendoo.flux-studio')?.enabled === true, 'Gespeicherte FLUX-Aktivierung wird durch Initialwert überschrieben');
|
|
assert(second.modules.describe('vendoo.product-image-tools')?.enabled === true, 'Gespeicherte Produktbild-Studio-Aktivierung wird durch Initialwert überschrieben');
|
|
} finally {
|
|
await closeVendooDatabase({ failures, label: 'Initial-Modul-Testdatenbank' });
|
|
await removeTempDirectory(temp, { failures, label: 'Initial-Modul-Testordner' });
|
|
}
|
|
|
|
if (failures.length) {
|
|
console.error(`Initial-Module-Gate 1.43.0 fehlgeschlagen (${failures.length}):`);
|
|
failures.forEach(item => console.error(`- ${item}`));
|
|
process.exit(1);
|
|
}
|
|
console.log('Initial-Module-Gate 1.43.0 erfolgreich: FLUX und Produktbild Studio sind beim ersten Start aus, bleiben nach bewusster Admin-Aktivierung dauerhaft aktivierbar und geben ihre temporäre SQLite-Datenbank sauber frei.');
|