23 lines
732 B
JavaScript
23 lines
732 B
JavaScript
import { test } from "node:test";
|
|||
|
|
import assert from "node:assert/strict";
|
||
|
|
import { add, complete, remove, format } from "../src/todo.js";
|
||
|
|
|
||
|
|
test("add appends an open todo", () => {
|
||
|
|
const todos = add([], "buy milk");
|
||
|
|
assert.deepEqual(todos, [{ id: 1, text: "buy milk", done: false }]);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("complete marks only the matching todo", () => {
|
||
|
|
const todos = complete(add(add([], "a"), "b"), 2);
|
||
|
|
assert.equal(todos[0].done, false);
|
||
|
|
assert.equal(todos[1].done, true);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("remove drops the matching todo", () => {
|
||
|
|
const todos = remove(add(add([], "a"), "b"), 1);
|
||
|
|
assert.deepEqual(todos.map((t) => t.text), ["b"]);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("format renders an empty list", () => {
|
||
|
|
assert.equal(format([]), "Nothing to do.");
|
||
|
|
});
|