diff options
Diffstat (limited to 'web/test/sort-tasks.test.mjs')
| -rw-r--r-- | web/test/sort-tasks.test.mjs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/web/test/sort-tasks.test.mjs b/web/test/sort-tasks.test.mjs index fe47702..4d98f20 100644 --- a/web/test/sort-tasks.test.mjs +++ b/web/test/sort-tasks.test.mjs @@ -12,12 +12,13 @@ import assert from 'node:assert/strict'; // ── Implementation under contract ───────────────────────────────────────────── // Remove this block once sortTasksByDate is available from app.js. -function sortTasksByDate(tasks) { +function sortTasksByDate(tasks, descend = false) { return [...tasks].sort((a, b) => { if (!a.created_at && !b.created_at) return 0; if (!a.created_at) return 1; if (!b.created_at) return -1; - return new Date(a.created_at) - new Date(b.created_at); + const diff = new Date(a.created_at) - new Date(b.created_at); + return descend ? -diff : diff; }); } @@ -42,6 +43,18 @@ describe('sortTasksByDate', () => { assert.equal(result[2].id, 'c', 'newest should be last'); }); + it('sorts tasks newest-first when descend=true', () => { + const tasks = [ + makeTask('c', '2026-03-06T12:00:00Z'), + makeTask('a', '2026-03-04T08:00:00Z'), + makeTask('b', '2026-03-05T10:00:00Z'), + ]; + const result = sortTasksByDate(tasks, true); + assert.equal(result[0].id, 'c', 'newest should be first'); + assert.equal(result[1].id, 'b'); + assert.equal(result[2].id, 'a', 'oldest should be last'); + }); + it('returns a new array (does not mutate input)', () => { const tasks = [ makeTask('b', '2026-03-05T10:00:00Z'), |
