diff --git a/notes.js b/notes.js index df64a18..0e7d028 100644 --- a/notes.js +++ b/notes.js @@ -4,6 +4,11 @@ const config = require("./lib/config"); const [command, ...rest] = process.argv.slice(2); +// Builds the "You have N note(s)." message with correct pluralization. +function countMessage(n) { + return `You have ${n} ${n === 1 ? "note" : "notes"}.`; +} + function main() { switch (command) { case "add": { @@ -39,6 +44,10 @@ function main() { } break; } + case "count": { + console.log(countMessage(store.all().length)); + break; + } case "delete": { const id = Number(rest[0]); const ok = store.remove(id); @@ -46,9 +55,13 @@ function main() { break; } default: - console.log("Commands: add | list | search | delete "); + console.log("Commands: add | list | search | count | delete "); console.log(`(Session locks after ${config.SESSION_TIMEOUT_MINUTES} minutes of inactivity.)`); } } -main(); +if (require.main === module) { + main(); +} + +module.exports = { countMessage }; diff --git a/tests/count.test.js b/tests/count.test.js new file mode 100644 index 0000000..fd40109 --- /dev/null +++ b/tests/count.test.js @@ -0,0 +1,16 @@ +const test = require("node:test"); +const assert = require("node:assert"); + +const { countMessage } = require("../notes"); + +test("count uses the singular form for exactly one note", () => { + assert.strictEqual(countMessage(1), "You have 1 note."); +}); + +test("count uses the plural form for multiple notes", () => { + assert.strictEqual(countMessage(3), "You have 3 notes."); +}); + +test("count uses the plural form for zero notes", () => { + assert.strictEqual(countMessage(0), "You have 0 notes."); +});