dsander-reve 0.0.116
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/LICENSE +22 -0
- data/Rakefile +79 -0
- data/init.rb +1 -0
- data/lib/reve/classes.rb +1341 -0
- data/lib/reve/exceptions.rb +353 -0
- data/lib/reve/extensions.rb +108 -0
- data/lib/reve.rb +1001 -0
- data/reve.rb +1 -0
- data/test/test_reve.rb +1191 -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/certificate_tree.xml +231 -0
- data/test/xml/char_facwarstats.xml +18 -0
- data/test/xml/char_medals.xml +12 -0
- data/test/xml/character_sheet.xml +288 -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 +12 -0
- data/test/xml/corp_facwarstats.xml +17 -0
- data/test/xml/corp_medals.xml +23 -0
- data/test/xml/corp_member_medals.xml +20 -0
- data/test/xml/corp_membersecurity.xml +49 -0
- data/test/xml/corporate_assets_list.xml +16 -0
- data/test/xml/corporate_market_orders.xml +10 -0
- data/test/xml/corporate_wallet_balance.xml +16 -0
- data/test/xml/corporate_wallet_journal.xml +11 -0
- data/test/xml/corporate_wallet_transactions.xml +10 -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_122.xml +5 -0
- data/test/xml/errors/error_123.xml +5 -0
- data/test/xml/errors/error_124.xml +5 -0
- data/test/xml/errors/error_125.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_524.xml +5 -0
- data/test/xml/errors/error_525.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/errors.xml +70 -0
- data/test/xml/eve_facwarstats.xml +35 -0
- data/test/xml/eve_facwartopstats.xml +178 -0
- data/test/xml/industryjobs.xml +11 -0
- data/test/xml/kills.xml +569 -0
- data/test/xml/map_facwarsystems.xml +13 -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 +43 -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/server_status.xml +9 -0
- data/test/xml/skill_in_training-amarr-titan.xml +15 -0
- data/test/xml/skill_in_training-none.xml +7 -0
- data/test/xml/skill_queue.xml +18 -0
- data/test/xml/skilltree.xml +41 -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 +187 -0
data/test/test_reve.rb
ADDED
|
@@ -0,0 +1,1191 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require '../lib/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_charid_default_works_when_characterid_is_nil
|
|
56
|
+
# this line of code is wrong on so many levels.
|
|
57
|
+
assert_equal("CharID", Reve::API.new('uid','key','CharID').send(:postfields,{})['characterid'])
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_makes_a_complex_hash
|
|
61
|
+
Reve::API.corporate_wallet_trans_url = XML_BASE + 'market_transactions.xml'
|
|
62
|
+
@api.userid = 999
|
|
63
|
+
@api.key = 'aaa'
|
|
64
|
+
h = @api.corporate_wallet_transactions :accountkey => '1001', :characterid => 123, :beforerefid => 456, :just_hash => true
|
|
65
|
+
assert_instance_of String, h
|
|
66
|
+
assert_equal 'xml/market_transactions.xml:accountkey:1001:apikey:aaa:beforerefid:456:characterid:123:userid:999',h
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_bad_xml
|
|
70
|
+
Reve::API.training_skill_url = XML_BASE + 'badxml.xml'
|
|
71
|
+
skill = @api.skill_in_training
|
|
72
|
+
assert_not_nil @api.last_hash
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_saving_xml_works
|
|
76
|
+
@api.save_path = SAVE_PATH
|
|
77
|
+
alliances = @api.alliances :url => File.join(XML_BASE,'alliances.xml')
|
|
78
|
+
assert File.exists?(File.join(SAVE_PATH,'alliances',@api.cached_until.to_i.to_s + '.xml'))
|
|
79
|
+
assert_equal(
|
|
80
|
+
File.open(File.join(XML_BASE,'alliances.xml')).read,
|
|
81
|
+
File.open(File.join(SAVE_PATH,'alliances',@api.cached_until.to_i.to_s + '.xml')).read)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_saving_xml_when_save_path_is_nil
|
|
85
|
+
assert_nil @api.save_path
|
|
86
|
+
alliances = @api.alliances :url => File.join(XML_BASE,'alliances.xml')
|
|
87
|
+
assert ! File.exists?(File.join(SAVE_PATH,'alliances',@api.cached_until.to_i.to_s + '.xml'))
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# We want to see <url /> in the saved XML because that's what came from the source
|
|
91
|
+
def test_saving_xml_with_bad_short_tag
|
|
92
|
+
@api.save_path = SAVE_PATH
|
|
93
|
+
@corpsheet = @api.corporation_sheet :url => File.join(XML_BASE,'corporation_sheet.xml')
|
|
94
|
+
assert_equal "", @corpsheet.url
|
|
95
|
+
assert File.open(File.join(SAVE_PATH,'corporation_sheet',@api.cached_until.to_i.to_s + '.xml')).read.include?("<url />")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_saving_xml_when_404
|
|
99
|
+
@api.save_path = SAVE_PATH
|
|
100
|
+
alliances = nil
|
|
101
|
+
assert_raise Errno::ENOENT do
|
|
102
|
+
alliances = @api.alliances :url => File.join(XML_BASE,rand.to_s)
|
|
103
|
+
end
|
|
104
|
+
assert_nil @api.cached_until
|
|
105
|
+
assert_equal 0, Dir.glob(File.join(SAVE_PATH,'alliances','*.xml')).size # no XML saved
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# File.split exists and File is not a String or URI class as permitted in Reve::API#get_xml.
|
|
109
|
+
# This means as a parameter it will pass through Reve::API#compute_hash method and
|
|
110
|
+
# get to Reve::API#get_xml
|
|
111
|
+
def test_for_bad_uri_passed_to_method
|
|
112
|
+
assert_raise Reve::Exceptions::ReveNetworkStatusException do
|
|
113
|
+
@api.character_sheet :url => File
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_check_exception_with_bad_xml_document
|
|
118
|
+
assert_raise ArgumentError do
|
|
119
|
+
@api.send(:check_exception,nil)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def test_errors_api_call
|
|
124
|
+
errors = nil
|
|
125
|
+
assert_nothing_raised do
|
|
126
|
+
errors = @api.errors :url => File.join(XML_BASE,'errors.xml')
|
|
127
|
+
end
|
|
128
|
+
assert errors.all? { |e| e.kind_of?(Reve::Classes::APIError) }
|
|
129
|
+
assert_equal 61, errors.size # 61 errors in total
|
|
130
|
+
errors.each do |error|
|
|
131
|
+
assert_not_nil(error.code)
|
|
132
|
+
assert_not_nil(error.text)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def test_corporation_sheet_clean
|
|
137
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'corporation_sheet.xml'
|
|
138
|
+
corporation = nil
|
|
139
|
+
assert_nothing_raised do
|
|
140
|
+
corporation = @api.corporation_sheet :characterid => 123
|
|
141
|
+
end
|
|
142
|
+
assert_not_nil @api.last_hash
|
|
143
|
+
assert_kind_of Time, @api.cached_until
|
|
144
|
+
assert_equal 150212025, corporation.id
|
|
145
|
+
assert_equal "Banana Republic", corporation.name
|
|
146
|
+
assert_equal "BR", corporation.ticker
|
|
147
|
+
assert_equal(150208955, corporation.ceo_id)
|
|
148
|
+
assert_equal("Mark Roled", corporation.ceo_name)
|
|
149
|
+
assert_equal(60003469, corporation.station_id)
|
|
150
|
+
assert_equal("Jita IV - Caldari Business Tribunal Information Center", corporation.station_name)
|
|
151
|
+
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
|
|
152
|
+
assert_equal("", corporation.url)
|
|
153
|
+
assert_equal(150430947, corporation.alliance_id)
|
|
154
|
+
assert_equal("The Dead Rabbits", corporation.alliance_name)
|
|
155
|
+
assert_equal 93.7, corporation.tax_rate
|
|
156
|
+
assert_equal(3, corporation.member_count)
|
|
157
|
+
assert_equal(6300, corporation.member_limit)
|
|
158
|
+
assert_equal(1, corporation.shares)
|
|
159
|
+
assert_equal "DIVISION", corporation.divisions.select { |d| d.key == 1003 }.first.description
|
|
160
|
+
corporation.divisions.each do |d|
|
|
161
|
+
assert_not_nil(d.key)
|
|
162
|
+
assert_not_nil(d.description)
|
|
163
|
+
end
|
|
164
|
+
assert_equal "Master Wallet", corporation.wallet_divisions.select { |d| d.key == 1000 }.first.description
|
|
165
|
+
corporation.wallet_divisions.each do |wd|
|
|
166
|
+
assert_not_nil(wd.key)
|
|
167
|
+
assert_not_nil(wd.description)
|
|
168
|
+
end
|
|
169
|
+
assert_equal 0, corporation.logo.graphic_id
|
|
170
|
+
assert_equal 681, corporation.logo.color_1
|
|
171
|
+
assert_equal 676, corporation.logo.color_2
|
|
172
|
+
assert_equal 448, corporation.logo.shape_1
|
|
173
|
+
assert_equal 418, corporation.logo.shape_3
|
|
174
|
+
assert_equal 0, corporation.logo.color_3
|
|
175
|
+
assert_equal 0, corporation.logo.shape_2
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def test_conqurable_stations_clean
|
|
179
|
+
Reve::API.conqurable_outposts_url = XML_BASE + 'conqurable_stations.xml'
|
|
180
|
+
stations = nil
|
|
181
|
+
assert_nothing_raised do
|
|
182
|
+
stations = @api.conqurable_stations
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
assert_equal 3, stations.size
|
|
186
|
+
assert_not_nil @api.last_hash
|
|
187
|
+
assert_kind_of Time, @api.cached_until
|
|
188
|
+
|
|
189
|
+
stations.each do |station|
|
|
190
|
+
assert_not_nil station.id
|
|
191
|
+
assert_not_nil station.name
|
|
192
|
+
assert_not_nil station.type_id
|
|
193
|
+
assert_not_nil station.system_id
|
|
194
|
+
assert_not_nil station.corporation_id
|
|
195
|
+
assert_not_nil station.corporation_name
|
|
196
|
+
assert_not_nil station.system_id
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def test_convert_characterids_to_names
|
|
201
|
+
ids = [ 797400947,892008733 ] # CCP Garthagk, Raquel Smith
|
|
202
|
+
names = []
|
|
203
|
+
assert_nothing_raised do
|
|
204
|
+
names = @api.character_name :url => XML_BASE + 'charactername.xml', :ids => ids
|
|
205
|
+
end
|
|
206
|
+
assert_equal 2, names.size
|
|
207
|
+
names.each do |name|
|
|
208
|
+
assert_not_nil(name.name)
|
|
209
|
+
assert_not_nil(name.id)
|
|
210
|
+
end
|
|
211
|
+
actual_names = names.collect { |n| n.name }
|
|
212
|
+
assert actual_names.include?('CCP Garthagk')
|
|
213
|
+
assert actual_names.include?('Raquel Smith')
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def test_convert_characternames_to_ids
|
|
217
|
+
names = [ 'CCP Garthagk', 'Raquel Smith' ] # 797400947,892008733
|
|
218
|
+
ids = []
|
|
219
|
+
assert_nothing_raised do
|
|
220
|
+
ids = @api.names_to_ids :url => XML_BASE + 'characterid.xml', :names => names
|
|
221
|
+
end
|
|
222
|
+
assert_equal 2, ids.size
|
|
223
|
+
ids.each do |id|
|
|
224
|
+
assert_not_nil(id.id)
|
|
225
|
+
assert_not_nil(id.name)
|
|
226
|
+
end
|
|
227
|
+
actual_ids = ids.collect { |n| n.id }
|
|
228
|
+
assert actual_ids.include?(797400947)
|
|
229
|
+
assert actual_ids.include?(892008733)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def test_personal_industry_jobs_clean
|
|
233
|
+
Reve::API.personal_industry_jobs_url = XML_BASE + 'industryjobs.xml'
|
|
234
|
+
jobs = nil
|
|
235
|
+
assert_nothing_raised do
|
|
236
|
+
jobs = @api.personal_industry_jobs
|
|
237
|
+
end
|
|
238
|
+
assert_equal 2, jobs.size
|
|
239
|
+
# All things got assigned something.
|
|
240
|
+
jobs.each do |job|
|
|
241
|
+
[ :id, :assembly_line_id, :container_id, :installed_item_id, :installed_item_location_id,
|
|
242
|
+
:installed_item_quantity, :installed_item_productivity_level, :installed_item_material_level,
|
|
243
|
+
:installed_item_licensed_production_runs_remaining, :output_location_id, :installer_id, :runs,
|
|
244
|
+
:licensed_production_runs, :installed_system_id, :container_location_id, :material_multiplier,
|
|
245
|
+
:char_material_multiplier, :time_multiplier, :char_time_multiplier, :installed_item_type_id,
|
|
246
|
+
:output_type_id, :container_type_id, :installed_item_copy, :completed, :completed_successfully,
|
|
247
|
+
:installed_item_flag, :output_flag, :activity_id, :completed_status, :installed_at,
|
|
248
|
+
:begin_production_at, :end_production_at, :pause_production_time ].each do |att|
|
|
249
|
+
assert_not_nil job.send(att)
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def test_corporate_industry_jobs_clean
|
|
255
|
+
Reve::API.corporate_industry_jobs_url = XML_BASE + 'industryjobs.xml'
|
|
256
|
+
jobs = nil
|
|
257
|
+
assert_nothing_raised do
|
|
258
|
+
jobs = @api.corporate_industry_jobs
|
|
259
|
+
end
|
|
260
|
+
assert_equal 2, jobs.size
|
|
261
|
+
# All things got assigned something.
|
|
262
|
+
jobs.each do |job|
|
|
263
|
+
[ :id, :assembly_line_id, :container_id, :installed_item_id, :installed_item_location_id,
|
|
264
|
+
:installed_item_quantity, :installed_item_productivity_level, :installed_item_material_level,
|
|
265
|
+
:installed_item_licensed_production_runs_remaining, :output_location_id, :installer_id, :runs,
|
|
266
|
+
:licensed_production_runs, :installed_system_id, :container_location_id, :material_multiplier,
|
|
267
|
+
:char_material_multiplier, :time_multiplier, :char_time_multiplier, :installed_item_type_id,
|
|
268
|
+
:output_type_id, :container_type_id, :installed_item_copy, :completed, :completed_successfully,
|
|
269
|
+
:installed_item_flag, :output_flag, :activity_id, :completed_status, :installed_at,
|
|
270
|
+
:begin_production_at, :end_production_at, :pause_production_time ].each do |att|
|
|
271
|
+
assert_not_nil job.send(att)
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def test_faction_war_system_stats_clean(skip_preamble = false,stats = nil)
|
|
277
|
+
Reve::API.faction_war_occupancy_url = XML_BASE + 'map_facwarsystems.xml'
|
|
278
|
+
unless skip_preamble # not best practice but will get the job done!
|
|
279
|
+
stats = nil
|
|
280
|
+
assert_nothing_raised do
|
|
281
|
+
stats = @api.faction_war_system_stats
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
assert stats.all? { |s| s.kind_of?(Reve::Classes::FactionWarSystemStatus) }
|
|
285
|
+
assert_equal(4, stats.size)
|
|
286
|
+
stats.each do |sys|
|
|
287
|
+
# can't assert_not_nil faction_id or faction_name since they may be nil
|
|
288
|
+
assert_not_nil(sys.system_id)
|
|
289
|
+
assert_not_nil(sys.system_name)
|
|
290
|
+
assert_not_nil(sys.contested)
|
|
291
|
+
end
|
|
292
|
+
assert_equal(1, stats.select { |s| s.faction_id == 500001 }.size)
|
|
293
|
+
assert_equal(1, stats.select { |s| s.faction_id == 500002 }.size)
|
|
294
|
+
assert_equal(1, stats.select { |s| ! s.contested }.size)
|
|
295
|
+
assert_equal(2, stats.select { |s| s.faction_id.nil? }.size)
|
|
296
|
+
assert_equal(3, stats.select { |s| s.contested }.size)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def test_faction_war_system_stats_alias_clean
|
|
300
|
+
Reve::API.faction_war_occupancy_url = XML_BASE + 'map_facwarsystems.xml'
|
|
301
|
+
stats = nil
|
|
302
|
+
assert_nothing_raised do
|
|
303
|
+
stats = @api.faction_war_occupancy
|
|
304
|
+
end
|
|
305
|
+
test_faction_war_system_stats_clean(true,stats)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def test_faction_war_stats_clean
|
|
309
|
+
Reve::API.general_faction_war_stats_url = XML_BASE + 'eve_facwarstats.xml'
|
|
310
|
+
stats = nil
|
|
311
|
+
assert_nothing_raised do
|
|
312
|
+
stats = @api.faction_war_stats
|
|
313
|
+
end
|
|
314
|
+
assert_instance_of(Reve::Classes::EveFactionWarStat, stats)
|
|
315
|
+
assert_equal(1707, stats.kills_yesterday)
|
|
316
|
+
assert_equal(9737, stats.kills_last_week)
|
|
317
|
+
assert_equal(27866, stats.kills_total)
|
|
318
|
+
assert_equal(215674, stats.victory_points_yesterday)
|
|
319
|
+
assert_equal(1738351, stats.victory_points_last_week)
|
|
320
|
+
assert_equal(5613787, stats.victory_points_total)
|
|
321
|
+
|
|
322
|
+
assert stats.faction_wars.all? { |w| w.kind_of?(Reve::Classes::FactionWar) }
|
|
323
|
+
assert stats.faction_participants.all? { |w| w.kind_of?(Reve::Classes::FactionwideFactionWarParticpant) }
|
|
324
|
+
assert_equal(8, stats.faction_wars.size)
|
|
325
|
+
assert_equal(4, stats.faction_participants.size)
|
|
326
|
+
stats.faction_wars.each do |war|
|
|
327
|
+
assert_not_nil(war.faction_id)
|
|
328
|
+
assert_not_nil(war.faction_name)
|
|
329
|
+
assert_not_nil(war.against_id)
|
|
330
|
+
assert_not_nil(war.against_name)
|
|
331
|
+
end
|
|
332
|
+
stats.faction_participants.each do |participant|
|
|
333
|
+
assert_not_nil(participant.faction_id)
|
|
334
|
+
assert_not_nil(participant.faction_name)
|
|
335
|
+
assert_not_nil(participant.systems_controlled)
|
|
336
|
+
assert_not_nil(participant.kills_yesterday)
|
|
337
|
+
assert_not_nil(participant.kills_last_week)
|
|
338
|
+
assert_not_nil(participant.kills_total)
|
|
339
|
+
assert_not_nil(participant.victory_points_yesterday)
|
|
340
|
+
assert_not_nil(participant.victory_points_last_week)
|
|
341
|
+
assert_not_nil(participant.victory_points_total)
|
|
342
|
+
end
|
|
343
|
+
assert_not_nil(@api.cached_until)
|
|
344
|
+
end
|
|
345
|
+
def test_personal_factional_war_stats_clean
|
|
346
|
+
Reve::API.personal_faction_war_stats_url = XML_BASE + 'char_facwarstats.xml'
|
|
347
|
+
stats = nil
|
|
348
|
+
assert_nothing_raised do
|
|
349
|
+
stats = @api.personal_faction_war_stats
|
|
350
|
+
end
|
|
351
|
+
assert_instance_of Reve::Classes::PersonalFactionWarParticpant, stats
|
|
352
|
+
assert_equal(500001, stats.faction_id)
|
|
353
|
+
assert_equal("Caldari State", stats.faction_name)
|
|
354
|
+
assert_equal("2008-06-13 20:38:00".to_time, stats.enlisted_at)
|
|
355
|
+
assert_equal(1, stats.current_rank)
|
|
356
|
+
assert_equal(2, stats.highest_rank)
|
|
357
|
+
assert_equal(3, stats.kills_yesterday)
|
|
358
|
+
assert_equal(4, stats.kills_last_week)
|
|
359
|
+
assert_equal(5, stats.kills_total)
|
|
360
|
+
assert_equal(124, stats.victory_points_yesterday)
|
|
361
|
+
assert_equal(124, stats.victory_points_last_week)
|
|
362
|
+
assert_equal(506, stats.victory_points_total)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def test_corporate_factional_war_stats_clean
|
|
366
|
+
Reve::API.corporate_faction_war_stats_url = XML_BASE + 'corp_facwarstats.xml'
|
|
367
|
+
stats = nil
|
|
368
|
+
assert_nothing_raised do
|
|
369
|
+
stats = @api.corporate_faction_war_stats
|
|
370
|
+
end
|
|
371
|
+
assert_instance_of Reve::Classes::CorporateFactionWarParticpant, stats
|
|
372
|
+
assert_equal(500001, stats.faction_id)
|
|
373
|
+
assert_equal("Caldari State", stats.faction_name)
|
|
374
|
+
assert_equal("2008-06-10 22:10:00".to_time, stats.enlisted_at)
|
|
375
|
+
assert_equal(4, stats.pilots)
|
|
376
|
+
assert_equal(3, stats.kills_yesterday)
|
|
377
|
+
assert_equal(4, stats.kills_last_week)
|
|
378
|
+
assert_equal(5, stats.kills_total)
|
|
379
|
+
assert_equal(124, stats.victory_points_yesterday)
|
|
380
|
+
assert_equal(906, stats.victory_points_last_week)
|
|
381
|
+
assert_equal(2690, stats.victory_points_total)
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
def test_faction_war_top_stats_clean
|
|
385
|
+
Reve::API.top_faction_war_stats_url = XML_BASE + 'eve_facwartopstats.xml'
|
|
386
|
+
stats = nil
|
|
387
|
+
assert_nothing_raised do
|
|
388
|
+
stats = @api.faction_war_top_stats
|
|
389
|
+
end
|
|
390
|
+
assert_kind_of(Reve::Classes::FactionWarTopStats, stats)
|
|
391
|
+
[ :characters, :corporations, :factions ].each do |kind|
|
|
392
|
+
[ :yesterday_kills, :last_week_kills, :total_kills ].each do |attr|
|
|
393
|
+
assert_kind_of(Hash, stats.send(kind))
|
|
394
|
+
assert_kind_of(Array, stats.send(kind)[attr])
|
|
395
|
+
assert ! stats.send(kind)[attr].empty?
|
|
396
|
+
[ :name, :id, :kills ].each do |c_attr|
|
|
397
|
+
assert stats.send(kind)[attr].all? { |e| ! e.nil? }
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
[ :last_week_victory_points, :yesterday_victory_points, :total_victory_points ].each do |attr|
|
|
401
|
+
assert_kind_of(Hash, stats.send(kind))
|
|
402
|
+
assert_kind_of(Array, stats.send(kind)[attr])
|
|
403
|
+
assert ! stats.send(kind)[attr].empty?
|
|
404
|
+
[ :name, :id, :victory_points ].each do |c_attr|
|
|
405
|
+
assert stats.send(kind)[attr].all? { |e| ! e.nil? }
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
assert_equal(5, stats.characters[:yesterday_kills].size)
|
|
410
|
+
assert_equal(6, stats.characters[:last_week_kills].size)
|
|
411
|
+
assert_equal(7, stats.characters[:total_kills].size)
|
|
412
|
+
[ :yesterday_kills, :yesterday_victory_points, :last_week_kills,
|
|
413
|
+
:last_week_victory_points, :total_kills, :total_victory_points ].each do |attr|
|
|
414
|
+
assert_equal(10,stats.corporations[attr].size)
|
|
415
|
+
end
|
|
416
|
+
[ :yesterday_kills, :yesterday_victory_points, :last_week_kills,
|
|
417
|
+
:last_week_victory_points, :total_kills, :total_victory_points ].each do |attr|
|
|
418
|
+
assert_equal(4,stats.factions[attr].size)
|
|
419
|
+
end
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
def test_assets_clean
|
|
423
|
+
Reve::API.personal_assets_url = XML_BASE + 'assets.xml'
|
|
424
|
+
assets = nil
|
|
425
|
+
assert_nothing_raised do
|
|
426
|
+
assets = @api.personal_assets_list
|
|
427
|
+
end
|
|
428
|
+
assert_equal 18, assets.size # 18 single and 1 container
|
|
429
|
+
contained_assets = assets.inject([]) { |ass,container| ass << container.assets }.flatten
|
|
430
|
+
assert_equal(1, contained_assets.size) # We have a container it happens to have 1 asset in it
|
|
431
|
+
contained_assets.each do |asset|
|
|
432
|
+
assert_instance_of(Reve::Classes::Asset, asset)
|
|
433
|
+
assert_not_nil(asset.item_id)
|
|
434
|
+
assert_not_nil(asset.type_id)
|
|
435
|
+
assert_not_nil(asset.quantity)
|
|
436
|
+
assert_not_nil(asset.flag)
|
|
437
|
+
assert_not_nil(asset.singleton)
|
|
438
|
+
end
|
|
439
|
+
assets.each do |asset|
|
|
440
|
+
assert_instance_of(Reve::Classes::AssetContainer, asset)
|
|
441
|
+
assert_not_nil(asset.item_id)
|
|
442
|
+
assert_not_nil(asset.location_id)
|
|
443
|
+
assert_not_nil(asset.type_id)
|
|
444
|
+
assert_not_nil(asset.quantity)
|
|
445
|
+
assert_not_nil(asset.flag)
|
|
446
|
+
assert_not_nil(asset.singleton)
|
|
447
|
+
end
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
# no need to test corporate cos they're the same.
|
|
451
|
+
# TODO: Test with nested losses
|
|
452
|
+
def test_kills_clean
|
|
453
|
+
kills_cleanly(:personal_kills,File.join(XML_BASE,'kills.xml'))
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
def test_corporate_kills_clean
|
|
457
|
+
kills_cleanly(:corporate_kills,File.join(XML_BASE,'kills.xml'))
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
def test_characters_clean
|
|
461
|
+
Reve::API.characters_url = XML_BASE + 'characters.xml'
|
|
462
|
+
chars = nil
|
|
463
|
+
assert_nothing_raised do
|
|
464
|
+
chars = @api.characters
|
|
465
|
+
end
|
|
466
|
+
assert_not_nil @api.last_hash
|
|
467
|
+
assert_kind_of Time, @api.cached_until
|
|
468
|
+
assert_equal 1, chars.size
|
|
469
|
+
chars.each do |char|
|
|
470
|
+
assert_not_nil(char.name)
|
|
471
|
+
assert_not_nil(char.id)
|
|
472
|
+
assert_not_nil(char.corporation_name)
|
|
473
|
+
assert_not_nil(char.corporation_id)
|
|
474
|
+
assert_instance_of Reve::Classes::Character, char
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
def test_starbases_clean
|
|
479
|
+
Reve::API.starbases_url = XML_BASE + 'starbases.xml'
|
|
480
|
+
bases = nil
|
|
481
|
+
assert_nothing_raised do
|
|
482
|
+
bases = @api.starbases(:characterid => 1)
|
|
483
|
+
end
|
|
484
|
+
assert_not_nil @api.last_hash
|
|
485
|
+
assert_kind_of Time, @api.cached_until
|
|
486
|
+
assert_equal 4, bases.size
|
|
487
|
+
bases.each do |starbase|
|
|
488
|
+
assert_instance_of Reve::Classes::Starbase, starbase
|
|
489
|
+
assert_not_nil starbase.type_id
|
|
490
|
+
assert_not_nil starbase.type_name
|
|
491
|
+
assert_not_nil starbase.id
|
|
492
|
+
assert_not_nil starbase.system_id
|
|
493
|
+
assert_not_nil starbase.system_name
|
|
494
|
+
end
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
def test_starbase_fuel_clean
|
|
498
|
+
Reve::API.starbasedetail_url = XML_BASE + 'starbase_fuel.xml'
|
|
499
|
+
fuels = nil
|
|
500
|
+
assert_nothing_raised do
|
|
501
|
+
fuels = @api.starbase_fuel(:starbaseid => 1,:characterid => 2)
|
|
502
|
+
end
|
|
503
|
+
assert_not_nil @api.last_hash
|
|
504
|
+
assert_kind_of Time, @api.cached_until
|
|
505
|
+
assert_equal 14, fuels.size
|
|
506
|
+
fuels.each do |fuel|
|
|
507
|
+
assert_equal 1, fuel.starbase_id
|
|
508
|
+
assert_not_nil fuel.type_id
|
|
509
|
+
assert_not_nil fuel.quantity
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
def test_alliances_clean
|
|
514
|
+
Reve::API.alliances_url = XML_BASE + 'alliances.xml'
|
|
515
|
+
alliances = nil
|
|
516
|
+
assert_nothing_raised do
|
|
517
|
+
alliances = @api.alliances
|
|
518
|
+
end
|
|
519
|
+
assert_not_nil @api.last_hash
|
|
520
|
+
assert_kind_of Time, @api.cached_until
|
|
521
|
+
assert_equal 3, alliances.size
|
|
522
|
+
corpsize = 0
|
|
523
|
+
alliances.each do |alliance|
|
|
524
|
+
assert_instance_of Reve::Classes::Alliance, alliance
|
|
525
|
+
assert_not_equal 0, alliance.member_corporations
|
|
526
|
+
assert_not_nil alliance.name
|
|
527
|
+
assert_not_nil alliance.id
|
|
528
|
+
assert_not_nil alliance.short_name
|
|
529
|
+
assert_not_nil alliance.member_count
|
|
530
|
+
assert_not_nil alliance.executor_corp_id
|
|
531
|
+
corpsize += alliance.member_corporations.size
|
|
532
|
+
end
|
|
533
|
+
assert_equal 150, corpsize
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
def test_sovereignty_clean
|
|
537
|
+
Reve::API.sovereignty_url = XML_BASE + 'sovereignty.xml'
|
|
538
|
+
sovereignties = nil
|
|
539
|
+
assert_nothing_raised do
|
|
540
|
+
sovereignties = @api.sovereignty
|
|
541
|
+
end
|
|
542
|
+
assert_not_nil @api.last_hash
|
|
543
|
+
assert_kind_of Time, @api.cached_until
|
|
544
|
+
assert_equal 7, sovereignties.size
|
|
545
|
+
sovereignties.each do |sovereignty|
|
|
546
|
+
assert_instance_of Reve::Classes::Sovereignty, sovereignty
|
|
547
|
+
assert_not_nil sovereignty.system_id
|
|
548
|
+
assert_not_nil sovereignty.constellation_sovereignty
|
|
549
|
+
assert_not_nil sovereignty.system_name
|
|
550
|
+
end
|
|
551
|
+
end
|
|
552
|
+
|
|
553
|
+
def test_reftypes_clean
|
|
554
|
+
Reve::API.reftypes_url = XML_BASE + 'reftypes.xml'
|
|
555
|
+
reftypes = nil
|
|
556
|
+
assert_nothing_raised do
|
|
557
|
+
reftypes = @api.ref_types
|
|
558
|
+
end
|
|
559
|
+
assert_not_nil @api.last_hash
|
|
560
|
+
assert_kind_of Time, @api.cached_until
|
|
561
|
+
assert_equal 6, reftypes.size
|
|
562
|
+
reftypes.each do |reftype|
|
|
563
|
+
assert_not_nil reftype.id
|
|
564
|
+
assert_not_nil reftype.name
|
|
565
|
+
end
|
|
566
|
+
end
|
|
567
|
+
|
|
568
|
+
def test_market_orders_clean
|
|
569
|
+
Reve::API.personal_market_orders_url = XML_BASE + 'marketorders.xml'
|
|
570
|
+
orders = nil
|
|
571
|
+
assert_nothing_raised do
|
|
572
|
+
orders = @api.personal_market_orders
|
|
573
|
+
end
|
|
574
|
+
assert_not_nil @api.last_hash
|
|
575
|
+
assert_kind_of Time, @api.cached_until
|
|
576
|
+
assert_equal 11, orders.size
|
|
577
|
+
buys = sells = 0
|
|
578
|
+
orders.each do |order|
|
|
579
|
+
[ :id, :character_id, :station_id, :volume_entered, :volume_remaining, :minimum_volume,
|
|
580
|
+
:order_state, :type_id, :range, :account_key, :duration, :escrow, :price, :bid ].each do |attr|
|
|
581
|
+
assert_not_nil(order.send(attr))
|
|
582
|
+
end
|
|
583
|
+
assert_kind_of Time, order.created_at
|
|
584
|
+
assert [TrueClass, FalseClass].include?(order.bid.class)
|
|
585
|
+
buys += 1 if ! order.bid
|
|
586
|
+
sells += 1 if order.bid
|
|
587
|
+
assert_not_equal(0, order.character_id)
|
|
588
|
+
end
|
|
589
|
+
assert_equal 4, buys
|
|
590
|
+
assert_equal 7, sells
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
def test_corporate_market_orders_clean
|
|
594
|
+
orders = nil
|
|
595
|
+
assert_nothing_raised do
|
|
596
|
+
orders = @api.corporate_market_orders :url => File.join(XML_BASE,'corporate_market_orders.xml')
|
|
597
|
+
end
|
|
598
|
+
assert_not_nil @api.last_hash
|
|
599
|
+
assert_kind_of Time, @api.cached_until
|
|
600
|
+
assert_equal 1, orders.size
|
|
601
|
+
buys = sells = 0
|
|
602
|
+
orders.each do |order|
|
|
603
|
+
[ :id, :character_id, :station_id, :volume_entered, :volume_remaining, :minimum_volume,
|
|
604
|
+
:order_state, :type_id, :range, :account_key, :duration, :escrow, :price, :bid ].each do |attr|
|
|
605
|
+
assert_not_nil(order.send(attr))
|
|
606
|
+
end
|
|
607
|
+
assert_kind_of Time, order.created_at
|
|
608
|
+
assert [TrueClass, FalseClass].include?(order.bid.class)
|
|
609
|
+
buys += 1 if ! order.bid
|
|
610
|
+
sells += 1 if order.bid
|
|
611
|
+
end
|
|
612
|
+
assert_equal 1, buys
|
|
613
|
+
assert_equal 0, sells
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
def test_corporate_wallet_transactions
|
|
617
|
+
trans = nil
|
|
618
|
+
assert_nothing_raised do
|
|
619
|
+
trans = @api.corporate_wallet_transactions :url => File.join(XML_BASE,'corporate_wallet_transactions.xml')
|
|
620
|
+
end
|
|
621
|
+
assert_equal 1, trans.size
|
|
622
|
+
assert trans.all? { |tran| tran.kind_of?(Reve::Classes::CorporateWalletTransaction) }
|
|
623
|
+
trans.each do |tran|
|
|
624
|
+
[ :created_at, :id, :quantity, :type_name, :type_id, :price,
|
|
625
|
+
:client_id, :client_name, :character_id, :station_id, :station_name, :type,
|
|
626
|
+
:transaction_for ].each do |attr|
|
|
627
|
+
assert_not_nil(tran.send(attr))
|
|
628
|
+
end
|
|
629
|
+
assert_instance_of(Time, tran.created_at)
|
|
630
|
+
end
|
|
631
|
+
end
|
|
632
|
+
|
|
633
|
+
def test_corporate_wallet_balance_clean
|
|
634
|
+
balance = nil
|
|
635
|
+
assert_nothing_raised do
|
|
636
|
+
balance = @api.corporate_wallet_balance :url => File.join(XML_BASE, 'corporate_wallet_balance.xml')
|
|
637
|
+
end
|
|
638
|
+
assert balance.all? { |b| b.kind_of?(Reve::Classes::WalletBalance) }
|
|
639
|
+
balance.each do |bal|
|
|
640
|
+
assert_not_nil(bal.account_id)
|
|
641
|
+
assert_not_nil(bal.account_key)
|
|
642
|
+
assert_not_nil(bal.balance)
|
|
643
|
+
end
|
|
644
|
+
assert_equal 18004409.84, balance.select { |b| b.account_key == '1000' }.first.balance
|
|
645
|
+
balance.select { |b| b.account_key != '1000' }.each do |non_tested_account|
|
|
646
|
+
assert_equal 0.00, non_tested_account.balance
|
|
647
|
+
end
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
def test_corporate_wallet_journal_clean
|
|
651
|
+
journal = nil
|
|
652
|
+
assert_nothing_raised do
|
|
653
|
+
journal = @api.corporate_wallet_journal :url => File.join(XML_BASE,'corporate_wallet_journal.xml')
|
|
654
|
+
end
|
|
655
|
+
assert_equal 2, journal.size
|
|
656
|
+
assert journal.all? { |j| j.kind_of?(Reve::Classes::WalletJournal) }
|
|
657
|
+
journal.each do |j|
|
|
658
|
+
[ :date, :ref_id, :reftype_id, :owner_name1, :owner_name2, :arg_name1, :amount, :balance, :reason ].each do |attr|
|
|
659
|
+
assert_not_nil(j.send(attr))
|
|
660
|
+
end
|
|
661
|
+
end
|
|
662
|
+
end
|
|
663
|
+
|
|
664
|
+
def test_corporate_assets_list_clean
|
|
665
|
+
assets = nil
|
|
666
|
+
assert_nothing_raised do
|
|
667
|
+
assets = @api.corporate_assets_list :url => File.join(XML_BASE,'corporate_assets_list.xml')
|
|
668
|
+
end
|
|
669
|
+
assert_equal 2, assets.size
|
|
670
|
+
assert assets.all? { |a| a.kind_of?(Reve::Classes::AssetContainer) }
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
def test_map_jumps_clean
|
|
674
|
+
Reve::API.map_jumps_url = XML_BASE + 'mapjumps.xml'
|
|
675
|
+
mapjumps = nil
|
|
676
|
+
assert_nothing_raised do
|
|
677
|
+
mapjumps = @api.map_jumps
|
|
678
|
+
end
|
|
679
|
+
assert_not_nil @api.last_hash
|
|
680
|
+
assert_kind_of Time, @api.cached_until
|
|
681
|
+
assert_equal 5, mapjumps.size
|
|
682
|
+
mapjumps.each do |jump|
|
|
683
|
+
assert_not_nil jump.system_id
|
|
684
|
+
assert_not_nil jump.jumps
|
|
685
|
+
end
|
|
686
|
+
end
|
|
687
|
+
|
|
688
|
+
def test_map_kills_clean
|
|
689
|
+
Reve::API.map_kills_url = XML_BASE + 'mapkills.xml'
|
|
690
|
+
mapkills = nil
|
|
691
|
+
assert_nothing_raised do
|
|
692
|
+
mapkills = @api.map_kills
|
|
693
|
+
end
|
|
694
|
+
assert_not_nil @api.last_hash
|
|
695
|
+
assert_kind_of Time, @api.cached_until
|
|
696
|
+
assert_equal 4, mapkills.size
|
|
697
|
+
mapkills.each do |kill|
|
|
698
|
+
assert_not_nil kill.system_id
|
|
699
|
+
assert_not_nil kill.faction_kills
|
|
700
|
+
assert_not_nil kill.ship_kills
|
|
701
|
+
assert_not_nil kill.pod_kills
|
|
702
|
+
end
|
|
703
|
+
end
|
|
704
|
+
|
|
705
|
+
def test_skill_tree_clean
|
|
706
|
+
Reve::API.skill_tree_url = XML_BASE + 'skilltree.xml'
|
|
707
|
+
skilltrees = nil
|
|
708
|
+
assert_nothing_raised do
|
|
709
|
+
skilltrees = @api.skill_tree
|
|
710
|
+
end
|
|
711
|
+
assert_not_nil @api.last_hash
|
|
712
|
+
assert_kind_of Time, @api.cached_until
|
|
713
|
+
assert_equal 2, skilltrees.size
|
|
714
|
+
skilltrees.each do |skill|
|
|
715
|
+
assert_not_nil skill.type_id
|
|
716
|
+
assert_not_nil skill.name
|
|
717
|
+
assert_not_nil skill.rank
|
|
718
|
+
assert_not_nil skill.description
|
|
719
|
+
skill.bonuses.each do |bonus|
|
|
720
|
+
assert_kind_of Reve::Classes::SkillBonus, bonus
|
|
721
|
+
end
|
|
722
|
+
skill.attribs.each do |attrib|
|
|
723
|
+
assert_kind_of Reve::Classes::RequiredAttribute, attrib
|
|
724
|
+
end
|
|
725
|
+
skill.required_skills.each do |req|
|
|
726
|
+
assert_kind_of Reve::Classes::SkillRequirement, req
|
|
727
|
+
end
|
|
728
|
+
end
|
|
729
|
+
end
|
|
730
|
+
|
|
731
|
+
def test_wallet_balance_clean
|
|
732
|
+
Reve::API.personal_wallet_balance_url = XML_BASE + 'wallet_balance.xml'
|
|
733
|
+
balance = nil
|
|
734
|
+
assert_nothing_raised do
|
|
735
|
+
balance = @api.personal_wallet_balance(:characterid => 1)
|
|
736
|
+
end
|
|
737
|
+
assert_not_nil @api.last_hash
|
|
738
|
+
assert_kind_of Time, @api.cached_until
|
|
739
|
+
assert_equal 7, balance.size
|
|
740
|
+
balance.each do |bal|
|
|
741
|
+
assert_not_nil bal.account_id
|
|
742
|
+
assert_not_nil bal.account_key
|
|
743
|
+
assert_not_nil bal.balance
|
|
744
|
+
end
|
|
745
|
+
end
|
|
746
|
+
|
|
747
|
+
def test_wallet_transactions_clean
|
|
748
|
+
Reve::API.personal_wallet_trans_url = XML_BASE + 'market_transactions.xml'
|
|
749
|
+
trans = nil
|
|
750
|
+
assert_nothing_raised do
|
|
751
|
+
trans = @api.personal_wallet_transactions(:characterid => 1)
|
|
752
|
+
end
|
|
753
|
+
assert_not_nil @api.last_hash
|
|
754
|
+
assert_kind_of Time, @api.cached_until
|
|
755
|
+
assert_instance_of Reve::Classes::PersonalWalletTransaction, trans.first
|
|
756
|
+
assert_equal 9, trans.size
|
|
757
|
+
trans.each do |t|
|
|
758
|
+
assert_not_nil t.created_at
|
|
759
|
+
assert_not_nil t.id
|
|
760
|
+
assert_not_nil t.quantity
|
|
761
|
+
assert_not_nil t.type_name
|
|
762
|
+
assert_not_nil t.type_id
|
|
763
|
+
assert_not_nil t.price
|
|
764
|
+
assert_not_nil t.client_name
|
|
765
|
+
assert_not_nil t.station_id
|
|
766
|
+
assert_not_nil t.station_name
|
|
767
|
+
assert_not_nil t.type
|
|
768
|
+
end
|
|
769
|
+
end
|
|
770
|
+
|
|
771
|
+
def test_wallet_journal_clean
|
|
772
|
+
Reve::API.personal_wallet_journal_url = XML_BASE + 'wallet_journal.xml'
|
|
773
|
+
journal = nil
|
|
774
|
+
assert_nothing_raised do
|
|
775
|
+
journal = @api.personal_wallet_journal(:characterid => 1)
|
|
776
|
+
end
|
|
777
|
+
assert_not_nil @api.last_hash
|
|
778
|
+
assert_kind_of Time, @api.cached_until
|
|
779
|
+
assert_equal 8, journal.size
|
|
780
|
+
journal.each do |j|
|
|
781
|
+
assert_not_nil j.date
|
|
782
|
+
assert_not_nil j.ref_id
|
|
783
|
+
assert_not_nil j.reftype_id
|
|
784
|
+
assert_not_nil j.owner_name1
|
|
785
|
+
assert_not_nil j.owner_name2
|
|
786
|
+
assert_not_nil j.arg_name1
|
|
787
|
+
assert_not_nil j.amount
|
|
788
|
+
assert_not_nil j.balance
|
|
789
|
+
assert_not_nil j.reason
|
|
790
|
+
end
|
|
791
|
+
end
|
|
792
|
+
|
|
793
|
+
def test_member_tracking_clean
|
|
794
|
+
Reve::API.member_tracking_url = XML_BASE + 'member_tracking.xml'
|
|
795
|
+
members = nil
|
|
796
|
+
assert_nothing_raised do
|
|
797
|
+
members = @api.member_tracking(:characterid => 1)
|
|
798
|
+
end
|
|
799
|
+
assert_not_nil @api.last_hash
|
|
800
|
+
assert_kind_of Time, @api.cached_until
|
|
801
|
+
assert_equal 2, members.size
|
|
802
|
+
members.each do |member|
|
|
803
|
+
assert_not_nil member.character_id
|
|
804
|
+
assert_not_nil member.character_name
|
|
805
|
+
assert_not_nil member.start_time
|
|
806
|
+
assert_not_nil member.base_id
|
|
807
|
+
assert_not_nil member.base
|
|
808
|
+
assert_not_nil member.title
|
|
809
|
+
assert_not_nil member.logon_time
|
|
810
|
+
assert_not_nil member.logoff_time
|
|
811
|
+
assert_not_nil member.location_id
|
|
812
|
+
assert_not_nil member.location
|
|
813
|
+
assert_not_nil member.ship_type_id
|
|
814
|
+
assert_not_nil member.ship_type
|
|
815
|
+
assert_not_nil member.roles
|
|
816
|
+
assert_not_nil member.grantable_roles
|
|
817
|
+
end
|
|
818
|
+
end
|
|
819
|
+
|
|
820
|
+
def test_member_corporation_sheet_clean
|
|
821
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'corporation_sheet.xml'
|
|
822
|
+
sheet = nil
|
|
823
|
+
assert_nothing_raised do
|
|
824
|
+
sheet = @api.corporation_sheet
|
|
825
|
+
end
|
|
826
|
+
assert_not_nil @api.last_hash
|
|
827
|
+
assert_kind_of Time, @api.cached_until
|
|
828
|
+
assert_equal 7, sheet.divisions.size
|
|
829
|
+
assert_equal 7, sheet.wallet_divisions.size
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
def test_nonmember_corporation_sheet_clean
|
|
833
|
+
Reve::API.corporation_sheet_url = XML_BASE + 'nonmember_corpsheet.xml'
|
|
834
|
+
sheet = nil
|
|
835
|
+
assert_nothing_raised do
|
|
836
|
+
sheet = @api.corporation_sheet :corporationid => 134300597
|
|
837
|
+
end
|
|
838
|
+
assert_not_nil @api.last_hash
|
|
839
|
+
assert_kind_of Time, @api.cached_until
|
|
840
|
+
assert_equal 0, sheet.divisions.size
|
|
841
|
+
assert_equal 0, sheet.wallet_divisions.size
|
|
842
|
+
end
|
|
843
|
+
|
|
844
|
+
def test_no_skill_in_training_clean
|
|
845
|
+
# Reve::API.training_skill_url = XML_BASE + 'skill_in_training-none.xml'
|
|
846
|
+
skill = nil
|
|
847
|
+
assert_nothing_raised do
|
|
848
|
+
skill = @api.skill_in_training(:characterid => 1, :url => XML_BASE + 'skill_in_training-none.xml')
|
|
849
|
+
end
|
|
850
|
+
assert_not_nil @api.last_hash
|
|
851
|
+
assert_kind_of Time, @api.cached_until
|
|
852
|
+
assert_equal false, skill.skill_in_training
|
|
853
|
+
end
|
|
854
|
+
|
|
855
|
+
=begin
|
|
856
|
+
# Tests Reve::API#get_xml's segment that fetches from http
|
|
857
|
+
def test_no_skill_in_training_clean_from_svn
|
|
858
|
+
skill = nil
|
|
859
|
+
assert_nothing_raised do
|
|
860
|
+
skill = @api.skill_in_training(:characterid => 123, :url => URI.parse('http://svn.crudvision.com/reve/trunk/test/xml/skill_in_training-none.xml'))
|
|
861
|
+
end
|
|
862
|
+
assert_not_nil @api.last_hash
|
|
863
|
+
assert_kind_of Time, @api.cached_until
|
|
864
|
+
assert_equal false, skill.skill_in_training
|
|
865
|
+
end
|
|
866
|
+
=end
|
|
867
|
+
|
|
868
|
+
def test_amarr_titan_skill_in_training_clean
|
|
869
|
+
Reve::API.training_skill_url = XML_BASE + 'skill_in_training-amarr-titan.xml'
|
|
870
|
+
skill = nil
|
|
871
|
+
assert_nothing_raised do
|
|
872
|
+
skill = @api.skill_in_training(:characerid => 1)
|
|
873
|
+
end
|
|
874
|
+
assert_not_nil @api.last_hash
|
|
875
|
+
assert_kind_of Time, @api.cached_until
|
|
876
|
+
assert skill.skill_in_training
|
|
877
|
+
assert_not_nil skill.start_time
|
|
878
|
+
assert_not_nil skill.type_id
|
|
879
|
+
assert_not_nil skill.end_time
|
|
880
|
+
assert_not_nil skill.to_level
|
|
881
|
+
assert_not_nil skill.start_sp
|
|
882
|
+
assert_not_nil skill.end_sp
|
|
883
|
+
end
|
|
884
|
+
|
|
885
|
+
def test_skill_queue_clean
|
|
886
|
+
Reve::API.skill_queue_url = XML_BASE + 'skill_queue.xml'
|
|
887
|
+
queue = nil
|
|
888
|
+
assert_nothing_raised do
|
|
889
|
+
queue = @api.skill_queue(:characerid => 1)
|
|
890
|
+
end
|
|
891
|
+
assert_kind_of(Reve::Classes::QueuedSkill, queue.first)
|
|
892
|
+
assert_not_nil queue.first.queue_position
|
|
893
|
+
assert_not_nil queue.first.start_time
|
|
894
|
+
assert_not_nil queue.first.type_id
|
|
895
|
+
assert_not_nil queue.first.end_time
|
|
896
|
+
assert_not_nil queue.first.to_level
|
|
897
|
+
assert_not_nil queue.first.start_sp
|
|
898
|
+
assert_not_nil queue.first.end_sp
|
|
899
|
+
assert_equal 9, queue.length
|
|
900
|
+
end
|
|
901
|
+
|
|
902
|
+
def test_corporate_medals
|
|
903
|
+
Reve::API.corporate_medals_url = XML_BASE + 'corp_medals.xml'
|
|
904
|
+
medals = nil
|
|
905
|
+
assert_nothing_raised do
|
|
906
|
+
medals = @api.corporate_medals
|
|
907
|
+
end
|
|
908
|
+
assert_equal(12, medals.size)
|
|
909
|
+
medals.each do |medal|
|
|
910
|
+
assert_kind_of(Reve::Classes::CorporateMedal, medal)
|
|
911
|
+
assert_kind_of(Numeric, medal.id)
|
|
912
|
+
assert_kind_of(NilClass, medal.issued_at) # Doesn't exist for this class, look at created_at
|
|
913
|
+
assert_kind_of(Time, medal.created_at)
|
|
914
|
+
assert_kind_of(String, medal.description)
|
|
915
|
+
assert_kind_of(Numeric, medal.creator_id)
|
|
916
|
+
assert_kind_of(String, medal.title)
|
|
917
|
+
end
|
|
918
|
+
end
|
|
919
|
+
|
|
920
|
+
def test_corporate_member_medals
|
|
921
|
+
Reve::API.corp_member_medals_url = XML_BASE + 'corp_member_medals.xml'
|
|
922
|
+
medals = nil
|
|
923
|
+
assert_nothing_raised do
|
|
924
|
+
medals = @api.corporate_member_medals
|
|
925
|
+
end
|
|
926
|
+
assert_equal(9, medals.size)
|
|
927
|
+
medals.each do |medal|
|
|
928
|
+
assert_kind_of(Reve::Classes::CorporateMemberMedal, medal)
|
|
929
|
+
assert_kind_of(Numeric, medal.id)
|
|
930
|
+
assert_kind_of(Time, medal.issued_at)
|
|
931
|
+
assert_kind_of(Numeric, medal.character_id)
|
|
932
|
+
assert_kind_of(String, medal.reason)
|
|
933
|
+
assert_kind_of(Numeric, medal.issuer_id)
|
|
934
|
+
assert_kind_of(String, medal.status)
|
|
935
|
+
assert medal.is_public?
|
|
936
|
+
assert ! medal.is_private?
|
|
937
|
+
end
|
|
938
|
+
end
|
|
939
|
+
|
|
940
|
+
def test_server_status
|
|
941
|
+
Reve::API.server_status_url = XML_BASE + 'server_status.xml'
|
|
942
|
+
status = nil
|
|
943
|
+
assert_nothing_raised do
|
|
944
|
+
status = @api.server_status
|
|
945
|
+
end
|
|
946
|
+
assert_kind_of(Reve::Classes::ServerStatus, status)
|
|
947
|
+
assert_equal(34444, status.players)
|
|
948
|
+
assert status.open?
|
|
949
|
+
assert status.open
|
|
950
|
+
end
|
|
951
|
+
|
|
952
|
+
def test_character_medals
|
|
953
|
+
Reve::API.character_medals_url = XML_BASE + 'char_medals.xml'
|
|
954
|
+
obj = nil
|
|
955
|
+
assert_nothing_raised do
|
|
956
|
+
obj = @api.character_medals
|
|
957
|
+
end
|
|
958
|
+
assert_kind_of(Reve::Classes::CharacterMedals, obj)
|
|
959
|
+
assert_equal(1, obj.current_corporation.size)
|
|
960
|
+
assert obj.other_corporation.empty?
|
|
961
|
+
obj.current_corporation.each do |medal|
|
|
962
|
+
assert_kind_of(Reve::Classes::CharacterMedal, medal)
|
|
963
|
+
assert_kind_of(Numeric, medal.id)
|
|
964
|
+
assert_kind_of(Time, medal.issued_at)
|
|
965
|
+
assert_kind_of(String, medal.reason)
|
|
966
|
+
assert_kind_of(Numeric, medal.issuer_id)
|
|
967
|
+
assert_kind_of(String, medal.status)
|
|
968
|
+
assert medal.is_public?
|
|
969
|
+
assert ! medal.is_private?
|
|
970
|
+
end
|
|
971
|
+
|
|
972
|
+
end
|
|
973
|
+
|
|
974
|
+
def test_certificate_sheet
|
|
975
|
+
Reve::API.certificate_tree_url = XML_BASE + 'certificate_tree.xml'
|
|
976
|
+
tree = nil
|
|
977
|
+
assert_nothing_raised do
|
|
978
|
+
tree = @api.certificate_tree
|
|
979
|
+
end
|
|
980
|
+
# going to hell
|
|
981
|
+
assert_kind_of(Reve::Classes::CertificateTree, tree)
|
|
982
|
+
assert_equal(1, tree.categories.size)
|
|
983
|
+
assert tree.categories.all? { |cat| cat.kind_of?(Reve::Classes::CertificateCategory) }
|
|
984
|
+
assert tree.categories.all? { |cat| cat.id.kind_of?(Numeric) && cat.name.kind_of?(String) }
|
|
985
|
+
assert_equal(6, tree.categories.first.classes.size) # just 1 category
|
|
986
|
+
assert tree.categories.first.classes.all? { |klass| klass.kind_of?(Reve::Classes::CertificateClass) }
|
|
987
|
+
assert tree.categories.first.classes.all? { |klass| klass.id.kind_of?(Numeric) && klass.name.kind_of?(String) }
|
|
988
|
+
assert tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.all? { |cert| cert.id.kind_of?(Numeric) && cert.grade.kind_of?(Numeric) && cert.corporation_id.kind_of?(Numeric) && cert.description.kind_of?(String) }
|
|
989
|
+
assert_equal(20, tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.size)
|
|
990
|
+
assert_equal(54, tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.collect { |cert| cert.required_skills }.flatten.size)
|
|
991
|
+
assert tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.collect { |cert| cert.required_skills }.flatten.all? { |req| req.id.kind_of?(Numeric) && req.level.kind_of?(Numeric) }
|
|
992
|
+
assert_equal(29, tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.collect { |cert| cert.required_certificates }.flatten.size)
|
|
993
|
+
assert tree.categories.first.classes.collect { |klass| klass.certificates }.flatten.collect { |cert| cert.required_certificates }.flatten.all? { |req| req.id.kind_of?(Numeric) && req.grade.kind_of?(Numeric) }
|
|
994
|
+
end
|
|
995
|
+
|
|
996
|
+
def test_character_sheet_clean
|
|
997
|
+
Reve::API.character_sheet_url = XML_BASE + 'character_sheet.xml'
|
|
998
|
+
sheet = nil
|
|
999
|
+
assert_nothing_raised do
|
|
1000
|
+
sheet = @api.character_sheet(:characterid => 1)
|
|
1001
|
+
end
|
|
1002
|
+
assert_not_nil @api.last_hash
|
|
1003
|
+
assert_kind_of Time, @api.cached_until
|
|
1004
|
+
|
|
1005
|
+
assert_not_nil sheet.name
|
|
1006
|
+
assert_not_nil sheet.race
|
|
1007
|
+
assert_not_nil sheet.bloodline
|
|
1008
|
+
assert_not_nil sheet.gender
|
|
1009
|
+
assert_not_nil sheet.id
|
|
1010
|
+
assert_not_nil sheet.corporation_name
|
|
1011
|
+
assert_not_nil sheet.corporation_id
|
|
1012
|
+
assert_not_nil sheet.balance
|
|
1013
|
+
|
|
1014
|
+
assert_not_nil sheet.intelligence
|
|
1015
|
+
assert_not_nil sheet.memory
|
|
1016
|
+
assert_not_nil sheet.charisma
|
|
1017
|
+
assert_not_nil sheet.perception
|
|
1018
|
+
assert_not_nil sheet.willpower
|
|
1019
|
+
|
|
1020
|
+
assert_equal 5, sheet.enhancers.size, "Implant size mismatch"
|
|
1021
|
+
sheet.enhancers.each do |enhancer|
|
|
1022
|
+
assert_kind_of Reve::Classes::AttributeEnhancer, enhancer
|
|
1023
|
+
end
|
|
1024
|
+
assert_equal 44842126, sheet.skills.inject(0) { |sum,s| sum += s.skillpoints }, "Skillpoint total mismatch"
|
|
1025
|
+
|
|
1026
|
+
sheet.skills.each do |skill|
|
|
1027
|
+
assert_kind_of Reve::Classes::Skill, skill
|
|
1028
|
+
end
|
|
1029
|
+
assert_equal(57, sheet.certificate_ids.size,"Certificate ID size mismatch")
|
|
1030
|
+
assert sheet.certificate_ids.all? { |cid| cid.kind_of?(Fixnum) }
|
|
1031
|
+
|
|
1032
|
+
# role aliases
|
|
1033
|
+
assert ! sheet.corporate_roles_at_hq.empty?
|
|
1034
|
+
assert ! sheet.corporate_roles.empty?
|
|
1035
|
+
assert ! sheet.corporate_roles_at_base.empty?
|
|
1036
|
+
assert ! sheet.corporate_roles_at_other.empty?
|
|
1037
|
+
# role proper methods
|
|
1038
|
+
assert ! sheet.corporationRolesAtHQ.empty?
|
|
1039
|
+
assert ! sheet.corporationRoles.empty?
|
|
1040
|
+
assert ! sheet.corporationRolesAtBase.empty?
|
|
1041
|
+
assert ! sheet.corporationRolesAtOther.empty?
|
|
1042
|
+
|
|
1043
|
+
[ :corporate_roles_at_hq, :corporate_roles, :corporate_roles_at_base, :corporate_roles_at_other ].each do |role_kind|
|
|
1044
|
+
r_ary = sheet.send(role_kind)
|
|
1045
|
+
assert r_ary.all? { |r| r.kind_of?(Reve::Classes::CorporateRole) }
|
|
1046
|
+
assert r_ary.all? { |r| r.name.kind_of?(String) }
|
|
1047
|
+
assert r_ary.all? { |r| r.id.kind_of?(Numeric) }
|
|
1048
|
+
end
|
|
1049
|
+
|
|
1050
|
+
assert ! sheet.corporate_titles.empty?
|
|
1051
|
+
assert sheet.corporate_titles.all? { |t| t.kind_of?(Reve::Classes::CorporateTitle) }
|
|
1052
|
+
assert sheet.corporate_titles.all? { |t| t.name.kind_of?(String) }
|
|
1053
|
+
assert sheet.corporate_titles.all? { |t| t.id.kind_of?(Numeric) }
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
end
|
|
1058
|
+
|
|
1059
|
+
# Can we reassign a URL?
|
|
1060
|
+
def test_assignment
|
|
1061
|
+
assert_nothing_raised do
|
|
1062
|
+
Reve::API.character_sheet_url = "hello"
|
|
1063
|
+
end
|
|
1064
|
+
end
|
|
1065
|
+
|
|
1066
|
+
# Laziness pays off I hope
|
|
1067
|
+
def test_all_raise_errors
|
|
1068
|
+
Dir.glob(File.join(XML_BASE,'errors','*.xml')).each do |file|
|
|
1069
|
+
# Using begin/rescue/assert here because assert_raise doesn't work with.
|
|
1070
|
+
# the exception superclass.
|
|
1071
|
+
begin
|
|
1072
|
+
@api.send(:check_exception,(File.open(file).read))
|
|
1073
|
+
rescue Exception => e
|
|
1074
|
+
assert e.kind_of?(Reve::Exceptions::ReveError)
|
|
1075
|
+
end
|
|
1076
|
+
end
|
|
1077
|
+
end
|
|
1078
|
+
|
|
1079
|
+
def test_get_xml_from_filesystem
|
|
1080
|
+
xmldoc = @api.send(:get_xml, File.join(XML_BASE, 'skill_in_training-none.xml'), {} )
|
|
1081
|
+
assert_equal File.open(File.join(XML_BASE, 'skill_in_training-none.xml')).read, xmldoc
|
|
1082
|
+
end
|
|
1083
|
+
|
|
1084
|
+
=begin
|
|
1085
|
+
def test_get_xml_from_web
|
|
1086
|
+
xmldoc = @api.send(:get_xml, 'http://svn.crudvision.com/reve/trunk/test/xml/skill_in_training-none.xml', {} )
|
|
1087
|
+
assert_equal File.open(File.join(XML_BASE, 'skill_in_training-none.xml')).read, xmldoc
|
|
1088
|
+
end
|
|
1089
|
+
=end
|
|
1090
|
+
|
|
1091
|
+
def test_get_xml_from_filesystem_missing_file
|
|
1092
|
+
assert_raise Errno::ENOENT do
|
|
1093
|
+
xmldoc = @api.send(:get_xml, File.join(XML_BASE,rand.to_s), {} )
|
|
1094
|
+
end
|
|
1095
|
+
end
|
|
1096
|
+
=begin
|
|
1097
|
+
# if this starts to fail make sure the 404 ErrorDocument includes '404 Not Found'
|
|
1098
|
+
def test_get_xml_from_web_missing_file
|
|
1099
|
+
begin
|
|
1100
|
+
xmldoc = @api.send(:get_xml, 'http://svn.crudvision.com/reve/trunk/test/' + rand.to_s, {} )
|
|
1101
|
+
rescue Exception => e
|
|
1102
|
+
assert e.kind_of?(Reve::Exceptions::ReveNetworkStatusException)
|
|
1103
|
+
assert e.message.include?('404 Not Found')
|
|
1104
|
+
end
|
|
1105
|
+
end
|
|
1106
|
+
=end
|
|
1107
|
+
|
|
1108
|
+
def test_format_url_request_one_arg
|
|
1109
|
+
req = @api.send(:format_url_request, { :a => "Hello" })
|
|
1110
|
+
assert_equal "?a=Hello", req
|
|
1111
|
+
end
|
|
1112
|
+
|
|
1113
|
+
def test_format_url_request_two_args
|
|
1114
|
+
req = @api.send(:format_url_request, { :a => "Hello", :world => "b" })
|
|
1115
|
+
assert_equal "?a=Hello&world=b", req
|
|
1116
|
+
end
|
|
1117
|
+
|
|
1118
|
+
def test_format_url_request_nil_value
|
|
1119
|
+
req = @api.send(:format_url_request, { :a => "Hello", :world => nil })
|
|
1120
|
+
assert_equal "?a=Hello", req
|
|
1121
|
+
end
|
|
1122
|
+
|
|
1123
|
+
# make sure we can make a Time object
|
|
1124
|
+
def test_to_time_method
|
|
1125
|
+
str = "2008-01-23 10:32:20"
|
|
1126
|
+
real = Time.utc(2008,01,23,10,32,20)
|
|
1127
|
+
time = nil
|
|
1128
|
+
assert_nothing_raised do
|
|
1129
|
+
time = str.to_time
|
|
1130
|
+
end
|
|
1131
|
+
assert_kind_of Time,time
|
|
1132
|
+
assert_equal real,time
|
|
1133
|
+
end
|
|
1134
|
+
|
|
1135
|
+
protected
|
|
1136
|
+
def get_api(userid = nil, apikey = nil, charid = nil)
|
|
1137
|
+
api = Reve::API.new(userid, apikey, charid)
|
|
1138
|
+
api.save_path = nil
|
|
1139
|
+
api
|
|
1140
|
+
end
|
|
1141
|
+
|
|
1142
|
+
# no need to test corporate cos they're the same.
|
|
1143
|
+
# TODO: Test with nested losses
|
|
1144
|
+
def kills_cleanly(meth = :personal_kills,url = File.join(XML_BASE,'kills.xml'))
|
|
1145
|
+
kills = nil
|
|
1146
|
+
assert_nothing_raised do
|
|
1147
|
+
kills = @api.send(meth,{:url =>url})
|
|
1148
|
+
end
|
|
1149
|
+
assert_equal 25, kills.size
|
|
1150
|
+
assert_equal 25, kills.collect { |k| k.victim.name }.nitems # i should have 10 good victim names to match with 10 kills
|
|
1151
|
+
|
|
1152
|
+
# Process the Kills here to get the number of "Contained Losses" - KillLoss that are contained within another
|
|
1153
|
+
# KillLoss (like a Giant Secure Container); there should only be one contained loss and should be
|
|
1154
|
+
# 64 losses (including the contained_losses)
|
|
1155
|
+
losses = kills.collect { |k| k.losses }.flatten
|
|
1156
|
+
assert_equal 292, losses.size
|
|
1157
|
+
contained_losses = losses.collect { |loss| loss.contained_losses }.flatten
|
|
1158
|
+
assert_equal 0, contained_losses.size
|
|
1159
|
+
|
|
1160
|
+
attacker_names = kills.collect { |k| k.attackers.collect { |a| a.name } }.flatten
|
|
1161
|
+
assert_equal 98, attacker_names.size # total of 25 attackers (24 players + 1 NPC)
|
|
1162
|
+
assert_equal 2, attacker_names.grep(nil).size # npc exists once
|
|
1163
|
+
assert_equal 96, attacker_names.nitems # 24 player attackers
|
|
1164
|
+
|
|
1165
|
+
assert_kind_of Integer, kills.first.victim.faction_id
|
|
1166
|
+
assert_kind_of String, kills.first.victim.faction_name
|
|
1167
|
+
|
|
1168
|
+
assert_kind_of String, kills.first.attackers.first.faction_name
|
|
1169
|
+
|
|
1170
|
+
kills.each do |kill|
|
|
1171
|
+
assert_kind_of Integer, kill.id
|
|
1172
|
+
assert_kind_of Integer, kill.system_id
|
|
1173
|
+
|
|
1174
|
+
assert_kind_of Time, kill.created_at
|
|
1175
|
+
assert_nil kill.moon_id # the ones in the kills.xml are all nil
|
|
1176
|
+
kill.losses.each do |loss|
|
|
1177
|
+
assert_not_nil(loss.type_id)
|
|
1178
|
+
assert_not_nil(loss.flag)
|
|
1179
|
+
assert_not_nil(loss.quantity_dropped)
|
|
1180
|
+
assert_not_nil(loss.quantity_destroyed)
|
|
1181
|
+
loss.contained_losses.each do |closs|
|
|
1182
|
+
assert_not_nil(closs.type_id)
|
|
1183
|
+
assert_not_nil(closs.flag)
|
|
1184
|
+
assert_not_nil(closs.quantity_dropped)
|
|
1185
|
+
assert_not_nil(closs.quantity_destroyed)
|
|
1186
|
+
end
|
|
1187
|
+
end
|
|
1188
|
+
end
|
|
1189
|
+
end
|
|
1190
|
+
|
|
1191
|
+
end
|