PageRenderTime 56ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 1ms

/test/test_reve.rb

http://github.com/lisa/reve
Ruby | 1524 lines | 1315 code | 111 blank | 98 comment | 15 complexity | 8b66ed39a0d16873a757aa1b26e9b5dc MD5 | raw file

Large files files are truncated, but you can click here to view the full file

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

Large files files are truncated, but you can click here to view the full file