diff --git a/.vscode/settings.json b/.vscode/settings.json index dbb05b4..c01085e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,11 @@ { "chat.modeFilesLocations": { - ".github/chatmodes": true + "chatmodes": true }, "chat.promptFilesLocations": { - ".github/prompts": true + "prompts": true }, "chat.instructionsFilesLocations": { - ".github/instructions": true + "instructions": true } -} \ No newline at end of file +} diff --git a/config-manager.js b/config-manager.js index d1b6a10..952adb6 100644 --- a/config-manager.js +++ b/config-manager.js @@ -101,6 +101,11 @@ function toBoolean(value) { if (normalized === "false") return false; } + // Preserve undefined as undefined for "no explicit override" + if (value === undefined) { + return undefined; + } + return Boolean(value); } diff --git a/test-effective-states.js b/test-effective-states.js index 621f04b..5f832b1 100644 --- a/test-effective-states.js +++ b/test-effective-states.js @@ -214,6 +214,37 @@ function runTests() { assert(result.prompts.size > 0, 'Should have enabled prompts'); }); + // Test 10: Undefined values are not treated as explicitly disabled (TASK-004) + test("Undefined values are not treated as explicitly disabled", () => { + const config = { + prompts: { + 'playwright-generate-test': true, // explicit true + 'csharp-nunit': false, // explicit false + // 'playwright-explore-website' is undefined (not mentioned) + }, + collections: { + 'testing-automation': true + } + }; + + const result = computeEffectiveItemStates(config); + + // Explicit true should be explicit + const explicitTrue = result.prompts['playwright-generate-test']; + assert(explicitTrue && explicitTrue.enabled && explicitTrue.reason === 'explicit', + 'Explicit true should be enabled with explicit reason'); + + // Explicit false should be explicit (strict === false comparison) + const explicitFalse = result.prompts['csharp-nunit']; + assert(explicitFalse && !explicitFalse.enabled && explicitFalse.reason === 'explicit', + 'Explicit false should be disabled with explicit reason'); + + // Undefined should inherit from collection + const undefinedItem = result.prompts['playwright-explore-website']; + assert(undefinedItem && undefinedItem.enabled && undefinedItem.reason === 'collection', + 'Undefined items should inherit from collection, not be treated as explicitly disabled'); + }); + console.log(`\nTest Results: ${passedTests}/${totalTests} passed`); if (passedTests === totalTests) {