ken_nogi/NodeSrv/apps/app-portal/test/portalMeta.test.js
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

33 lines
1.6 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 });
});
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' });
});