lib_tasker/todos/
mod.rs

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}