Skip to content

Latest commit

 

History

History
48 lines (33 loc) · 1.25 KB

pure_otp_exercise.md

File metadata and controls

48 lines (33 loc) · 1.25 KB

Pure OTP Exercise

Create a todo list using only pure processes

  1. Add a todo to a todo-list
TODO.add(%{ title: "study otp", completed: false })
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: false,  created_at:"2018-10-02" }
  1. List todos
TODO.list
=> [ %{ id: "md5-f0932jf934", title: "study otp", completed: false } ]
  1. Mark todo as completed
TODO.complete("md5-943jg4938j39")
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: true, created_at: "2018-10-03", completed_at:"2018-10-03" }
  1. Add validation to not allow duplicated todos titles
TODO.add(%{ title: "study otp", completed: false })
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: false,  created_at:"2018-10-02" }

TODO.add(%{ title: "study otp", completed: false })
=> %{ error: "task already created"}
  1. Add validation to not allow completion on already completed tasks
TODO.complete("md5-943jg4938j39")
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: true, created_at: "2018-10-03", completed_at:"2018-10-03" }

TODO.complete("md5-943jg4938j39")
=> %{ error: "task already completed"}
  1. Add Supervision to the Application, when the todo process crashes it will be restarted automatically

  2. Tests