1pub mod tasks;
2
3use serde::{Deserialize, Serialize};
4pub use tasks::*;
5
6#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq, Eq)]
7pub struct ToDo {
8 pub tasks: Vec<Task>,
9}
10
11impl From<Vec<Task>> for ToDo {
12 fn from(tasks: Vec<Task>) -> Self {
13 Self { tasks }
14 }
15}
16
17impl ToDo {
18 pub fn add_task(&mut self, task: Task) {
19 self.tasks.push(task);
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn add_task_works() {
29 let mut todo = ToDo::from(vec![Task::create("This is a test")
30 .project("Testing")
31 .build()]);
32
33 todo.add_task(Task::create("This is from a method").build());
34
35 assert_eq!(
36 todo,
37 ToDo {
38 tasks: vec![
39 Task::create("This is a test").project("Testing").build(),
40 Task::create("This is from a method").build()
41 ]
42 }
43 );
44 }
45}