Skip to content

Commit f7f69eb

Browse files
committed
tests boi
1 parent 2b141f1 commit f7f69eb

File tree

1 file changed

+81
-38
lines changed

1 file changed

+81
-38
lines changed

MyMusicBoxApi/http/tasklog_test.go

Lines changed: 81 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,58 +3,73 @@ package http
33
import (
44
"context"
55
"encoding/json"
6-
"errors"
6+
"fmt"
77
"musicboxapi/database"
88
"musicboxapi/models"
99
"net/http"
1010
"net/http/httptest"
1111
"testing"
12+
"time"
1213

1314
"github.com/stretchr/testify/assert"
1415
)
1516

1617
type mockTaskLogTable struct {
1718
database.ITasklogTable
18-
insertTaskLog func() (lastInsertedId int, err error)
19-
updateTaskLogStatus func(taskId int, nStatus int) (err error)
20-
endTaskLog func(taskId int, nStatus int, data []byte) (err error)
21-
updateTaskLogError func(params ...any) (err error)
22-
getTaskLogs func(ctx context.Context) ([]models.TaskLog, error)
19+
getParentLogs func(ctx context.Context) ([]models.ParentTaskLog, error)
20+
getChildLogs func(ctx context.Context, parentId int) ([]models.ChildTaskLog, error)
21+
22+
// Rest is used internally....
23+
createParentTaskLog func(url string) (models.ParentTaskLog, error)
24+
createChildTaskLog func(parent models.ParentTaskLog) (models.ChildTaskLog, error)
25+
updateChildTaskLogStatus func(child models.ChildTaskLog) error
26+
childTaskLogDone func(child models.ChildTaskLog) error
27+
childTaskLogError func(child models.ChildTaskLog) error
2328
}
2429

