-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtimeentries_test.go
152 lines (119 loc) · 3.54 KB
/
timeentries_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package redmine
import (
"os"
"strconv"
"testing"
)
var (
testTimeEntriesHours1 float64 = 1.23
testTimeEntriesHours2 float64 = 1.24
testTimeEntriesComment string = "Comment"
)
func TestTimeEntriesCRUD(t *testing.T) {
var r Context
// Init Redmine context
initTest(&r, t)
// Get env variables
testIssueTrackerID, err := strconv.ParseInt(os.Getenv("REDMINE_TRACKER_ID"), 10, 64)
if err != nil {
t.Fatal("Time entry test error: env variable `REDMINE_TRACKER_ID` is incorrect")
}
if testIssueTrackerID == 0 {
t.Fatal("Time entry test error: env variable `REDMINE_TRACKER_ID` does not set")
}
testTimeEntriesActivityID, err := strconv.ParseInt(os.Getenv("REDMINE_ACTIVITY_ID"), 10, 64)
if err != nil {
t.Fatal("Time entry test error: env variable `REDMINE_ACTIVITY_ID` is incorrect")
}
if testTimeEntriesActivityID == 0 {
t.Fatal("Time entry test error: env variable `REDMINE_ACTIVITY_ID` does not set")
}
// Preparing auxiliary data
pCreated := testProjectCreate(t, r, []int64{testIssueTrackerID})
defer testProjectDetele(t, r, pCreated.Identifier)
iCreated := testIssueCreate(t, r, pCreated.ID, 0, nil)
// Create and delete
teCreated := testTimeEntryCreate(t, r, iCreated.ID, testTimeEntriesActivityID)
defer testTimeEntryDetele(t, r, teCreated.ID)
// Get
testTimeEntriesAllGet(t, r, pCreated.Identifier)
testTimeEntrySingleGet(t, r, teCreated.ID)
// Update
testTimeEntryUpdate(t, r, teCreated.ID)
}
func testTimeEntryCreate(t *testing.T, r Context, issueID, activityID int64) TimeEntryObject {
te, _, err := r.TimeEntryCreate(
TimeEntryCreate{
TimeEntry: TimeEntryCreateObject{
IssueID: &issueID,
ActivityID: activityID,
Hours: testTimeEntriesHours1,
Comments: testTimeEntriesComment,
},
},
)
if err != nil {
t.Fatal("Time entry create error:", err)
}
t.Logf("Time entry create: success")
return te
}
func testTimeEntryUpdate(t *testing.T, r Context, id int64) {
_, err := r.TimeEntryUpdate(
id,
TimeEntryUpdate{
TimeEntry: TimeEntryUpdateObject{
Hours: &testTimeEntriesHours2,
},
},
)
if err != nil {
t.Fatal("Time entry update error:", err)
}
s, _, err := r.TimeEntrySingleGet(id, TimeEntrySingleGetRequest{})
if err != nil {
t.Fatal("Time entry update error:", err)
}
if s.Hours != testTimeEntriesHours2 {
t.Fatal("Time entry update error: incorrect hours")
}
if s.Comments != testTimeEntriesComment {
t.Fatal("Time entry update error: incorrect comment")
}
t.Logf("Time entry update: success")
}
func testTimeEntryDetele(t *testing.T, r Context, id int64) {
_, err := r.TimeEntryDelete(id)
if err != nil {
t.Fatal("Time entry delete error:", err)
}
t.Logf("Time entry delete: success")
}
func testTimeEntriesAllGet(t *testing.T, r Context, projectID string) {
te, _, err := r.TimeEntryAllGet(
TimeEntryAllGetRequest{
Filters: TimeEntryGetRequestFiltersInit().
ProjectSet(projectID),
},
)
if err != nil {
t.Fatal("Time entries get all error:", err)
}
if len(te.TimeEntries) == 0 {
t.Fatal("Time entries get all error: can't find any time entries")
}
t.Logf("Time entries get all: success")
}
func testTimeEntrySingleGet(t *testing.T, r Context, id int64) {
s, _, err := r.TimeEntrySingleGet(id, TimeEntrySingleGetRequest{})
if err != nil {
t.Fatal("Time entry single get error:", err)
}
if s.Hours != testTimeEntriesHours1 {
t.Fatal("Time entry single get error: incorrect hours")
}
if s.Comments != testTimeEntriesComment {
t.Fatal("Time entry single get error: incorrect comment")
}
t.Logf("Time entry single get: success")
}