reve 0.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +155 -0
- data/Rakefile +43 -0
- data/init.rb +1 -0
- data/lib/reve.rb +793 -0
- data/reve.rb +1 -0
- data/test/test_reve.rb +700 -0
- data/test/xml/alliances.xml +171 -0
- data/test/xml/assets.xml +32 -0
- data/test/xml/badxml.xml +6 -0
- data/test/xml/character_sheet.xml +37 -0
- data/test/xml/characterid.xml +11 -0
- data/test/xml/charactername.xml +11 -0
- data/test/xml/characters.xml +13 -0
- data/test/xml/conqurable_stations.xml +11 -0
- data/test/xml/corporation_sheet.xml +52 -0
- data/test/xml/errors/error_100.xml +5 -0
- data/test/xml/errors/error_101.xml +5 -0
- data/test/xml/errors/error_102.xml +5 -0
- data/test/xml/errors/error_103.xml +5 -0
- data/test/xml/errors/error_104.xml +5 -0
- data/test/xml/errors/error_105.xml +5 -0
- data/test/xml/errors/error_106.xml +5 -0
- data/test/xml/errors/error_107.xml +5 -0
- data/test/xml/errors/error_108.xml +5 -0
- data/test/xml/errors/error_109.xml +5 -0
- data/test/xml/errors/error_110.xml +5 -0
- data/test/xml/errors/error_111.xml +5 -0
- data/test/xml/errors/error_112.xml +5 -0
- data/test/xml/errors/error_113.xml +5 -0
- data/test/xml/errors/error_114.xml +5 -0
- data/test/xml/errors/error_115.xml +5 -0
- data/test/xml/errors/error_116.xml +5 -0
- data/test/xml/errors/error_117.xml +5 -0
- data/test/xml/errors/error_118.xml +5 -0
- data/test/xml/errors/error_119.xml +5 -0
- data/test/xml/errors/error_120.xml +5 -0
- data/test/xml/errors/error_121.xml +5 -0
- data/test/xml/errors/error_200.xml +5 -0
- data/test/xml/errors/error_201.xml +5 -0
- data/test/xml/errors/error_202.xml +5 -0
- data/test/xml/errors/error_203.xml +5 -0
- data/test/xml/errors/error_204.xml +5 -0
- data/test/xml/errors/error_205.xml +5 -0
- data/test/xml/errors/error_206.xml +5 -0
- data/test/xml/errors/error_207.xml +5 -0
- data/test/xml/errors/error_208.xml +5 -0
- data/test/xml/errors/error_209.xml +5 -0
- data/test/xml/errors/error_210.xml +5 -0
- data/test/xml/errors/error_211.xml +5 -0
- data/test/xml/errors/error_212.xml +5 -0
- data/test/xml/errors/error_213.xml +5 -0
- data/test/xml/errors/error_214.xml +5 -0
- data/test/xml/errors/error_500.xml +5 -0
- data/test/xml/errors/error_501.xml +5 -0
- data/test/xml/errors/error_502.xml +5 -0
- data/test/xml/errors/error_503.xml +5 -0
- data/test/xml/errors/error_504.xml +5 -0
- data/test/xml/errors/error_505.xml +5 -0
- data/test/xml/errors/error_506.xml +5 -0
- data/test/xml/errors/error_507.xml +5 -0
- data/test/xml/errors/error_508.xml +5 -0
- data/test/xml/errors/error_509.xml +5 -0
- data/test/xml/errors/error_510.xml +5 -0
- data/test/xml/errors/error_511.xml +5 -0
- data/test/xml/errors/error_512.xml +5 -0
- data/test/xml/errors/error_513.xml +5 -0
- data/test/xml/errors/error_514.xml +5 -0
- data/test/xml/errors/error_515.xml +5 -0
- data/test/xml/errors/error_516.xml +5 -0
- data/test/xml/errors/error_517.xml +5 -0
- data/test/xml/errors/error_518.xml +5 -0
- data/test/xml/errors/error_519.xml +5 -0
- data/test/xml/errors/error_520.xml +5 -0
- data/test/xml/errors/error_521.xml +5 -0
- data/test/xml/errors/error_522.xml +5 -0
- data/test/xml/errors/error_523.xml +5 -0
- data/test/xml/errors/error_900.xml +5 -0
- data/test/xml/errors/error_901.xml +5 -0
- data/test/xml/errors/error_902.xml +5 -0
- data/test/xml/errors/error_903.xml +5 -0
- data/test/xml/errors/error_999.xml +5 -0
- data/test/xml/industryjobs.xml +11 -0
- data/test/xml/kills.xml +163 -0
- data/test/xml/mapjumps.xml +15 -0
- data/test/xml/mapkills.xml +16 -0
- data/test/xml/market_transactions.xml +79 -0
- data/test/xml/marketorders.xml +37 -0
- data/test/xml/member_tracking.xml +22 -0
- data/test/xml/nonmember_corpsheet.xml +30 -0
- data/test/xml/reftypes.xml +14 -0
- data/test/xml/skill_in_training-amarr-titan.xml +13 -0
- data/test/xml/skill_in_training-none.xml +7 -0
- data/test/xml/skilltree.xml +40 -0
- data/test/xml/sovereignty.xml +29 -0
- data/test/xml/starbase_fuel.xml +23 -0
- data/test/xml/starbases.xml +12 -0
- data/test/xml/wallet_balance.xml +17 -0
- data/test/xml/wallet_journal.xml +48 -0
- data/tester.rb +17 -0
- metadata +151 -0
data/reve.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'lib/reve'
|
data/test/test_reve.rb
ADDED
@@ -0,0 +1,700 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'reve'
|
3
|
+
require 'fileutils' # for saving downloaded XML
|
4
|
+
|
5
|
+
XML_BASE = File.join(File.dirname(__FILE__),'/xml/')
|
6
|
+
SAVE_PATH = File.join(File.dirname(__FILE__),'downloads')
|
7
|
+
|
8
|
+
class TestReve < Test::Unit::TestCase
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@api = get_api
|
12
|
+
assert_nil @api.last_hash
|
13
|
+
FileUtils.mkdir(SAVE_PATH) rescue nil
|
14
|
+
end
|
15
|
+
def teardown
|
16
|
+
FileUtils.rm_rf(SAVE_PATH)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_makes_right_api_empty
|
20
|
+
api = get_api
|
21
|
+
assert_instance_of Reve::API, api
|
22
|
+
assert_equal "", api.userid
|
23
|
+
assert_equal "", api.key
|
24
|
+
assert_equal "", api.charid
|
25
|
+
end
|
26
|
+
def test_makes_right_api_1_param
|
27
|
+
api = get_api(12345)
|
28
|
+
assert_instance_of Reve::API, api
|
29
|
+
assert_equal "12345", api.userid
|
30
|
+
assert_equal "", api.key
|
31
|
+
assert_equal "", api.charid
|
32
|
+
end
|
33
|
+
def test_makes_right_api_2_param
|
34
|
+
api = get_api(12345,54321)
|
35
|
+
assert_instance_of Reve::API, api
|
36
|
+
assert_equal "12345", api.userid
|
37
|
+
assert_equal "54321", api.key
|
38
|
+
assert_equal "", api.charid
|
39
|
+
end
|
40
|
+
def test_makes_right_api_3_param
|
41
|
+
api = get_api(12345,54321,'abcde')
|
42
|
+
assert_instance_of Reve::API, api
|
43
|
+
assert_equal "12345", api.userid
|
44
|
+
assert_equal "54321", api.key
|
45
|
+
assert_equal "abcde", api.charid
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_makes_a_simple_hash
|
49
|
+
Reve::API.alliances_url = XML_BASE + 'alliances.xml'
|
50
|
+
h = @api.alliances :just_hash => true
|
51
|
+
assert_instance_of String, h
|
52
|
+
assert_equal "xml/alliances.xml", h
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_makes_a_complex_hash
|
56
|
+
Reve::API.corporate_wallet_trans_url = XML_BASE + 'market_transactions.xml'
|
57
|
+
@api.userid = 999
|
58
|
+
@api.key = 'aaa'
|
59
|
+
h = @api.corporate_wallet_transactions :accountkey => '1001', :characterid => 123, :beforerefid => 456, :just_hash => true
|
60
|
+
assert_instance_of String, h
|
61
|
+
assert_equal 'xml/market_transactions.xml:accountkey:1001:apiKey:aaa:beforerefid:456:characterid:123:userID:999',h
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_bad_xml
|
65
|
+
Reve::API.training_skill_url = XML_BASE + 'badxml.xml'
|
66
|
+
skill = @api.skill_in_training
|
67
|
+
assert_not_nil @api.last_hash
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_saving_xml_works
|
71
|
+
@api.save_path = SAVE_PATH
|
72
|
+
alliances = @api.alliances
|
73
|
+
assert File.exists?(File.join(SAVE_PATH,'alliances',@api.cached_until.to_i.to_s + '.xml'))
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_saving_xml_when_save_path_is_nil
|
77
|
+
assert_nil @api.save_path
|
78
|
+
alliances = @api.alliances
|
79
|
+
assert ! File.exists?(File.join(SAVE_PATH,'alliances',@api.cached_until.to_i.to_s + '.xml'))
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_saving_xml_when_404
|
83
|
+
@api.save_path = SAVE_PATH
|
84
|
+
alliances = nil
|
85
|
+
assert_raise Errno::ENOENT do
|
86
|
+
alliances = @api.alliances :url => File.join(XML_BASE,rand.to_s)
|
87
|
+
end
|
88
|
+
assert_nil @api.cached_until
|
89
|
+
assert_equal 0, Dir.glob(File.join(SAVE_PATH,'alliances','*.xml')).size # no XML saved
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_corporation_sheet_clean
|
93
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'corporation_sheet.xml'
|
94
|
+
corporation = nil
|
95
|
+
assert_nothing_raised do
|
96
|
+
corporation = @api.corporation_sheet :characterid => 123
|
97
|
+
end
|
98
|
+
assert_not_nil @api.last_hash
|
99
|
+
assert_not_nil @api.cached_until
|
100
|
+
|
101
|
+
assert_equal 0, corporation.logo.graphic_id
|
102
|
+
assert_equal 681, corporation.logo.color_1
|
103
|
+
assert_equal 676, corporation.logo.color_2
|
104
|
+
assert_equal 448, corporation.logo.shape_1
|
105
|
+
assert_equal 418, corporation.logo.shape_3
|
106
|
+
assert_equal 0, corporation.logo.color_3
|
107
|
+
assert_equal 0, corporation.logo.shape_2
|
108
|
+
assert_equal "Master Wallet", corporation.wallet_divisions.select { |d| d.key == 1000 }.first.description
|
109
|
+
assert_equal "DIVISION", corporation.divisions.select { |d| d.key == 1003 }.first.description
|
110
|
+
assert_equal "Garth's testing corp of awesome sauce, win sauce as it were. In this corp...<br><br>IT HAPPENS ALL OVER", corporation.description
|
111
|
+
assert_equal 150212025, corporation.id
|
112
|
+
assert_equal "Banana Republic", corporation.name
|
113
|
+
assert_equal "BR", corporation.ticker
|
114
|
+
assert_equal 93.7, corporation.tax_rate
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_conqurable_stations_clean
|
118
|
+
Reve::API.conqurable_outposts_url = XML_BASE + 'conqurable_stations.xml'
|
119
|
+
stations = nil
|
120
|
+
assert_nothing_raised do
|
121
|
+
stations = @api.conqurable_stations
|
122
|
+
end
|
123
|
+
|
124
|
+
assert_equal 3, stations.size
|
125
|
+
assert_not_nil @api.last_hash
|
126
|
+
assert_not_nil @api.cached_until
|
127
|
+
|
128
|
+
stations.each do |station|
|
129
|
+
assert_not_nil station.id
|
130
|
+
assert_not_nil station.name
|
131
|
+
assert_not_nil station.type_id
|
132
|
+
assert_not_nil station.type_name
|
133
|
+
assert_not_nil station.corporation_id
|
134
|
+
assert_not_nil station.corporation_name
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_convert_characterids_to_names
|
139
|
+
ids = [ 797400947,892008733 ]
|
140
|
+
names = []
|
141
|
+
assert_nothing_raised do
|
142
|
+
names = @api.character_name :url => XML_BASE + 'charactername.xml', :ids => ids
|
143
|
+
end
|
144
|
+
assert_equal 2, names.size
|
145
|
+
actual_names = names.collect { |n| n.name }
|
146
|
+
assert actual_names.include?('CCP Garthagk')
|
147
|
+
assert actual_names.include?('Raquel Smith')
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_convert_characternames_to_ids
|
151
|
+
names = [ 'CCP Garthagk', 'Raquel Smith' ]
|
152
|
+
ids = []
|
153
|
+
assert_nothing_raised do
|
154
|
+
ids = @api.character_id :url => XML_BASE + 'characterid.xml', :names => names
|
155
|
+
end
|
156
|
+
assert_equal 2, ids.size
|
157
|
+
actual_ids = ids.collect { |n| n.id }
|
158
|
+
assert actual_ids.include?(797400947)
|
159
|
+
assert actual_ids.include?(892008733)
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_personal_industry_jobs_clean
|
163
|
+
Reve::API.personal_industry_jobs_url = XML_BASE + 'industryjobs.xml'
|
164
|
+
jobs = nil
|
165
|
+
assert_nothing_raised do
|
166
|
+
jobs = @api.personal_industry_jobs
|
167
|
+
end
|
168
|
+
assert_equal 2, jobs.size
|
169
|
+
# All things got assigned something.
|
170
|
+
jobs.each do |job|
|
171
|
+
[ :id, :assembly_line_id, :container_id, :installed_item_id, :installed_item_location_id,
|
172
|
+
:installed_item_quantity, :installed_item_productivity_level, :installed_item_material_level,
|
173
|
+
:installed_item_licensed_production_runs_remaining, :output_location_id, :installer_id, :runs,
|
174
|
+
:licensed_production_runs, :installed_system_id, :container_location_id, :material_multiplier,
|
175
|
+
:char_material_multiplier, :time_multiplier, :char_time_multiplier, :installed_item_type_id,
|
176
|
+
:output_type_id, :container_type_id, :installed_item_copy, :completed, :completed_successfully,
|
177
|
+
:installed_item_flag, :output_flag, :activity_id, :completed_status, :installed_at,
|
178
|
+
:begin_production_at, :end_production_at, :pause_production_time ].each do |att|
|
179
|
+
assert_not_nil job.send(att)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
def test_corporate_industry_jobs_clean
|
184
|
+
Reve::API.corporate_industry_jobs_url = XML_BASE + 'industryjobs.xml'
|
185
|
+
jobs = nil
|
186
|
+
assert_nothing_raised do
|
187
|
+
jobs = @api.corporate_industry_jobs
|
188
|
+
end
|
189
|
+
assert_equal 2, jobs.size
|
190
|
+
# All things got assigned something.
|
191
|
+
jobs.each do |job|
|
192
|
+
[ :id, :assembly_line_id, :container_id, :installed_item_id, :installed_item_location_id,
|
193
|
+
:installed_item_quantity, :installed_item_productivity_level, :installed_item_material_level,
|
194
|
+
:installed_item_licensed_production_runs_remaining, :output_location_id, :installer_id, :runs,
|
195
|
+
:licensed_production_runs, :installed_system_id, :container_location_id, :material_multiplier,
|
196
|
+
:char_material_multiplier, :time_multiplier, :char_time_multiplier, :installed_item_type_id,
|
197
|
+
:output_type_id, :container_type_id, :installed_item_copy, :completed, :completed_successfully,
|
198
|
+
:installed_item_flag, :output_flag, :activity_id, :completed_status, :installed_at,
|
199
|
+
:begin_production_at, :end_production_at, :pause_production_time ].each do |att|
|
200
|
+
assert_not_nil job.send(att)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def test_assets_clean
|
206
|
+
Reve::API.personal_assets_url = XML_BASE + 'assets.xml'
|
207
|
+
assets = nil
|
208
|
+
assert_nothing_raised do
|
209
|
+
assets = @api.personal_assets_list
|
210
|
+
end
|
211
|
+
assert_equal 18, assets.size # 18 single and 1 container
|
212
|
+
assert_equal 1, assets.inject(0) { |memo,a| memo += a.assets.size } # We have one container and it happens to have 1 asset
|
213
|
+
end
|
214
|
+
|
215
|
+
|
216
|
+
# no need to test corporate cos they're the same.
|
217
|
+
# TODO: Test with nested losses
|
218
|
+
def test_kills_clean
|
219
|
+
Reve::API.personal_kills_url = XML_BASE + 'kills.xml'
|
220
|
+
kills = nil
|
221
|
+
assert_nothing_raised do
|
222
|
+
kills = @api.personal_kills
|
223
|
+
end
|
224
|
+
assert_equal 10, kills.size
|
225
|
+
assert_equal 10, kills.collect { |k| k.victim.name }.nitems # i should have 10 good victim names
|
226
|
+
|
227
|
+
attacker_names = kills.collect { |k| k.attackers.collect { |a| a.name } }.flatten
|
228
|
+
assert_equal 25, attacker_names.size # total of 25 attackers (24 players + 1 NPC)
|
229
|
+
assert_equal 1, attacker_names.grep(nil).size # npc exists once
|
230
|
+
assert_equal 24, attacker_names.nitems # 24 player attackers
|
231
|
+
|
232
|
+
kills.each do |kill|
|
233
|
+
assert_kind_of Integer, kill.id
|
234
|
+
assert_kind_of Integer, kill.system_id
|
235
|
+
assert_kind_of Time, kill.created_at
|
236
|
+
assert_nil kill.moon_id # the ones in the kills.xml are all nil
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
def test_characters_clean
|
241
|
+
Reve::API.characters_url = XML_BASE + 'characters.xml'
|
242
|
+
chars = nil
|
243
|
+
assert_nothing_raised do
|
244
|
+
chars = @api.characters
|
245
|
+
end
|
246
|
+
assert_not_nil @api.last_hash
|
247
|
+
assert_not_nil @api.cached_until
|
248
|
+
assert_equal 1, chars.size
|
249
|
+
chars.each do |char|
|
250
|
+
assert_instance_of Reve::Classes::Character, char
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_starbases_clean
|
255
|
+
Reve::API.starbases_url = XML_BASE + 'starbases.xml'
|
256
|
+
bases = nil
|
257
|
+
assert_nothing_raised do
|
258
|
+
bases = @api.starbases(:characterid => 1)
|
259
|
+
end
|
260
|
+
assert_not_nil @api.last_hash
|
261
|
+
assert_not_nil @api.cached_until
|
262
|
+
assert_equal 4, bases.size
|
263
|
+
bases.each do |starbase|
|
264
|
+
assert_instance_of Reve::Classes::Starbase, starbase
|
265
|
+
assert_not_nil starbase.type_id
|
266
|
+
assert_not_nil starbase.type_name
|
267
|
+
assert_not_nil starbase.id
|
268
|
+
assert_not_nil starbase.system_id
|
269
|
+
assert_not_nil starbase.system_name
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_starbase_fuel_clean
|
274
|
+
Reve::API.starbasedetail_url = XML_BASE + 'starbase_fuel.xml'
|
275
|
+
fuels = nil
|
276
|
+
assert_nothing_raised do
|
277
|
+
fuels = @api.starbase_fuel(:starbaseid => 1,:characterid => 2)
|
278
|
+
end
|
279
|
+
assert_not_nil @api.last_hash
|
280
|
+
assert_not_nil @api.cached_until
|
281
|
+
assert_equal 14, fuels.size
|
282
|
+
fuels.each do |fuel|
|
283
|
+
assert_equal 1, fuel.starbase_id
|
284
|
+
assert_not_nil fuel.type_id
|
285
|
+
assert_not_nil fuel.quantity
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
def test_alliances_clean
|
290
|
+
Reve::API.alliances_url = XML_BASE + 'alliances.xml'
|
291
|
+
alliances = nil
|
292
|
+
assert_nothing_raised do
|
293
|
+
alliances = @api.alliances
|
294
|
+
end
|
295
|
+
assert_not_nil @api.last_hash
|
296
|
+
assert_not_nil @api.cached_until
|
297
|
+
assert_equal 3, alliances.size
|
298
|
+
corpsize = 0
|
299
|
+
alliances.each do |alliance|
|
300
|
+
assert_instance_of Reve::Classes::Alliance, alliance
|
301
|
+
assert_not_equal 0, alliance.member_corporations
|
302
|
+
assert_not_nil alliance.name
|
303
|
+
assert_not_nil alliance.id
|
304
|
+
assert_not_nil alliance.short_name
|
305
|
+
assert_not_nil alliance.member_count
|
306
|
+
assert_not_nil alliance.executor_corp_id
|
307
|
+
corpsize += alliance.member_corporations.size
|
308
|
+
end
|
309
|
+
assert_equal 150, corpsize
|
310
|
+
end
|
311
|
+
|
312
|
+
def test_sovereignty_clean
|
313
|
+
Reve::API.sovereignty_url = XML_BASE + 'sovereignty.xml'
|
314
|
+
sovereignties = nil
|
315
|
+
assert_nothing_raised do
|
316
|
+
sovereignties = @api.sovereignty
|
317
|
+
end
|
318
|
+
assert_not_nil @api.last_hash
|
319
|
+
assert_not_nil @api.cached_until
|
320
|
+
assert_equal 7, sovereignties.size
|
321
|
+
sovereignties.each do |sovereignty|
|
322
|
+
assert_instance_of Reve::Classes::Sovereignty, sovereignty
|
323
|
+
assert_not_nil sovereignty.system_id
|
324
|
+
assert_not_nil sovereignty.constellation_sovereignty
|
325
|
+
assert_not_nil sovereignty.system_name
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
def test_reftypes_clean
|
330
|
+
Reve::API.reftypes_url = XML_BASE + 'reftypes.xml'
|
331
|
+
reftypes = nil
|
332
|
+
assert_nothing_raised do
|
333
|
+
reftypes = @api.ref_types
|
334
|
+
end
|
335
|
+
assert_not_nil @api.last_hash
|
336
|
+
assert_not_nil @api.cached_until
|
337
|
+
assert_equal 6, reftypes.size
|
338
|
+
reftypes.each do |reftype|
|
339
|
+
assert_not_nil reftype.id
|
340
|
+
assert_not_nil reftype.name
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
def test_market_orders_clean
|
345
|
+
Reve::API.personal_market_orders_url = XML_BASE + 'marketorders.xml'
|
346
|
+
orders = nil
|
347
|
+
assert_nothing_raised do
|
348
|
+
orders = @api.personal_market_orders
|
349
|
+
end
|
350
|
+
assert_not_nil @api.last_hash
|
351
|
+
assert_not_nil @api.cached_until
|
352
|
+
assert_equal 9, orders.size
|
353
|
+
buys = sells = 0
|
354
|
+
orders.each do |order|
|
355
|
+
assert_not_nil order.id
|
356
|
+
assert_kind_of Time, order.created_at
|
357
|
+
assert [TrueClass, FalseClass].include?(order.bid.class)
|
358
|
+
buys += 1 if ! order.bid
|
359
|
+
sells += 1 if order.bid
|
360
|
+
end
|
361
|
+
assert_equal 4, buys
|
362
|
+
assert_equal 5, sells
|
363
|
+
end
|
364
|
+
|
365
|
+
def test_map_jumps_clean
|
366
|
+
Reve::API.map_jumps_url = XML_BASE + 'mapjumps.xml'
|
367
|
+
mapjumps = nil
|
368
|
+
assert_nothing_raised do
|
369
|
+
mapjumps = @api.map_jumps
|
370
|
+
end
|
371
|
+
assert_not_nil @api.last_hash
|
372
|
+
assert_not_nil @api.cached_until
|
373
|
+
assert_equal 5, mapjumps.size
|
374
|
+
mapjumps.each do |jump|
|
375
|
+
assert_not_nil jump.system_id
|
376
|
+
assert_not_nil jump.jumps
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
def test_map_kills_clean
|
381
|
+
Reve::API.map_kills_url = XML_BASE + 'mapkills.xml'
|
382
|
+
mapkills = nil
|
383
|
+
assert_nothing_raised do
|
384
|
+
mapkills = @api.map_kills
|
385
|
+
end
|
386
|
+
assert_not_nil @api.last_hash
|
387
|
+
assert_not_nil @api.cached_until
|
388
|
+
assert_equal 4, mapkills.size
|
389
|
+
mapkills.each do |kill|
|
390
|
+
assert_not_nil kill.system_id
|
391
|
+
assert_not_nil kill.faction_kills
|
392
|
+
assert_not_nil kill.ship_kills
|
393
|
+
assert_not_nil kill.pod_kills
|
394
|
+
end
|
395
|
+
end
|
396
|
+
|
397
|
+
def test_skill_tree_clean
|
398
|
+
Reve::API.skill_tree_url = XML_BASE + 'skilltree.xml'
|
399
|
+
skilltrees = nil
|
400
|
+
assert_nothing_raised do
|
401
|
+
skilltrees = @api.skill_tree
|
402
|
+
end
|
403
|
+
assert_not_nil @api.last_hash
|
404
|
+
assert_not_nil @api.cached_until
|
405
|
+
assert_equal 2, skilltrees.size
|
406
|
+
skilltrees.each do |skill|
|
407
|
+
assert_not_nil skill.type_id
|
408
|
+
assert_not_nil skill.name
|
409
|
+
assert_not_nil skill.rank
|
410
|
+
assert_not_nil skill.description
|
411
|
+
skill.bonuses.each do |bonus|
|
412
|
+
assert_kind_of Reve::Classes::SkillBonus, bonus
|
413
|
+
end
|
414
|
+
skill.attribs.each do |attrib|
|
415
|
+
assert_kind_of Reve::Classes::RequiredAttribute, attrib
|
416
|
+
end
|
417
|
+
skill.required_skills.each do |req|
|
418
|
+
assert_kind_of Reve::Classes::SkillRequirement, req
|
419
|
+
end
|
420
|
+
end
|
421
|
+
end
|
422
|
+
|
423
|
+
def test_wallet_balance_clean
|
424
|
+
Reve::API.personal_wallet_balance_url = XML_BASE + 'wallet_balance.xml'
|
425
|
+
balance = nil
|
426
|
+
assert_nothing_raised do
|
427
|
+
balance = @api.personal_wallet_balance(:characterid => 1)
|
428
|
+
end
|
429
|
+
assert_not_nil @api.last_hash
|
430
|
+
assert_not_nil @api.cached_until
|
431
|
+
assert_equal 7, balance.size
|
432
|
+
balance.each do |bal|
|
433
|
+
assert_not_nil bal.account_id
|
434
|
+
assert_not_nil bal.account_key
|
435
|
+
assert_not_nil bal.balance
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
439
|
+
def test_wallet_transactions_clean
|
440
|
+
Reve::API.personal_wallet_trans_url = XML_BASE + 'market_transactions.xml'
|
441
|
+
trans = nil
|
442
|
+
assert_nothing_raised do
|
443
|
+
trans = @api.personal_wallet_transactions(:characterid => 1)
|
444
|
+
end
|
445
|
+
assert_not_nil @api.last_hash
|
446
|
+
assert_not_nil @api.cached_until
|
447
|
+
assert_instance_of Reve::Classes::PersonalWalletTransaction, trans.first
|
448
|
+
assert_equal 9, trans.size
|
449
|
+
trans.each do |t|
|
450
|
+
assert_not_nil t.created_at
|
451
|
+
assert_not_nil t.id
|
452
|
+
assert_not_nil t.quantity
|
453
|
+
assert_not_nil t.type_name
|
454
|
+
assert_not_nil t.type_id
|
455
|
+
assert_not_nil t.price
|
456
|
+
assert_not_nil t.client_name
|
457
|
+
assert_not_nil t.station_id
|
458
|
+
assert_not_nil t.station_name
|
459
|
+
assert_not_nil t.type
|
460
|
+
end
|
461
|
+
end
|
462
|
+
|
463
|
+
def test_wallet_journal_clean
|
464
|
+
Reve::API.personal_wallet_journal_url = XML_BASE + 'wallet_journal.xml'
|
465
|
+
journal = nil
|
466
|
+
assert_nothing_raised do
|
467
|
+
journal = @api.personal_wallet_journal(:characterid => 1)
|
468
|
+
end
|
469
|
+
assert_not_nil @api.last_hash
|
470
|
+
assert_not_nil @api.cached_until
|
471
|
+
assert_equal 8, journal.size
|
472
|
+
journal.each do |j|
|
473
|
+
assert_not_nil j.date
|
474
|
+
assert_not_nil j.ref_id
|
475
|
+
assert_not_nil j.reftype_id
|
476
|
+
assert_not_nil j.owner_name1
|
477
|
+
assert_not_nil j.owner_name2
|
478
|
+
assert_not_nil j.arg_name1
|
479
|
+
assert_not_nil j.amount
|
480
|
+
assert_not_nil j.balance
|
481
|
+
assert_not_nil j.reason
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
def test_member_tracking_clean
|
486
|
+
Reve::API.member_tracking_url = XML_BASE + 'member_tracking.xml'
|
487
|
+
members = nil
|
488
|
+
assert_nothing_raised do
|
489
|
+
members = @api.member_tracking(:characterid => 1)
|
490
|
+
end
|
491
|
+
assert_not_nil @api.last_hash
|
492
|
+
assert_not_nil @api.cached_until
|
493
|
+
assert_equal 2, members.size
|
494
|
+
members.each do |member|
|
495
|
+
assert_not_nil member.character_id
|
496
|
+
assert_not_nil member.character_name
|
497
|
+
assert_not_nil member.start_time
|
498
|
+
assert_not_nil member.base_id
|
499
|
+
assert_not_nil member.base
|
500
|
+
assert_not_nil member.title
|
501
|
+
assert_not_nil member.logon_time
|
502
|
+
assert_not_nil member.logoff_time
|
503
|
+
assert_not_nil member.location_id
|
504
|
+
assert_not_nil member.location
|
505
|
+
assert_not_nil member.ship_type_id
|
506
|
+
assert_not_nil member.ship_type
|
507
|
+
assert_not_nil member.roles
|
508
|
+
assert_not_nil member.grantable_roles
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
def test_member_corporation_sheet_clean
|
513
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'corporation_sheet.xml'
|
514
|
+
sheet = nil
|
515
|
+
assert_nothing_raised do
|
516
|
+
sheet = @api.corporation_sheet
|
517
|
+
end
|
518
|
+
assert_not_nil @api.last_hash
|
519
|
+
assert_not_nil @api.cached_until
|
520
|
+
assert_equal 7, sheet.divisions.size
|
521
|
+
assert_equal 7, sheet.wallet_divisions.size
|
522
|
+
end
|
523
|
+
|
524
|
+
def test_nonmember_corporation_sheet_clean
|
525
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'nonmember_corpsheet.xml'
|
526
|
+
sheet = nil
|
527
|
+
assert_nothing_raised do
|
528
|
+
sheet = @api.corporation_sheet :corporationid => 134300597
|
529
|
+
end
|
530
|
+
assert_not_nil @api.last_hash
|
531
|
+
assert_not_nil @api.cached_until
|
532
|
+
assert_equal 0, sheet.divisions.size
|
533
|
+
assert_equal 0, sheet.wallet_divisions.size
|
534
|
+
end
|
535
|
+
|
536
|
+
def test_no_skill_in_training_clean
|
537
|
+
# Reve::API.training_skill_url = XML_BASE + 'skill_in_training-none.xml'
|
538
|
+
skill = nil
|
539
|
+
assert_nothing_raised do
|
540
|
+
skill = @api.skill_in_training(:characterid => 1, :url => XML_BASE + 'skill_in_training-none.xml')
|
541
|
+
end
|
542
|
+
assert_not_nil @api.last_hash
|
543
|
+
assert_not_nil @api.cached_until
|
544
|
+
assert_equal false, skill.skill_in_training
|
545
|
+
end
|
546
|
+
|
547
|
+
def test_no_skill_in_training_clean_from_svn
|
548
|
+
skill = nil
|
549
|
+
assert_nothing_raised do
|
550
|
+
skill = @api.skill_in_training(:characterid => 123, :url => URI.parse('http://svn.crudvision.com/reve/trunk/test/xml/skill_in_training-none.xml'))
|
551
|
+
end
|
552
|
+
assert_not_nil @api.last_hash
|
553
|
+
assert_not_nil @api.cached_until
|
554
|
+
assert_equal false, skill.skill_in_training
|
555
|
+
end
|
556
|
+
|
557
|
+
def test_amarr_titan_skill_in_training_clean
|
558
|
+
Reve::API.training_skill_url = XML_BASE + 'skill_in_training-amarr-titan.xml'
|
559
|
+
skill = nil
|
560
|
+
assert_nothing_raised do
|
561
|
+
skill = @api.skill_in_training(:characerid => 1)
|
562
|
+
end
|
563
|
+
assert_not_nil @api.last_hash
|
564
|
+
assert_not_nil @api.cached_until
|
565
|
+
assert skill.skill_in_training
|
566
|
+
assert_not_nil skill.start_time
|
567
|
+
assert_not_nil skill.type_id
|
568
|
+
assert_not_nil skill.end_time
|
569
|
+
assert_not_nil skill.to_level
|
570
|
+
assert_not_nil skill.start_sp
|
571
|
+
assert_not_nil skill.end_sp
|
572
|
+
end
|
573
|
+
|
574
|
+
def test_character_sheet_clean
|
575
|
+
Reve::API.character_sheet_url = XML_BASE + 'character_sheet.xml'
|
576
|
+
sheet = nil
|
577
|
+
assert_nothing_raised do
|
578
|
+
sheet = @api.character_sheet(:characterid => 1)
|
579
|
+
end
|
580
|
+
assert_not_nil @api.last_hash
|
581
|
+
assert_not_nil @api.cached_until
|
582
|
+
|
583
|
+
assert_not_nil sheet.name
|
584
|
+
assert_not_nil sheet.race
|
585
|
+
assert_not_nil sheet.bloodline
|
586
|
+
assert_not_nil sheet.gender
|
587
|
+
assert_not_nil sheet.id
|
588
|
+
assert_not_nil sheet.corporation_name
|
589
|
+
assert_not_nil sheet.corporation_id
|
590
|
+
assert_not_nil sheet.balance
|
591
|
+
|
592
|
+
assert_not_nil sheet.intelligence
|
593
|
+
assert_not_nil sheet.memory
|
594
|
+
assert_not_nil sheet.charisma
|
595
|
+
assert_not_nil sheet.perception
|
596
|
+
assert_not_nil sheet.willpower
|
597
|
+
|
598
|
+
assert_equal 2, sheet.enhancers.size
|
599
|
+
sheet.enhancers.each do |enhancer|
|
600
|
+
assert_kind_of Reve::Classes::AttributeEnhancer, enhancer
|
601
|
+
end
|
602
|
+
|
603
|
+
sheet.skills.each do |skill|
|
604
|
+
assert_kind_of Reve::Classes::Skill, skill
|
605
|
+
end
|
606
|
+
end
|
607
|
+
|
608
|
+
# Can we reassign a URL?
|
609
|
+
def test_assignment
|
610
|
+
assert_nothing_raised do
|
611
|
+
Reve::API.character_sheet_url = "hello"
|
612
|
+
end
|
613
|
+
end
|
614
|
+
|
615
|
+
# Laziness pays off I hope
|
616
|
+
def test_all_raise_errors
|
617
|
+
Dir.glob(File.join(XML_BASE,'errors','*.xml')).each do |file|
|
618
|
+
# Using begin/rescue/assert here because assert_raise doesn't work with.
|
619
|
+
# the exception superclass.
|
620
|
+
begin
|
621
|
+
@api.send(:check_exception,(File.open(file).read))
|
622
|
+
rescue Exception => e
|
623
|
+
assert e.kind_of?(Reve::Exceptions::ReveError)
|
624
|
+
end
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
628
|
+
def test_get_xml_from_filesystem
|
629
|
+
xmldoc = @api.send(:get_xml, File.join(XML_BASE, 'skill_in_training-none.xml'), {} )
|
630
|
+
assert_equal File.open(File.join(XML_BASE, 'skill_in_training-none.xml')).read, xmldoc
|
631
|
+
end
|
632
|
+
|
633
|
+
def test_get_xml_from_web
|
634
|
+
xmldoc = @api.send(:get_xml, 'http://svn.crudvision.com/reve/trunk/test/xml/skill_in_training-none.xml', {} )
|
635
|
+
assert_equal File.open(File.join(XML_BASE, 'skill_in_training-none.xml')).read, xmldoc
|
636
|
+
end
|
637
|
+
|
638
|
+
def test_get_xml_from_filesystem_missing_file
|
639
|
+
assert_raise Errno::ENOENT do
|
640
|
+
xmldoc = @api.send(:get_xml, File.join(XML_BASE,rand.to_s), {} )
|
641
|
+
end
|
642
|
+
end
|
643
|
+
|
644
|
+
# if this starts to fail make sure the 404 ErrorDocument includes '404 Not Found'
|
645
|
+
def test_get_xml_from_web_missing_file
|
646
|
+
begin
|
647
|
+
xmldoc = @api.send(:get_xml, 'http://svn.crudvision.com/reve/trunk/test/' + rand.to_s, {} )
|
648
|
+
rescue Exception => e
|
649
|
+
assert e.kind_of?(Reve::Exceptions::ReveNetworkStatusException)
|
650
|
+
assert e.message.include?('404 Not Found')
|
651
|
+
end
|
652
|
+
end
|
653
|
+
|
654
|
+
def test_format_url_request_one_arg
|
655
|
+
req = @api.send(:format_url_request, { :a => "Hello" })
|
656
|
+
assert_equal "?a=Hello", req
|
657
|
+
end
|
658
|
+
|
659
|
+
def test_format_url_request_two_args
|
660
|
+
req = @api.send(:format_url_request, { :a => "Hello", :world => "b" })
|
661
|
+
assert_equal "?a=Hello&world=b", req
|
662
|
+
end
|
663
|
+
|
664
|
+
def test_format_url_request_nil_value
|
665
|
+
req = @api.send(:format_url_request, { :a => "Hello", :world => nil })
|
666
|
+
assert_equal "?a=Hello", req
|
667
|
+
end
|
668
|
+
|
669
|
+
# make sure we can make a Time object
|
670
|
+
def test_to_time_method
|
671
|
+
str = "2008-01-23 10:32:20"
|
672
|
+
real = Time.utc(2008,01,23,10,32,20)
|
673
|
+
time = nil
|
674
|
+
assert_nothing_raised do
|
675
|
+
time = str.to_time
|
676
|
+
end
|
677
|
+
assert_kind_of Time,time
|
678
|
+
assert_equal real,time
|
679
|
+
end
|
680
|
+
|
681
|
+
def test_to_date_method
|
682
|
+
str = "2008-01-23"
|
683
|
+
real = Date.civil(2008,01,23)
|
684
|
+
date = nil
|
685
|
+
assert_nothing_raised do
|
686
|
+
date = str.to_date
|
687
|
+
end
|
688
|
+
assert_kind_of Date,date
|
689
|
+
assert_equal real,date
|
690
|
+
end
|
691
|
+
|
692
|
+
|
693
|
+
protected
|
694
|
+
def get_api(userid = nil, apikey = nil, charid = nil)
|
695
|
+
api = Reve::API.new(userid, apikey, charid)
|
696
|
+
api.save_path = nil
|
697
|
+
api
|
698
|
+
end
|
699
|
+
|
700
|
+
end
|