25-
func (h *mockTaskLogTable) InsertTaskLog() (lastInsertedId int, err error) {
26-
return h.insertTaskLog()
30+
func (h *mockTaskLogTable) GetParentLogs(ctx context.Context) ([]models.ParentTaskLog, error) {
31+
return h.getParentLogs(ctx)
2732
}
28-
func (h *mockTaskLogTable) UpdateTaskLogStatus(taskId int, nStatus int) (err error) {
29-
return h.updateTaskLogStatus(taskId, nStatus)
33+
func (h *mockTaskLogTable) GetChildLogs(ctx context.Context, parentId int) ([]models.ChildTaskLog, error) {
34+
return h.getChildLogs(ctx, parentId)
3035
}
31-
func (h *mockTaskLogTable) EndTaskLog(taskId int, nStatus int, data []byte) (err error) {
32-
return h.endTaskLog(taskId, nStatus, data)
36+
37+
// Rest is used internally....
38+
func (h *mockTaskLogTable) CreateParentTaskLog(url string) (models.ParentTaskLog, error) {
39+
return h.createParentTaskLog(url)
3340
}
34-
func (h *mockTaskLogTable) UpdateTaskLogError(params ...any) (err error) {
35-
return h.updateTaskLogError(params...)
41+
func (h *mockTaskLogTable) CreateChildTaskLog(parent models.ParentTaskLog) (models.ChildTaskLog, error) {
42+
return h.createChildTaskLog(parent)
3643
}
37-
38-
func (h *mockTaskLogTable) GetTaskLogs(ctx context.Context) ([]models.TaskLog, error) {
39-
return h.getTaskLogs(ctx)
44+
func (h *mockTaskLogTable) UpdateChildTaskLogStatus(child models.ChildTaskLog) error {
45+
return h.updateChildTaskLogStatus(child)
46+
}
47+
func (h *mockTaskLogTable) ChildTaskLogDone(child models.ChildTaskLog) error {
48+
return h.childTaskLogDone(child)
49+
}
50+
func (h *mockTaskLogTable) ChildTaskLogError(child models.ChildTaskLog) error {
51+
return h.childTaskLogError(child)
4052
}
4153

42-
func TestGetTaskLogsError(t *testing.T) {
54+
func TestGetParentLogs(t *testing.T) {
4355
// Arrange
4456
route := "/tasklogs"
4557
router := SetupTestRouter()
4658

4759
mockTable := &mockTaskLogTable{
48-
getTaskLogs: func(ctx context.Context) (songs []models.TaskLog, error error) {
49-
return nil, errors.New("Woops")
60+
getParentLogs: func(ctx context.Context) ([]models.ParentTaskLog, error) {
61+
return []models.ParentTaskLog{
62+
{Id: 0, Url: "www.google.com", AddTime: time.Now()},
63+
{Id: 1, Url: "www.youtube.com", AddTime: time.Now()},
64+
}, nil
5065
},
5166
}
5267

53-
tasklogHandler := TaskLogHandler{
68+
taskLogHandler := TaskLogHandler{
5469
TasklogTable: mockTable,
5570
}
5671

57-
router.GET(route, tasklogHandler.FetchTaskLogs)
72+
router.GET(route, taskLogHandler.FetchParentTaskLogs)
5873

5974
recorder := httptest.NewRecorder()
6075

@@ -64,40 +79,68 @@ func TestGetTaskLogsError(t *testing.T) {
6479
router.ServeHTTP(recorder, req)
6580

6681
// Assert
67-
assert.Equal(t, http.StatusInternalServerError, recorder.Code)
68-
}
82+
assert.Equal(t, http.StatusOK, recorder.Code)
6983

70-
func TestGetTaskLogs(t *testing.T) {
84+
var rawResult map[string]any
85+
86+
err := json.Unmarshal(recorder.Body.Bytes(), &rawResult)
87+
88+
assert.Equal(t, nil, err)
89+
90+
dataBytes, err := json.Marshal(rawResult["Data"])
91+
92+
var logs []models.ParentTaskLog
93+
err = json.Unmarshal(dataBytes, &logs)
94+
95+
assert.NoError(t, err)
96+
assert.Equal(t, 2, len(logs))
97+
}
98+
func TestGetChildLogs(t *testing.T) {
7199
// Arrange
72-
route := "/tasklogs"
100+
parentId := 1
101+
route := "/tasklogs/:parentId"
73102
router := SetupTestRouter()
74103

75104
mockTable := &mockTaskLogTable{
76-
getTaskLogs: func(ctx context.Context) (songs []models.TaskLog, error error) {
77-
type l struct{}
78-
79-
ll := l{}
80-
81-
_output, _ := json.Marshal(ll)
82-
return []models.TaskLog{
83-
{Id: 1, Status: int(models.Error), OutputLog: (*json.RawMessage)(&_output)},
84-
}, nil
105+
getChildLogs: func(ctx context.Context, parentId int) ([]models.ChildTaskLog, error) {
106+
childTasks := []models.ChildTaskLog{
107+
{Id: 0, ParentId: 1, StartTime: time.Now(), EndTime: time.Now().Add(1), Status: 4},
108+
{Id: 0, ParentId: 1, StartTime: time.Now(), EndTime: time.Now().Add(1), Status: 4},
109+
}
110+
return childTasks, nil
85111
},
86112
}
87113

88-
tasklogHandler := TaskLogHandler{
114+
taskLogHandler := TaskLogHandler{
89115
TasklogTable: mockTable,
90116
}
91117

92-
router.GET(route, tasklogHandler.FetchTaskLogs)
118+
router.GET(route, taskLogHandler.FetchChildTaskLogs)
93119

94120
recorder := httptest.NewRecorder()
95121

96-
req, _ := http.NewRequest("GET", route, nil)
122+
_route := fmt.Sprintf("/tasklogs/%d", parentId)
123+
124+
req, _ := http.NewRequest("GET", _route, nil)
97125

98126
// Act
99127
router.ServeHTTP(recorder, req)
100128

101129
// Assert
102130
assert.Equal(t, http.StatusOK, recorder.Code)
131+
132+
var rawResult map[string]any
133+
134+
err := json.Unmarshal(recorder.Body.Bytes(), &rawResult)
135+
136+
assert.Equal(t, nil, err)
137+
138+
dataBytes, err := json.Marshal(rawResult["Data"])
139+
140+
var logs []models.ChildTaskLog
141+
err = json.Unmarshal(dataBytes, &logs)
142+
143+
assert.NoError(t, err)
144+
assert.Equal(t, 2, len(logs))
145+
assert.Equal(t, parentId, logs[0].ParentId)
103146
}

0 commit comments

Comments
 (0)