const test = require('node:test'); const assert = require('node:assert'); const { listTemplates, buildGitignore } = require('../src/features/gitignoreTemplates.js'); test('listTemplates nennt alle Vorlagen mit Beschriftung', () => { const list = listTemplates(); assert.deepStrictEqual(list.map(t => t.key), ['node', 'dotnet', 'electron', 'python', 'java', 'php', 'unity']); assert.ok(list.every(t => t.label)); }); test('buildGitignore: Vorlagen für Python, Java, PHP und Unity enthalten ihre Kerneinträge', () => { assert.match(buildGitignore(['python']), /__pycache__\//); assert.match(buildGitignore(['java']), /target\//); assert.match(buildGitignore(['php']), /vendor\//); assert.match(buildGitignore(['unity']), /\[Ll\]ibrary\//); }); test('buildGitignore enthält immer den allgemeinen Teil', () => { const out = buildGitignore([]); assert.match(out, /\.env/); assert.doesNotMatch(out, /node_modules/); }); test('buildGitignore fügt gewählte Vorlagen genau einmal hinzu', () => { const out = buildGitignore(['node', 'node', 'electron']); assert.strictEqual(out.split('node_modules/').length - 1, 1); assert.match(out, /dist\//); assert.doesNotMatch(out, /\.vs\//); }); test('buildGitignore ignoriert unbekannte Schlüssel', () => { assert.doesNotThrow(() => buildGitignore(['gibt-es-nicht', '__proto__', null])); });