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.
Files changed (100) hide show
  1. data/ChangeLog +155 -0
  2. data/Rakefile +43 -0
  3. data/init.rb +1 -0
  4. data/lib/reve.rb +793 -0
  5. data/reve.rb +1 -0
  6. data/test/test_reve.rb +700 -0
  7. data/test/xml/alliances.xml +171 -0
  8. data/test/xml/assets.xml +32 -0
  9. data/test/xml/badxml.xml +6 -0
  10. data/test/xml/character_sheet.xml +37 -0
  11. data/test/xml/characterid.xml +11 -0
  12. data/test/xml/charactername.xml +11 -0
  13. data/test/xml/characters.xml +13 -0
  14. data/test/xml/conqurable_stations.xml +11 -0
  15. data/test/xml/corporation_sheet.xml +52 -0
  16. data/test/xml/errors/error_100.xml +5 -0
  17. data/test/xml/errors/error_101.xml +5 -0
  18. data/test/xml/errors/error_102.xml +5 -0
  19. data/test/xml/errors/error_103.xml +5 -0
  20. data/test/xml/errors/error_104.xml +5 -0
  21. data/test/xml/errors/error_105.xml +5 -0
  22. data/test/xml/errors/error_106.xml +5 -0
  23. data/test/xml/errors/error_107.xml +5 -0
  24. data/test/xml/errors/error_108.xml +5 -0
  25. data/test/xml/errors/error_109.xml +5 -0
  26. data/test/xml/errors/error_110.xml +5 -0
  27. data/test/xml/errors/error_111.xml +5 -0
  28. data/test/xml/errors/error_112.xml +5 -0
  29. data/test/xml/errors/error_113.xml +5 -0
  30. data/test/xml/errors/error_114.xml +5 -0
  31. data/test/xml/errors/error_115.xml +5 -0
  32. data/test/xml/errors/error_116.xml +5 -0
  33. data/test/xml/errors/error_117.xml +5 -0
  34. data/test/xml/errors/error_118.xml +5 -0
  35. data/test/xml/errors/error_119.xml +5 -0
  36. data/test/xml/errors/error_120.xml +5 -0
  37. data/test/xml/errors/error_121.xml +5 -0
  38. data/test/xml/errors/error_200.xml +5 -0
  39. data/test/xml/errors/error_201.xml +5 -0
  40. data/test/xml/errors/error_202.xml +5 -0
  41. data/test/xml/errors/error_203.xml +5 -0
  42. data/test/xml/errors/error_204.xml +5 -0
  43. data/test/xml/errors/error_205.xml +5 -0
  44. data/test/xml/errors/error_206.xml +5 -0
  45. data/test/xml/errors/error_207.xml +5 -0
  46. data/test/xml/errors/error_208.xml +5 -0
  47. data/test/xml/errors/error_209.xml +5 -0
  48. data/test/xml/errors/error_210.xml +5 -0
  49. data/test/xml/errors/error_211.xml +5 -0
  50. data/test/xml/errors/error_212.xml +5 -0
  51. data/test/xml/errors/error_213.xml +5 -0
  52. data/test/xml/errors/error_214.xml +5 -0
  53. data/test/xml/errors/error_500.xml +5 -0
  54. data/test/xml/errors/error_501.xml +5 -0
  55. data/test/xml/errors/error_502.xml +5 -0
  56. data/test/xml/errors/error_503.xml +5 -0
  57. data/test/xml/errors/error_504.xml +5 -0
  58. data/test/xml/errors/error_505.xml +5 -0
  59. data/test/xml/errors/error_506.xml +5 -0
  60. data/test/xml/errors/error_507.xml +5 -0
  61. data/test/xml/errors/error_508.xml +5 -0
  62. data/test/xml/errors/error_509.xml +5 -0
  63. data/test/xml/errors/error_510.xml +5 -0
  64. data/test/xml/errors/error_511.xml +5 -0
  65. data/test/xml/errors/error_512.xml +5 -0
  66. data/test/xml/errors/error_513.xml +5 -0
  67. data/test/xml/errors/error_514.xml +5 -0
  68. data/test/xml/errors/error_515.xml +5 -0
  69. data/test/xml/errors/error_516.xml +5 -0
  70. data/test/xml/errors/error_517.xml +5 -0
  71. data/test/xml/errors/error_518.xml +5 -0
  72. data/test/xml/errors/error_519.xml +5 -0
  73. data/test/xml/errors/error_520.xml +5 -0
  74. data/test/xml/errors/error_521.xml +5 -0
  75. data/test/xml/errors/error_522.xml +5 -0
  76. data/test/xml/errors/error_523.xml +5 -0
  77. data/test/xml/errors/error_900.xml +5 -0
  78. data/test/xml/errors/error_901.xml +5 -0
  79. data/test/xml/errors/error_902.xml +5 -0
  80. data/test/xml/errors/error_903.xml +5 -0
  81. data/test/xml/errors/error_999.xml +5 -0
  82. data/test/xml/industryjobs.xml +11 -0
  83. data/test/xml/kills.xml +163 -0
  84. data/test/xml/mapjumps.xml +15 -0
  85. data/test/xml/mapkills.xml +16 -0
  86. data/test/xml/market_transactions.xml +79 -0
  87. data/test/xml/marketorders.xml +37 -0
  88. data/test/xml/member_tracking.xml +22 -0
  89. data/test/xml/nonmember_corpsheet.xml +30 -0
  90. data/test/xml/reftypes.xml +14 -0
  91. data/test/xml/skill_in_training-amarr-titan.xml +13 -0
  92. data/test/xml/skill_in_training-none.xml +7 -0
  93. data/test/xml/skilltree.xml +40 -0
  94. data/test/xml/sovereignty.xml +29 -0
  95. data/test/xml/starbase_fuel.xml +23 -0
  96. data/test/xml/starbases.xml +12 -0
  97. data/test/xml/wallet_balance.xml +17 -0
  98. data/test/xml/wallet_journal.xml +48 -0
  99. data/tester.rb +17 -0
  100. 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