34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
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]));
|
|
});
|