-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgrandexchange_test.go
212 lines (145 loc) · 5.09 KB
/
grandexchange_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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
package Go_Runescape
import (
"testing"
"github.com/kingpulse/Go-Runescape/ge_constants"
"net/http"
)
//TestGetItemsCatalogue tests the GetItemsCatalogue function.
func TestGetItemsCatalogue(t *testing.T) {
//Creating working http client.
httpClient := http.DefaultClient
ci, err := GetItemsCatalogue(ge_constants.POTIONS, 'p', 1, httpClient)
if err != nil {
t.Error("Failed to get items catalogue. Error: " + err.Error())
}
if ci.Items == nil {
t.Error("Failed to get items catalogue. Items array is a nil pointer.")
}
if ci.Total <= 0 {
t.Error("Failed to get items catalogue. Total count is incorrect.")
}
if len(ci.Items) <= 0 {
t.Error("Failed to get items catalogue. Items array has 0 length")
}
_, err = GetItemsCatalogue(ge_constants.POTIONS, ')', 1, httpClient)
if err == nil {
t.Error("Failed to detect out of range geConstant for GetItemsCatalogue.")
}
//Creating failure http client (will intentionally return an error)
failureClient := failGetHttpClient{}
_, err = GetItemsCatalogue(ge_constants.POTIONS, 'p', 1, failureClient)
if err == nil {
t.Error("GetItemsCatalogue failed to recognise errors from GET request.")
}
ijClient := invalidJsonHttpClient{}
_, err = GetItemsCatalogue(ge_constants.POTIONS, 'p', 1, ijClient)
if err == nil {
t.Error("GetItemsCatalogue failed to recognise invalid json.")
}
}
//TestGetITemDetail tests the GetItemDetail function.
func TestGetItemDetail(t *testing.T) {
testClient := http.DefaultClient
//Getting Rune Scimitar item detail.
item, err := GetItemDetail(1333, testClient)
if err != nil {
t.Error("Failed to get item detail. Error: " + err.Error())
}
if item.Name != "Rune scimitar" {
t.Error("Failed to get item detail. Name is incorrect.")
}
if item.Id != 1333 {
t.Error("Failed to get item detail. Item id is incorrect.")
}
//Checking for valid TimeTrendPrice objects.
checkTimeTrendPrice(t, &item.Current)
checkTimeTrendPrice(t, &item.Today)
//Checking for valid TimeTrendPercentage objects.
checkTimeTrendPercentage(t, &item.Day30)
checkTimeTrendPercentage(t, &item.Day90)
checkTimeTrendPercentage(t, &item.Day180)
failureClient := failGetHttpClient{}
_, err = GetItemDetail(1333, failureClient)
if err == nil {
t.Error("GetItemDetail failed to recognize error from GET request.")
}
ijClient := invalidJsonHttpClient{}
_, err = GetItemDetail(1333, ijClient)
if err == nil {
t.Error("GetItemDetail failed to recognize invaid JSON")
}
}
//checkTimeTrendPrice checks if string fields in timeTrendPrice objects are not equal to ""
func checkTimeTrendPrice(t *testing.T, tdp *timeTrendPrice) {
if tdp.Price == "" {
t.Error("Invalid Price for timeTrendPrice")
}
if tdp.Trend == "" {
t.Error("Invalid Trend for timeTrendPrice")
}
}
//checkTimeTrendPercentage checks if string fields in timeTrendPercentage objects are not equal to ""
func checkTimeTrendPercentage(t *testing.T, ttp *timeTrendPercentage) {
if ttp.Trend == "" {
t.Error("Invalid Trend for timeTrendPercentage")
}
if ttp.Change == "" {
t.Error("Invalid Change for timeTrendPercentage")
}
}
func TestGetCategory(t *testing.T) {
//Getting default http client.
testClient := http.DefaultClient
newCategory, err := GetCategory(ge_constants.MELEE_WEAPONS_HIGH_LEVEL, testClient)
if err != nil {
t.Error("Failed to get Category. Error: " + err.Error())
}
if newCategory == nil {
t.Error("Failed to get Category. alpha array is nil.")
}
categoryCount, err := newCategory.GetItemCountForLetter('s')
if err != nil {
t.Error("Failed to get item count from Category. Error: " + err.Error())
}
if categoryCount < 1 {
t.Error("Failed to get correct item count from Category.")
}
categoryCount, err = newCategory.GetItemCountForLetter('S')
if err != nil {
t.Error("Failed to get item count from Category. Error: " + err.Error())
}
if categoryCount < 1 {
t.Error("Failed to get correct item count from Category.")
}
_, err = newCategory.GetItemCountForLetter('#')
if err != nil {
t.Error("Failed to get item count from Category. Error: " + err.Error())
}
_, err = newCategory.GetItemCountForLetter('(')
for _, categoryLetter := range newCategory {
if categoryLetter.Letter == "" {
t.Error("Failed to get correct Category. Invalid Category letter contained in alpha array.")
}
if categoryLetter.Items < 0 {
t.Error("Failed to get correct Category. At least one Category items is less than 0.")
}
}
_, err = GetCategory("jk", testClient)
if err == nil {
t.Error("Failed to check validity of category constant. Used letters instead of numbers")
}
_, err = GetCategory("99", testClient)
if err == nil {
t.Error("Failed to check validity of category constant. Number is out of range.")
}
failureClient := failGetHttpClient{}
_, err = GetCategory(ge_constants.MELEE_WEAPONS_HIGH_LEVEL, failureClient)
if err == nil {
t.Error("GetCategory failed to recognise errors from a GET request.")
}
ijClient := invalidJsonHttpClient{}
_, err = GetCategory(ge_constants.MELEE_WEAPONS_HIGH_LEVEL, ijClient)
if err == nil {
t.Error("GetCategory failed to recognise errors from invalid json.")
}
}