bugger-mcp
Version:
MCP Server for managing bugs, feature requests, and improvements
85 lines • 3.67 kB
JavaScript
// Tests for status normalization utilities
import { StatusNormalizer, validateAndNormalizeStatus } from './status-utils.js';
export class StatusUtilsTester {
static runTests() {
console.log('Running Status Utils Tests...\n');
this.testBugStatusNormalization();
this.testFeatureStatusNormalization();
this.testImprovementStatusNormalization();
this.testErrorHandling();
console.log('All status utils tests completed!');
}
static testBugStatusNormalization() {
console.log('Test: Bug Status Normalization');
const testCases = [
['in progress', 'In Progress'],
['In Progress', 'In Progress'],
['IN PROGRESS', 'In Progress'],
['working', 'In Progress'],
['done', 'Fixed'],
['completed', 'Fixed'],
['open', 'Open'],
['new', 'Open'],
['invalid', null]
];
for (const [input, expected] of testCases) {
const result = StatusNormalizer.normalizeStatus(input, 'bug');
const status = result === expected ? '✓' : '✗';
console.log(` ${status} "${input}" → "${result}" (expected: "${expected}")`);
}
console.log('');
}
static testFeatureStatusNormalization() {
console.log('Test: Feature Status Normalization');
const testCases = [
['in development', 'In Development'],
['working', 'In Development'],
['building', 'In Development'],
['done', 'Completed'],
['approved', 'Approved'],
['research', 'Research Phase'],
['invalid', null]
];
for (const [input, expected] of testCases) {
const result = StatusNormalizer.normalizeStatus(input, 'feature');
const status = result === expected ? '✓' : '✗';
console.log(` ${status} "${input}" → "${result}" (expected: "${expected}")`);
}
console.log('');
}
static testImprovementStatusNormalization() {
console.log('Test: Improvement Status Normalization');
const testCases = [
['in development', 'In Development'],
['implementing', 'In Development'],
['verified', 'Completed'],
['awaiting verification', 'Completed (Awaiting Human Verification)'],
['pending verification', 'Completed (Awaiting Human Verification)'],
['invalid', null]
];
for (const [input, expected] of testCases) {
const result = StatusNormalizer.normalizeStatus(input, 'improvement');
const status = result === expected ? '✓' : '✗';
console.log(` ${status} "${input}" → "${result}" (expected: "${expected}")`);
}
console.log('');
}
static testErrorHandling() {
console.log('Test: Error Handling and Suggestions');
const result = validateAndNormalizeStatus('invalid status', 'bug');
console.log(` Input: "invalid status"`);
console.log(` Status: ${result.status}`);
console.log(` Error: ${result.error}`);
console.log(` Suggestion: ${result.suggestion}`);
const validResult = validateAndNormalizeStatus('working', 'bug');
console.log(`\n Input: "working"`);
console.log(` Status: ${validResult.status}`);
console.log(` Error: ${validResult.error}`);
console.log('');
}
}
// Run tests if this file is executed directly
if (import.meta.url === `file://${process.argv[1]}`) {
StatusUtilsTester.runTests();
}
//# sourceMappingURL=status-utils.test.js.map