TodoMVC implemented in Clojure using Rum and Clojure Spec for generative testing.
https://todomvc-spec.netlify.app/
Run n
generated tests.
bin/test <n>
bin/loc
Measure test coverage.
N_TESTS=<n> bin/coverage
Coverage report export for n=1...N tests.
bin/coverage_report <N>
Tests mutations in mutations/
and writes report to stdout.
bin/evaluate
Summary of the functional requirements for TodoMVC.
- When there are no todos,
#main
and#footer
should be hidden. - New todos are entered at the input. Enter creates the todo, appends to list and clears input. The input should be focused on page load using
autoFocus
attribute. - All inputs are trimmed when saved and empty todos are not allowed.
- Mark all as complete toggles all todo to the same state as itself and should be updated when the status of any todo changes.
- Todo items have three interactions.
- Clicking checkbox toggles its state which is displayed by its parent container
li
element. - Double clicking the label activates editing mode.
- Hovering over the todo item shows the remove button.
- Clicking checkbox toggles its state which is displayed by its parent container
- Todo item editing mode hides other interactions and should save the trimmed value on blur and enter.
- Counter displays the number of todos in pluralized form.
- Clear completed removes completed todos when clicked. Should be hidden when there are no completed todos.
- App should persist state between sessions.
- Routing should be used to navigate filters such as
#/completed
.
- 1.0.0 TodoMVC according to specification
- 0.1.0 Init