1package ultralist
2
3import (
4	"testing"
5
6	"github.com/stretchr/testify/assert"
7)
8
9func TestCreateEventLogsWithAddingTodo(t *testing.T) {
10	assert := assert.New(t)
11	todo := &Todo{Subject: "testing", Completed: false, Archived: false}
12	list := &TodoList{}
13	list.Add(todo)
14
15	logger := NewEventLogger(list, &MemoryStore{})
16	todo2 := NewTodo()
17	list.Add(todo2)
18	logger.CreateEventLogs()
19
20	assert.Equal(1, len(logger.Events))
21	assert.Equal(AddEvent, logger.Events[0].EventType)
22	assert.Equal(todo2.ID, logger.Events[0].Object.ID)
23}
24
25func TestCreateEventLogsWithAddingMultipleTodos(t *testing.T) {
26	assert := assert.New(t)
27	todo := &Todo{Subject: "testing", Completed: false, Archived: false}
28	list := &TodoList{}
29	list.Add(todo)
30
31	logger := NewEventLogger(list, &MemoryStore{})
32	todo2 := NewTodo()
33	list.Add(todo2)
34	todo3 := NewTodo()
35	list.Add(todo3)
36	logger.CreateEventLogs()
37
38	assert.Equal(2, len(logger.Events))
39	assert.Equal(AddEvent, logger.Events[0].EventType)
40	assert.Equal(todo2.ID, logger.Events[0].Object.ID)
41	assert.Equal(AddEvent, logger.Events[1].EventType)
42	assert.Equal(todo3.ID, logger.Events[1].Object.ID)
43}
44
45func TestUpdateEvent(t *testing.T) {
46	assert := assert.New(t)
47	todo := &Todo{Subject: "testing", Completed: false, Archived: false}
48	list := &TodoList{}
49	list.Add(todo)
50
51	logger := NewEventLogger(list, &MemoryStore{})
52	todo.Subject = "testing2"
53	logger.CreateEventLogs()
54
55	assert.Equal(1, len(logger.Events))
56	assert.Equal(UpdateEvent, logger.Events[0].EventType)
57	assert.Equal(todo.ID, logger.Events[0].Object.ID)
58}
59
60func TestDeleteEvent(t *testing.T) {
61	assert := assert.New(t)
62	todo := &Todo{Subject: "testing", Completed: false, Archived: false}
63	todo2 := &Todo{Subject: "testing", Completed: false, Archived: false}
64	list := &TodoList{}
65	list.Add(todo)
66	list.Add(todo2)
67
68	logger := NewEventLogger(list, &MemoryStore{})
69	list.Delete(todo.ID)
70	logger.CreateEventLogs()
71
72	assert.Equal(1, len(logger.Events))
73	assert.Equal(DeleteEvent, logger.Events[0].EventType)
74	assert.Equal(todo.ID, logger.Events[0].Object.ID)
75}
76