ken_nogi/NodeSrv/apps/app-portal/test/portalMeta.test.js
Kenichiro NOGI 4b14d992af feat: get-voice-mailに取得範囲フラグ追加、n8nワークフローを1件ずつループ処理化
大量ファイル処理時のn8nメモリ枯渇対策として、SplitInBatches(1件ずつ)で
SSHダウンロード→base64化→プリザンター登録を直列化(n8n側、API経由で反映済み)。
Webhookに?range=today|week|allを追加、app-portal側にも選択UIを実装。
2026-09-19 11:43:21 +09:00

53 lines
2.0 KiB
JavaScript

const { test } = require('node:test');
const assert = require('node:assert');
const { parseEnvString, extractPortalMeta } = require('../src/portalMeta');
test('parseEnvString parses KEY=VALUE lines and skips comments/blank lines', () => {
const result = parseEnvString('PORT=3000\n# comment\n\nNAME="quoted value"\n');
assert.deepStrictEqual(result, { PORT: '3000', NAME: 'quoted value' });
});
test('parseEnvString returns {} for null or empty input', () => {
assert.deepStrictEqual(parseEnvString(null), {});
assert.deepStrictEqual(parseEnvString(''), {});
});
test('extractPortalMeta returns null when PORTAL_APP_TYPE is missing or invalid', () => {
assert.strictEqual(extractPortalMeta('PORT=3000', 'fallback'), null);
assert.strictEqual(extractPortalMeta('PORTAL_APP_TYPE=invalid', 'fallback'), null);
assert.strictEqual(extractPortalMeta(null, 'fallback'), null);
});
test('extractPortalMeta parses a web-type app, falling back to label when PORTAL_APP_LABEL is absent', () => {
const meta = extractPortalMeta('PORTAL_APP_TYPE=web\nPORTAL_APP_URL=https://x.apps.next-hd.net', 'x');
assert.deepStrictEqual(meta, {
appType: 'web',
label: 'x',
url: 'https://x.apps.next-hd.net',
triggerPath: null,
rangeOptions: null,
});
});
test('extractPortalMeta parses a batch-type app with PORTAL_TRIGGER_PATH', () => {
const meta = extractPortalMeta(
'PORTAL_APP_TYPE=batch\nPORTAL_APP_LABEL=同期バッチ\nPORTAL_APP_URL=http://sample:3000\nPORTAL_TRIGGER_PATH=/trigger',
'fallback'
);
assert.deepStrictEqual(meta, {
appType: 'batch',
label: '同期バッチ',
url: 'http://sample:3000',
triggerPath: '/trigger',
rangeOptions: null,
});
});
test('extractPortalMeta parses PORTAL_TRIGGER_RANGE_OPTIONS into an array', () => {
const meta = extractPortalMeta(
'PORTAL_APP_TYPE=batch\nPORTAL_APP_URL=http://sample:3000\nPORTAL_TRIGGER_PATH=/trigger\nPORTAL_TRIGGER_RANGE_OPTIONS=today, week ,all',
'fallback'
);
assert.deepStrictEqual(meta.rangeOptions, ['today', 'week', 'all']);
});