forked from credondocr/dota2api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathitems_test.go
More file actions
194 lines (183 loc) · 46.2 KB
/
items_test.go
File metadata and controls
194 lines (183 loc) · 46.2 KB
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
package dota2api
import (
"bytes"
. "github.com/franela/goblin"
"io/ioutil"
"math/rand"
"net/http"
"strings"
"sync"
"testing"
"time"
)
const (
itemsResponse = "{\n\"result\":{\n\"items\":[\n{\n\"id\":1,\n\"name\":\"item_blink\",\n\"cost\":2250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":2,\n\"name\":\"item_blades_of_attack\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":3,\n\"name\":\"item_broadsword\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":4,\n\"name\":\"item_chainmail\",\n\"cost\":550,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":5,\n\"name\":\"item_claymore\",\n\"cost\":1400,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":6,\n\"name\":\"item_helm_of_iron_will\",\n\"cost\":925,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":7,\n\"name\":\"item_javelin\",\n\"cost\":1100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":8,\n\"name\":\"item_mithril_hammer\",\n\"cost\":1600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":9,\n\"name\":\"item_platemail\",\n\"cost\":1400,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":10,\n\"name\":\"item_quarterstaff\",\n\"cost\":875,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":11,\n\"name\":\"item_quelling_blade\",\n\"cost\":130,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":237,\n\"name\":\"item_faerie_fire\",\n\"cost\":70,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":265,\n\"name\":\"item_infused_raindrop\",\n\"cost\":225,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":244,\n\"name\":\"item_wind_lace\",\n\"cost\":250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":12,\n\"name\":\"item_ring_of_protection\",\n\"cost\":175,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":182,\n\"name\":\"item_stout_shield\",\n\"cost\":100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":246,\n\"name\":\"item_recipe_moon_shard\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":247,\n\"name\":\"item_moon_shard\",\n\"cost\":4000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":13,\n\"name\":\"item_gauntlets\",\n\"cost\":145,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":14,\n\"name\":\"item_slippers\",\n\"cost\":145,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":15,\n\"name\":\"item_mantle\",\n\"cost\":145,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":16,\n\"name\":\"item_branches\",\n\"cost\":50,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":17,\n\"name\":\"item_belt_of_strength\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":18,\n\"name\":\"item_boots_of_elves\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":19,\n\"name\":\"item_robe\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":20,\n\"name\":\"item_circlet\",\n\"cost\":155,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":261,\n\"name\":\"item_crown\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":21,\n\"name\":\"item_ogre_axe\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":22,\n\"name\":\"item_blade_of_alacrity\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":23,\n\"name\":\"item_staff_of_wizardry\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":24,\n\"name\":\"item_ultimate_orb\",\n\"cost\":2050,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":25,\n\"name\":\"item_gloves\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":485,\n\"name\":\"item_blitz_knuckles\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":26,\n\"name\":\"item_lifesteal\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":473,\n\"name\":\"item_voodoo_mask\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":27,\n\"name\":\"item_ring_of_regen\",\n\"cost\":175,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":279,\n\"name\":\"item_ring_of_tarrasque\",\n\"cost\":650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":28,\n\"name\":\"item_sobi_mask\",\n\"cost\":175,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":29,\n\"name\":\"item_boots\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":30,\n\"name\":\"item_gem\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":31,\n\"name\":\"item_cloak\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":32,\n\"name\":\"item_talisman_of_evasion\",\n\"cost\":1400,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":33,\n\"name\":\"item_cheese\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":34,\n\"name\":\"item_magic_stick\",\n\"cost\":200,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":35,\n\"name\":\"item_recipe_magic_wand\",\n\"cost\":150,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":36,\n\"name\":\"item_magic_wand\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":37,\n\"name\":\"item_ghost\",\n\"cost\":1500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":38,\n\"name\":\"item_clarity\",\n\"cost\":50,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":216,\n\"name\":\"item_enchanted_mango\",\n\"cost\":70,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":39,\n\"name\":\"item_flask\",\n\"cost\":110,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":40,\n\"name\":\"item_dust\",\n\"cost\":80,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":41,\n\"name\":\"item_bottle\",\n\"cost\":625,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":42,\n\"name\":\"item_ward_observer\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":43,\n\"name\":\"item_ward_sentry\",\n\"cost\":75,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":217,\n\"name\":\"item_recipe_ward_dispenser\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":218,\n\"name\":\"item_ward_dispenser\",\n\"cost\":75,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":44,\n\"name\":\"item_tango\",\n\"cost\":90,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":241,\n\"name\":\"item_tango_single\",\n\"cost\":30,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":45,\n\"name\":\"item_courier\",\n\"cost\":50,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":286,\n\"name\":\"item_flying_courier\",\n\"cost\":100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":46,\n\"name\":\"item_tpscroll\",\n\"cost\":90,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":47,\n\"name\":\"item_recipe_travel_boots\",\n\"cost\":2000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":219,\n\"name\":\"item_recipe_travel_boots_2\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":48,\n\"name\":\"item_travel_boots\",\n\"cost\":2500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":220,\n\"name\":\"item_travel_boots_2\",\n\"cost\":4500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":49,\n\"name\":\"item_recipe_phase_boots\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":50,\n\"name\":\"item_phase_boots\",\n\"cost\":1500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":51,\n\"name\":\"item_demon_edge\",\n\"cost\":2200,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":52,\n\"name\":\"item_eagle\",\n\"cost\":3000,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":53,\n\"name\":\"item_reaver\",\n\"cost\":3000,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":54,\n\"name\":\"item_relic\",\n\"cost\":3800,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":55,\n\"name\":\"item_hyperstone\",\n\"cost\":2000,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":56,\n\"name\":\"item_ring_of_health\",\n\"cost\":825,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":57,\n\"name\":\"item_void_stone\",\n\"cost\":825,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":58,\n\"name\":\"item_mystic_staff\",\n\"cost\":2700,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":59,\n\"name\":\"item_energy_booster\",\n\"cost\":900,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":60,\n\"name\":\"item_point_booster\",\n\"cost\":1200,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":61,\n\"name\":\"item_vitality_booster\",\n\"cost\":1100,\n\"secret_shop\":1,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":62,\n\"name\":\"item_recipe_power_treads\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":63,\n\"name\":\"item_power_treads\",\n\"cost\":1400,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":64,\n\"name\":\"item_recipe_hand_of_midas\",\n\"cost\":1750,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":65,\n\"name\":\"item_hand_of_midas\",\n\"cost\":2200,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":66,\n\"name\":\"item_recipe_oblivion_staff\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":67,\n\"name\":\"item_oblivion_staff\",\n\"cost\":1500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":68,\n\"name\":\"item_recipe_pers\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":69,\n\"name\":\"item_pers\",\n\"cost\":1650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":70,\n\"name\":\"item_recipe_poor_mans_shield\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":71,\n\"name\":\"item_poor_mans_shield\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":72,\n\"name\":\"item_recipe_bracer\",\n\"cost\":210,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":73,\n\"name\":\"item_bracer\",\n\"cost\":510,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":74,\n\"name\":\"item_recipe_wraith_band\",\n\"cost\":210,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":75,\n\"name\":\"item_wraith_band\",\n\"cost\":510,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":76,\n\"name\":\"item_recipe_null_talisman\",\n\"cost\":210,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":77,\n\"name\":\"item_null_talisman\",\n\"cost\":510,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":78,\n\"name\":\"item_recipe_mekansm\",\n\"cost\":1175,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":79,\n\"name\":\"item_mekansm\",\n\"cost\":1975,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":80,\n\"name\":\"item_recipe_vladmir\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":81,\n\"name\":\"item_vladmir\",\n\"cost\":2375,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":85,\n\"name\":\"item_recipe_buckler\",\n\"cost\":200,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":86,\n\"name\":\"item_buckler\",\n\"cost\":375,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":87,\n\"name\":\"item_recipe_ring_of_basilius\",\n\"cost\":250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":88,\n\"name\":\"item_ring_of_basilius\",\n\"cost\":425,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":268,\n\"name\":\"item_recipe_holy_locket\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":269,\n\"name\":\"item_holy_locket\",\n\"cost\":2500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":89,\n\"name\":\"item_recipe_pipe\",\n\"cost\":1250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":90,\n\"name\":\"item_pipe\",\n\"cost\":3425,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":91,\n\"name\":\"item_recipe_urn_of_shadows\",\n\"cost\":335,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":92,\n\"name\":\"item_urn_of_shadows\",\n\"cost\":840,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":93,\n\"name\":\"item_recipe_headdress\",\n\"cost\":250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":94,\n\"name\":\"item_headdress\",\n\"cost\":425,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":95,\n\"name\":\"item_recipe_sheepstick\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":96,\n\"name\":\"item_sheepstick\",\n\"cost\":5575,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":97,\n\"name\":\"item_recipe_orchid\",\n\"cost\":475,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":98,\n\"name\":\"item_orchid\",\n\"cost\":3475,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":245,\n\"name\":\"item_recipe_bloodthorn\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":250,\n\"name\":\"item_bloodthorn\",\n\"cost\":6475,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":251,\n\"name\":\"item_recipe_echo_sabre\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":252,\n\"name\":\"item_echo_sabre\",\n\"cost\":2500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":99,\n\"name\":\"item_recipe_cyclone\",\n\"cost\":650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":100,\n\"name\":\"item_cyclone\",\n\"cost\":2725,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":233,\n\"name\":\"item_recipe_aether_lens\",\n\"cost\":550,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":232,\n\"name\":\"item_aether_lens\",\n\"cost\":2275,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":101,\n\"name\":\"item_recipe_force_staff\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":102,\n\"name\":\"item_force_staff\",\n\"cost\":2175,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":262,\n\"name\":\"item_recipe_hurricane_pike\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":263,\n\"name\":\"item_hurricane_pike\",\n\"cost\":4525,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":103,\n\"name\":\"item_recipe_dagon\",\n\"cost\":1300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":197,\n\"name\":\"item_recipe_dagon_2\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":198,\n\"name\":\"item_recipe_dagon_3\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":199,\n\"name\":\"item_recipe_dagon_4\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":200,\n\"name\":\"item_recipe_dagon_5\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":104,\n\"name\":\"item_dagon\",\n\"cost\":2650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":201,\n\"name\":\"item_dagon_2\",\n\"cost\":3950,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":202,\n\"name\":\"item_dagon_3\",\n\"cost\":5250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":203,\n\"name\":\"item_dagon_4\",\n\"cost\":6550,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":204,\n\"name\":\"item_dagon_5\",\n\"cost\":7850,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":105,\n\"name\":\"item_recipe_necronomicon\",\n\"cost\":1250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":191,\n\"name\":\"item_recipe_necronomicon_2\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":192,\n\"name\":\"item_recipe_necronomicon_3\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":106,\n\"name\":\"item_necronomicon\",\n\"cost\":2050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":193,\n\"name\":\"item_necronomicon_2\",\n\"cost\":3300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":194,\n\"name\":\"item_necronomicon_3\",\n\"cost\":4550,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":107,\n\"name\":\"item_recipe_ultimate_scepter\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":108,\n\"name\":\"item_ultimate_scepter\",\n\"cost\":4200,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":270,\n\"name\":\"item_recipe_ultimate_scepter_2\",\n\"cost\":1600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":271,\n\"name\":\"item_ultimate_scepter_2\",\n\"cost\":5800,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":109,\n\"name\":\"item_recipe_refresher\",\n\"cost\":1700,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":110,\n\"name\":\"item_refresher\",\n\"cost\":5000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":111,\n\"name\":\"item_recipe_assault\",\n\"cost\":1300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":112,\n\"name\":\"item_assault\",\n\"cost\":5075,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":113,\n\"name\":\"item_recipe_heart\",\n\"cost\":650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":114,\n\"name\":\"item_heart\",\n\"cost\":5400,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":115,\n\"name\":\"item_recipe_black_king_bar\",\n\"cost\":1450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":116,\n\"name\":\"item_black_king_bar\",\n\"cost\":4050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":117,\n\"name\":\"item_aegis\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":118,\n\"name\":\"item_recipe_shivas_guard\",\n\"cost\":750,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":119,\n\"name\":\"item_shivas_guard\",\n\"cost\":4850,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":120,\n\"name\":\"item_recipe_bloodstone\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":121,\n\"name\":\"item_bloodstone\",\n\"cost\":5250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":122,\n\"name\":\"item_recipe_sphere\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":123,\n\"name\":\"item_sphere\",\n\"cost\":4600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":221,\n\"name\":\"item_recipe_lotus_orb\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":226,\n\"name\":\"item_lotus_orb\",\n\"cost\":3950,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":222,\n\"name\":\"item_recipe_meteor_hammer\",\n\"cost\":250,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":223,\n\"name\":\"item_meteor_hammer\",\n\"cost\":2350,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":224,\n\"name\":\"item_recipe_nullifier\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":225,\n\"name\":\"item_nullifier\",\n\"cost\":4725,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":255,\n\"name\":\"item_recipe_aeon_disk\",\n\"cost\":1100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":256,\n\"name\":\"item_aeon_disk\",\n\"cost\":3100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":258,\n\"name\":\"item_recipe_kaya\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":259,\n\"name\":\"item_kaya\",\n\"cost\":2050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":369,\n\"name\":\"item_trident\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":276,\n\"name\":\"item_combo_breaker\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":260,\n\"name\":\"item_refresher_shard\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":266,\n\"name\":\"item_recipe_spirit_vessel\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":267,\n\"name\":\"item_spirit_vessel\",\n\"cost\":2940,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":124,\n\"name\":\"item_recipe_vanguard\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":125,\n\"name\":\"item_vanguard\",\n\"cost\":1925,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":243,\n\"name\":\"item_recipe_crimson_guard\",\n\"cost\":950,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":242,\n\"name\":\"item_crimson_guard\",\n\"cost\":3800,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":126,\n\"name\":\"item_recipe_blade_mail\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":127,\n\"name\":\"item_blade_mail\",\n\"cost\":2050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":128,\n\"name\":\"item_recipe_soul_booster\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":129,\n\"name\":\"item_soul_booster\",\n\"cost\":3200,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":130,\n\"name\":\"item_recipe_hood_of_defiance\",\n\"cost\":300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":131,\n\"name\":\"item_hood_of_defiance\",\n\"cost\":1750,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":132,\n\"name\":\"item_recipe_rapier\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":133,\n\"name\":\"item_rapier\",\n\"cost\":6000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":134,\n\"name\":\"item_recipe_monkey_king_bar\",\n\"cost\":550,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":135,\n\"name\":\"item_monkey_king_bar\",\n\"cost\":4850,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":136,\n\"name\":\"item_recipe_radiance\",\n\"cost\":1350,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":137,\n\"name\":\"item_radiance\",\n\"cost\":5150,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":138,\n\"name\":\"item_recipe_butterfly\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":139,\n\"name\":\"item_butterfly\",\n\"cost\":5275,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":140,\n\"name\":\"item_recipe_greater_crit\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":141,\n\"name\":\"item_greater_crit\",\n\"cost\":5150,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":142,\n\"name\":\"item_recipe_basher\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":143,\n\"name\":\"item_basher\",\n\"cost\":2950,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":144,\n\"name\":\"item_recipe_bfury\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":145,\n\"name\":\"item_bfury\",\n\"cost\":4180,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":146,\n\"name\":\"item_recipe_manta\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":147,\n\"name\":\"item_manta\",\n\"cost\":4600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":148,\n\"name\":\"item_recipe_lesser_crit\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":149,\n\"name\":\"item_lesser_crit\",\n\"cost\":1950,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":234,\n\"name\":\"item_recipe_dragon_lance\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":236,\n\"name\":\"item_dragon_lance\",\n\"cost\":1900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":150,\n\"name\":\"item_recipe_armlet\",\n\"cost\":650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":151,\n\"name\":\"item_armlet\",\n\"cost\":2475,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":183,\n\"name\":\"item_recipe_invis_sword\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":152,\n\"name\":\"item_invis_sword\",\n\"cost\":3000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":248,\n\"name\":\"item_recipe_silver_edge\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":249,\n\"name\":\"item_silver_edge\",\n\"cost\":6100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":153,\n\"name\":\"item_recipe_sange_and_yasha\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":154,\n\"name\":\"item_sange_and_yasha\",\n\"cost\":4100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":272,\n\"name\":\"item_recipe_kaya_and_sange\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":273,\n\"name\":\"item_kaya_and_sange\",\n\"cost\":4100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":274,\n\"name\":\"item_recipe_yasha_and_kaya\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":277,\n\"name\":\"item_yasha_and_kaya\",\n\"cost\":4100,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":155,\n\"name\":\"item_recipe_satanic\",\n\"cost\":500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":156,\n\"name\":\"item_satanic\",\n\"cost\":5800,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":157,\n\"name\":\"item_recipe_mjollnir\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":158,\n\"name\":\"item_mjollnir\",\n\"cost\":5600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":159,\n\"name\":\"item_recipe_skadi\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":160,\n\"name\":\"item_skadi\",\n\"cost\":5300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":161,\n\"name\":\"item_recipe_sange\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":162,\n\"name\":\"item_sange\",\n\"cost\":2050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":163,\n\"name\":\"item_recipe_helm_of_the_dominator\",\n\"cost\":975,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":164,\n\"name\":\"item_helm_of_the_dominator\",\n\"cost\":2350,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":165,\n\"name\":\"item_recipe_maelstrom\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":166,\n\"name\":\"item_maelstrom\",\n\"cost\":2700,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":167,\n\"name\":\"item_recipe_desolator\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":168,\n\"name\":\"item_desolator\",\n\"cost\":3500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":169,\n\"name\":\"item_recipe_yasha\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":170,\n\"name\":\"item_yasha\",\n\"cost\":2050,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":171,\n\"name\":\"item_recipe_mask_of_madness\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":172,\n\"name\":\"item_mask_of_madness\",\n\"cost\":1775,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":173,\n\"name\":\"item_recipe_diffusal_blade\",\n\"cost\":700,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":174,\n\"name\":\"item_diffusal_blade\",\n\"cost\":3150,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":175,\n\"name\":\"item_recipe_ethereal_blade\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":176,\n\"name\":\"item_ethereal_blade\",\n\"cost\":4500,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":177,\n\"name\":\"item_recipe_soul_ring\",\n\"cost\":350,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":178,\n\"name\":\"item_soul_ring\",\n\"cost\":815,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":179,\n\"name\":\"item_recipe_arcane_boots\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":180,\n\"name\":\"item_arcane_boots\",\n\"cost\":1400,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":228,\n\"name\":\"item_recipe_octarine_core\",\n\"cost\":900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":235,\n\"name\":\"item_octarine_core\",\n\"cost\":5000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":181,\n\"name\":\"item_orb_of_venom\",\n\"cost\":300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":240,\n\"name\":\"item_blight_stone\",\n\"cost\":300,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":184,\n\"name\":\"item_recipe_ancient_janggo\",\n\"cost\":600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":185,\n\"name\":\"item_ancient_janggo\",\n\"cost\":1475,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":186,\n\"name\":\"item_recipe_medallion_of_courage\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":187,\n\"name\":\"item_medallion_of_courage\",\n\"cost\":1025,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":227,\n\"name\":\"item_recipe_solar_crest\",\n\"cost\":450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":229,\n\"name\":\"item_solar_crest\",\n\"cost\":3775,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":188,\n\"name\":\"item_smoke_of_deceit\",\n\"cost\":50,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":257,\n\"name\":\"item_tome_of_knowledge\",\n\"cost\":75,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":189,\n\"name\":\"item_recipe_veil_of_discord\",\n\"cost\":650,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":190,\n\"name\":\"item_veil_of_discord\",\n\"cost\":1525,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":230,\n\"name\":\"item_recipe_guardian_greaves\",\n\"cost\":1600,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":231,\n\"name\":\"item_guardian_greaves\",\n\"cost\":4975,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":205,\n\"name\":\"item_recipe_rod_of_atos\",\n\"cost\":850,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":206,\n\"name\":\"item_rod_of_atos\",\n\"cost\":2750,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":238,\n\"name\":\"item_recipe_iron_talon\",\n\"cost\":1,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":239,\n\"name\":\"item_iron_talon\",\n\"cost\":301,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":207,\n\"name\":\"item_recipe_abyssal_blade\",\n\"cost\":1750,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":208,\n\"name\":\"item_abyssal_blade\",\n\"cost\":6625,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":209,\n\"name\":\"item_recipe_heavens_halberd\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":210,\n\"name\":\"item_heavens_halberd\",\n\"cost\":3450,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":211,\n\"name\":\"item_recipe_ring_of_aquila\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":212,\n\"name\":\"item_ring_of_aquila\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":213,\n\"name\":\"item_recipe_tranquil_boots\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":214,\n\"name\":\"item_tranquil_boots\",\n\"cost\":925,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":215,\n\"name\":\"item_shadow_amulet\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":253,\n\"name\":\"item_recipe_glimmer_cape\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":254,\n\"name\":\"item_glimmer_cape\",\n\"cost\":1900,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1021,\n\"name\":\"item_river_painter\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1022,\n\"name\":\"item_river_painter2\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1023,\n\"name\":\"item_river_painter3\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1024,\n\"name\":\"item_river_painter4\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1025,\n\"name\":\"item_river_painter5\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1026,\n\"name\":\"item_river_painter6\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1027,\n\"name\":\"item_river_painter7\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1028,\n\"name\":\"item_mutation_tombstone\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1029,\n\"name\":\"item_super_blink\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1030,\n\"name\":\"item_pocket_tower\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":1032,\n\"name\":\"item_pocket_roshan\",\n\"cost\":1000,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":287,\n\"name\":\"item_keen_optic\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":288,\n\"name\":\"item_grove_bow\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":289,\n\"name\":\"item_quickening_charm\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":290,\n\"name\":\"item_philosophers_stone\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":291,\n\"name\":\"item_force_boots\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":292,\n\"name\":\"item_desolator_2\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":293,\n\"name\":\"item_phoenix_ash\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":294,\n\"name\":\"item_seer_stone\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":295,\n\"name\":\"item_greater_mango\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":302,\n\"name\":\"item_elixer\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":297,\n\"name\":\"item_vampire_fangs\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":298,\n\"name\":\"item_craggy_coat\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":299,\n\"name\":\"item_greater_faerie_fire\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":300,\n\"name\":\"item_timeless_relic\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":301,\n\"name\":\"item_mirror_shield\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":303,\n\"name\":\"item_recipe_ironwood_tree\",\n\"cost\":1,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":304,\n\"name\":\"item_ironwood_tree\",\n\"cost\":151,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":328,\n\"name\":\"item_mango_tree\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":305,\n\"name\":\"item_royal_jelly\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":306,\n\"name\":\"item_pupils_gift\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":307,\n\"name\":\"item_tome_of_aghanim\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":308,\n\"name\":\"item_repair_kit\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":309,\n\"name\":\"item_mind_breaker\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":310,\n\"name\":\"item_third_eye\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":311,\n\"name\":\"item_spell_prism\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":325,\n\"name\":\"item_princes_knife\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":330,\n\"name\":\"item_witless_shako\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":334,\n\"name\":\"item_imp_claw\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":335,\n\"name\":\"item_flicker\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":336,\n\"name\":\"item_spy_gadget\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":326,\n\"name\":\"item_spider_legs\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":327,\n\"name\":\"item_helm_of_the_undying\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":329,\n\"name\":\"item_recipe_vambrace\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":331,\n\"name\":\"item_vambrace\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":312,\n\"name\":\"item_horizon\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":313,\n\"name\":\"item_fusion_rune\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":354,\n\"name\":\"item_ocean_heart\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":355,\n\"name\":\"item_broom_handle\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":356,\n\"name\":\"item_trusty_shovel\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":357,\n\"name\":\"item_nether_shawl\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":358,\n\"name\":\"item_dragon_scale\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":359,\n\"name\":\"item_essence_ring\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":360,\n\"name\":\"item_clumsy_net\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":361,\n\"name\":\"item_enchanted_quiver\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":362,\n\"name\":\"item_ninja_gear\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":363,\n\"name\":\"item_illusionsts_cape\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":364,\n\"name\":\"item_havoc_hammer\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":365,\n\"name\":\"item_panic_button\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":366,\n\"name\":\"item_apex\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":367,\n\"name\":\"item_ballista\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":368,\n\"name\":\"item_woodland_striders\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":275,\n\"name\":\"item_recipe_trident\",\n\"cost\":1,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":370,\n\"name\":\"item_demonicon\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":317,\n\"name\":\"item_recipe_fallen_sky\",\n\"cost\":1,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":1\n},\n{\n\"id\":371,\n\"name\":\"item_fallen_sky\",\n\"cost\":4751,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":372,\n\"name\":\"item_pirate_hat\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":373,\n\"name\":\"item_dimensional_doorway\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":374,\n\"name\":\"item_ex_machina\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":375,\n\"name\":\"item_faded_broach\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":376,\n\"name\":\"item_paladin_sword\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":377,\n\"name\":\"item_minotaur_horn\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":378,\n\"name\":\"item_orb_of_destruction\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":379,\n\"name\":\"item_the_leveller\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":349,\n\"name\":\"item_arcane_ring\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n},\n{\n\"id\":381,\n\"name\":\"item_titan_sliver\",\n\"cost\":0,\n\"secret_shop\":0,\n\"side_shop\":0,\n\"recipe\":0\n}\n]\n,\n\"status\":200\n}\n}"
)
func TestGetItems(t *testing.T) {
g := Goblin(t)
mockClient := mockClient{}
api := LoadConfig(GetTestConfig())
api.client = &mockClient
g.Describe("api.GetItems", func() {
var items Items
var err error
g.It("Should call the correct URL", func() {
mockClient.DoFunc = func(req *http.Request) (*http.Response, error) {
g.Assert(req.URL.String()).Equal(api.getItemsUrl() + "?key=keyTEST")
return &http.Response{StatusCode: 200, Body: ioutil.NopCloser(strings.NewReader(itemsResponse))}, nil
}
items, err = api.GetItems()
})
g.It("Should return no error", func() {
g.Assert(err).Equal(nil)
})
g.It("Should return 351 items", func() {
g.Assert(items.Count()).Equal(351)
})
g.It("Should work with concurrent usage", func() {
var calledMutex sync.Mutex
var called bool
var wg sync.WaitGroup
api.itemsCache.fromCache = 0
mockClient.DoFunc = func(req *http.Request) (*http.Response, error) {
g.Assert(req.URL.String()).Equal(api.getItemsUrl() + "?key=keyTEST")
calledMutex.Lock()
defer calledMutex.Unlock()
g.Assert(called).IsFalse()
called = true
return &http.Response{StatusCode: 200, Body: ioutil.NopCloser(strings.NewReader(itemsResponse))}, nil
}
wg.Add(10)
for i := 0; i < 10; i++ {
go func() {
i, err := api.GetItems()
g.Assert(err).IsNil()
g.Assert(i).Equal(items)
defer wg.Done()
}()
}
wg.Wait()
g.Assert(called).IsTrue()
})
g.It("Should fill cache", func() {
g.Assert(api.itemsCache.fromCache).Equal(uint32(1))
})
})
}
func TestItemName(t *testing.T) {
g := Goblin(t)
g.Describe("Items Names", func() {
g.It("Should return the correct names", func() {
for _, name := range []string{"name0", "a", "anotherName"} {
iN := itemNameFromFullName(itemPrefix + name)
g.Assert(iN.GetName()).Equal(name)
g.Assert(iN.GetFullName()).Equal(itemPrefix + name)
g.Assert(iN.GetPrefix()).Equal(itemPrefix)
}
})
})
}
func TestDota2_GetItemImage(t *testing.T) {
g := Goblin(t)
mockClient := mockClient{}
api := LoadConfig(GetTestConfig())
api.client = &mockClient
var jpg bool
mockClient.DoFunc = func(req *http.Request) (*http.Response, error) {
g.Assert(req.URL.String()).Equal(getItemImageUrl(&api, itemNameFromFullName(itemPrefix+"item")))
var b []byte
if jpg {
b = getJpgTest()
jpg = false
} else {
b = getPngTest()
jpg = true
}
return &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewBuffer(b))}, nil
}
test := func() {
img, err := api.GetItemImage(Item{
Name: itemNameFromFullName(itemPrefix + "item"),
})
g.Assert(err).IsNil()
g.Assert(validateTestImage(img)).IsTrue()
}
g.Describe("api.GetItemImage", func() {
g.It("Should return an image from png", func() {
test()
})
g.It("Should return an image from jpg", func() {
test()
})
})
}
func TestItems_GetById(t *testing.T) {
g := Goblin(t)
api, _ := LoadConfigFromFile("config.yaml")
items, _ := api.GetItems()
g.Describe("Items.GetById", func() {
g.It("Should return the correct hero when ID is found", func() {
for _, item := range items.items {
i, err := items.GetById(item.Id)
g.Assert(err).IsNil()
g.Assert(i.Id).Equal(item.Id)
g.Assert(i.Name).Equal(item.Name)
}
})
g.It("Should return Error when ID is not found", func() {
missingId := 1
for _, hero := range items.items {
missingId += hero.Id
}
_, err := items.GetById(missingId)
g.Assert(err).IsNotNil()
})
})
}
func BenchmarkItems_GetById(b *testing.B) {
api, _ := LoadConfigFromFile("config.yaml")
items, _ := api.GetItems()
ids := make([]int, b.N)
rand.Seed(time.Now().Unix())
for i := 0; i < b.N; i++ {
ids[i] = items.items[rand.Int()%len(items.items)].Id
}
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
items.GetById(ids[i])
}
}
func TestItems_GetByName(t *testing.T) {
g := Goblin(t)
api, _ := LoadConfigFromFile("config.yaml")
items, _ := api.GetItems()
g.Describe("Items.GetById", func() {
g.It("Should return the correct hero when Name is found", func() {
for _, item := range items.items {
i, err := items.GetByName(item.Name.GetFullName())
g.Assert(err).IsNil()
g.Assert(i.Id).Equal(item.Id)
g.Assert(i.Name).Equal(item.Name)
}
})
g.It("Should return Error when Name is not found", func() {
_, err := items.GetByName("irNe9GNzJm")
g.Assert(err).IsNotNil()
})
})
}
func BenchmarkItems_GetByName(b *testing.B) {
api, _ := LoadConfigFromFile("config.yaml")
items, _ := api.GetItems()
names := make([]string, b.N)
rand.Seed(time.Now().Unix())
for i := 0; i < b.N; i++ {
names[i] = items.items[rand.Int()%len(items.items)].Name.GetFullName()
}
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
items.GetByName(names[i])
}
}