eve 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +174 -0
  3. data/PostInstall.txt +6 -0
  4. data/README.rdoc +126 -0
  5. data/Rakefile +128 -0
  6. data/features/support/env.rb +1 -0
  7. data/lib/eve.rb +31 -0
  8. data/lib/eve/api.rb +247 -0
  9. data/lib/eve/api/connectivity.rb +39 -0
  10. data/lib/eve/api/request.rb +74 -0
  11. data/lib/eve/api/response.rb +100 -0
  12. data/lib/eve/api/response/inspection.rb +62 -0
  13. data/lib/eve/api/response/rowset.rb +56 -0
  14. data/lib/eve/api/response/rowsets.rb +42 -0
  15. data/lib/eve/api/response/wrap_object.rb +15 -0
  16. data/lib/eve/api/services.rb +20 -0
  17. data/lib/eve/api/services/account.rb +12 -0
  18. data/lib/eve/api/services/character.rb +96 -0
  19. data/lib/eve/api/services/corporation.rb +150 -0
  20. data/lib/eve/api/services/eve.rb +76 -0
  21. data/lib/eve/api/services/map.rb +45 -0
  22. data/lib/eve/api/services/misc.rb +24 -0
  23. data/lib/eve/api/services/server.rb +20 -0
  24. data/lib/eve/core_extensions.rb +3 -0
  25. data/lib/eve/core_extensions/hash.rb +51 -0
  26. data/lib/eve/core_extensions/string.rb +11 -0
  27. data/lib/eve/dependencies.rb +18 -0
  28. data/lib/eve/errors.rb +129 -0
  29. data/lib/eve/errors/authentication_errors.rb +33 -0
  30. data/lib/eve/errors/internal_errors.rb +64 -0
  31. data/lib/eve/errors/miscellaneous_errors.rb +19 -0
  32. data/lib/eve/errors/user_input_errors.rb +62 -0
  33. data/lib/eve/helpers.rb +12 -0
  34. data/lib/eve/helpers/javascript_helper.rb +198 -0
  35. data/lib/eve/helpers/view_helper.rb +13 -0
  36. data/lib/eve/trust.rb +88 -0
  37. data/lib/eve/trust/controller_helpers.rb +90 -0
  38. data/lib/eve/trust/igb_interface.rb +88 -0
  39. data/lib/eve/trust/mime_types.rb +4 -0
  40. data/script/console +10 -0
  41. data/script/console.cmd +1 -0
  42. data/script/destroy +14 -0
  43. data/script/destroy.cmd +1 -0
  44. data/script/generate +14 -0
  45. data/script/generate.cmd +1 -0
  46. data/spec/lib/eve/api/calls/account/characters_spec.rb +22 -0
  47. data/spec/lib/eve/api/calls/character/account_balance_spec.rb +21 -0
  48. data/spec/lib/eve/api/calls/character/asset_list_spec.rb +23 -0
  49. data/spec/lib/eve/api/calls/character/character_sheet_spec.rb +51 -0
  50. data/spec/lib/eve/api/calls/character/fac_war_stats_spec.rb +31 -0
  51. data/spec/lib/eve/api/calls/character/industry_jobs_spec.rb +27 -0
  52. data/spec/lib/eve/api/calls/character/kill_log_spec.rb +27 -0
  53. data/spec/lib/eve/api/calls/character/mail_messages_spec.rb +21 -0
  54. data/spec/lib/eve/api/calls/character/mailing_lists_spec.rb +21 -0
  55. data/spec/lib/eve/api/calls/character/market_orders_spec.rb +21 -0
  56. data/spec/lib/eve/api/calls/character/medals_spec.rb +24 -0
  57. data/spec/lib/eve/api/calls/character/research_spec.rb +21 -0
  58. data/spec/lib/eve/api/calls/character/skill_in_training_spec.rb +44 -0
  59. data/spec/lib/eve/api/calls/character/skill_queue_spec.rb +21 -0
  60. data/spec/lib/eve/api/calls/character/standings_spec.rb +26 -0
  61. data/spec/lib/eve/api/calls/character/wallet_journal_spec.rb +21 -0
  62. data/spec/lib/eve/api/calls/character/wallet_transactions_spec.rb +21 -0
  63. data/spec/lib/eve/api/calls/character_portrait_spec.rb +17 -0
  64. data/spec/lib/eve/api/calls/corporation/account_balances_spec.rb +21 -0
  65. data/spec/lib/eve/api/calls/corporation/asset_list_spec.rb +25 -0
  66. data/spec/lib/eve/api/calls/corporation/container_log_spec.rb +23 -0
  67. data/spec/lib/eve/api/calls/corporation/corporation_sheet_spec.rb +36 -0
  68. data/spec/lib/eve/api/calls/corporation/fac_war_stats_spec.rb +23 -0
  69. data/spec/lib/eve/api/calls/corporation/industry_jobs_spec.rb +30 -0
  70. data/spec/lib/eve/api/calls/corporation/kill_log_spec.rb +27 -0
  71. data/spec/lib/eve/api/calls/corporation/market_orders_spec.rb +22 -0
  72. data/spec/lib/eve/api/calls/corporation/medals_spec.rb +21 -0
  73. data/spec/lib/eve/api/calls/corporation/member_medals_spec.rb +21 -0
  74. data/spec/lib/eve/api/calls/corporation/member_security_log_spec.rb +24 -0
  75. data/spec/lib/eve/api/calls/corporation/member_security_spec.rb +25 -0
  76. data/spec/lib/eve/api/calls/corporation/member_tracking_spec.rb +22 -0
  77. data/spec/lib/eve/api/calls/corporation/shareholders_spec.rb +23 -0
  78. data/spec/lib/eve/api/calls/corporation/standings_spec.rb +30 -0
  79. data/spec/lib/eve/api/calls/corporation/starbase_detail_spec.rb +32 -0
  80. data/spec/lib/eve/api/calls/corporation/starbase_list_spec.rb +22 -0
  81. data/spec/lib/eve/api/calls/corporation/titles_spec.rb +26 -0
  82. data/spec/lib/eve/api/calls/corporation/wallet_journal_spec.rb +22 -0
  83. data/spec/lib/eve/api/calls/corporation/wallet_transactions_spec.rb +22 -0
  84. data/spec/lib/eve/api/calls/empty_call_spec.rb +29 -0
  85. data/spec/lib/eve/api/calls/eve/alliance_list_spec.rb +26 -0
  86. data/spec/lib/eve/api/calls/eve/certificate_tree_spec.rb +18 -0
  87. data/spec/lib/eve/api/calls/eve/character_id_spec.rb +27 -0
  88. data/spec/lib/eve/api/calls/eve/conquerable_station_list_spec.rb +11 -0
  89. data/spec/lib/eve/api/calls/eve/error_list_spec.rb +21 -0
  90. data/spec/lib/eve/api/calls/eve/fac_war_stats_spec.rb +25 -0
  91. data/spec/lib/eve/api/calls/eve/fac_war_top_stats_spec.rb +54 -0
  92. data/spec/lib/eve/api/calls/eve/ref_types_spec.rb +11 -0
  93. data/spec/lib/eve/api/calls/eve/skill_tree_spec.rb +17 -0
  94. data/spec/lib/eve/api/calls/map/fac_war_systems_spec.rb +11 -0
  95. data/spec/lib/eve/api/calls/map/jumps_spec.rb +11 -0
  96. data/spec/lib/eve/api/calls/map/kills_spec.rb +15 -0
  97. data/spec/lib/eve/api/calls/map/sovereignty_spec.rb +11 -0
  98. data/spec/lib/eve/api/calls/server_status_spec.rb +24 -0
  99. data/spec/lib/eve/api/request_spec.rb +17 -0
  100. data/spec/lib/eve/api/response/error_spec.rb +13 -0
  101. data/spec/lib/eve/api/response/rowset_spec.rb +28 -0
  102. data/spec/lib/eve/api/response_spec.rb +79 -0
  103. data/spec/lib/eve/api_spec.rb +13 -0
  104. data/spec/lib/eve/core_extensions/hash_spec.rb +23 -0
  105. data/spec/lib/eve/core_extensions/string_spec.rb +8 -0
  106. data/spec/lib/eve/helpers/javascript_helper_spec.rb +80 -0
  107. data/spec/lib/eve/helpers/view_helper_spec.rb +12 -0
  108. data/spec/lib/eve/trust/controller_helpers_spec.rb +70 -0
  109. data/spec/lib/eve/trust/igb_interface_spec.rb +102 -0
  110. data/spec/rcov.opts +2 -0
  111. data/spec/readme_spec.rb +36 -0
  112. data/spec/sample_api_key.yml +20 -0
  113. data/spec/spec.opts +4 -0
  114. data/spec/spec_helper.rb +22 -0
  115. data/spec/support/behaves_like_rowset.rb +50 -0
  116. data/spec/support/controllers/trust_controller.rb +7 -0
  117. data/spec/support/jpg/mock_portrait.jpg +0 -0
  118. data/spec/support/mock_api_helpers.rb +41 -0
  119. data/spec/support/xml/account/characters.xml +15 -0
  120. data/spec/support/xml/character/account_balance.xml +10 -0
  121. data/spec/support/xml/character/asset_list.xml +50 -0
  122. data/spec/support/xml/character/character_sheet.xml +65 -0
  123. data/spec/support/xml/character/fac_war_stats.xml +20 -0
  124. data/spec/support/xml/character/industry_jobs.xml +70 -0
  125. data/spec/support/xml/character/kill_log.xml +51 -0
  126. data/spec/support/xml/character/mail_messages.xml +12 -0
  127. data/spec/support/xml/character/mailing_lists.xml +12 -0
  128. data/spec/support/xml/character/market_orders.xml +11 -0
  129. data/spec/support/xml/character/medals.xml +13 -0
  130. data/spec/support/xml/character/research.xml +13 -0
  131. data/spec/support/xml/character/skill_in_training.xml +14 -0
  132. data/spec/support/xml/character/skill_not_in_training.xml +7 -0
  133. data/spec/support/xml/character/skill_queue.xml +11 -0
  134. data/spec/support/xml/character/standings.xml +32 -0
  135. data/spec/support/xml/character/wallet_journal.xml +39 -0
  136. data/spec/support/xml/character/wallet_transactions.xml +44 -0
  137. data/spec/support/xml/corporation/account_balance.xml +15 -0
  138. data/spec/support/xml/corporation/asset_list.xml +50 -0
  139. data/spec/support/xml/corporation/container_log.xml +32 -0
  140. data/spec/support/xml/corporation/fac_war_stats.xml +19 -0
  141. data/spec/support/xml/corporation/industry_jobs.xml +70 -0
  142. data/spec/support/xml/corporation/kill_log.xml +51 -0
  143. data/spec/support/xml/corporation/market_orders.xml +37 -0
  144. data/spec/support/xml/corporation/medals.xml +8 -0
  145. data/spec/support/xml/corporation/member_corporation_sheet.xml +51 -0
  146. data/spec/support/xml/corporation/member_medals.xml +10 -0
  147. data/spec/support/xml/corporation/member_security.xml +21 -0
  148. data/spec/support/xml/corporation/member_security_log.xml +55 -0
  149. data/spec/support/xml/corporation/member_tracking.xml +18 -0
  150. data/spec/support/xml/corporation/non_member_corporation_sheet.xml +30 -0
  151. data/spec/support/xml/corporation/shareholders.xml +11 -0
  152. data/spec/support/xml/corporation/standings.xml +33 -0
  153. data/spec/support/xml/corporation/starbase_detail.xml +33 -0
  154. data/spec/support/xml/corporation/starbase_list.xml +17 -0
  155. data/spec/support/xml/corporation/titles.xml +34 -0
  156. data/spec/support/xml/corporation/wallet_journal.xml +40 -0
  157. data/spec/support/xml/corporation/wallet_transactions.xml +12 -0
  158. data/spec/support/xml/errors/106.xml +5 -0
  159. data/spec/support/xml/errors/516.xml +5 -0
  160. data/spec/support/xml/eve/alliance_list.xml +22 -0
  161. data/spec/support/xml/eve/certificate_tree.xml +49 -0
  162. data/spec/support/xml/eve/character_id.xml +15 -0
  163. data/spec/support/xml/eve/conquerable_station_list.xml +24 -0
  164. data/spec/support/xml/eve/error_list.xml +78 -0
  165. data/spec/support/xml/eve/fac_war_stats.xml +31 -0
  166. data/spec/support/xml/eve/fac_war_top_stats.xml +238 -0
  167. data/spec/support/xml/eve/ref_types.xml +105 -0
  168. data/spec/support/xml/eve/skill_tree.xml +52 -0
  169. data/spec/support/xml/map/fac_war_systems.xml +180 -0
  170. data/spec/support/xml/map/jumps.xml +166 -0
  171. data/spec/support/xml/map/kills.xml +191 -0
  172. data/spec/support/xml/map/sovereignty.xml +20 -0
  173. data/spec/support/xml/rowset_with_mismatched_attributes.xml +6 -0
  174. data/spec/support/xml/server/server_status.xml +9 -0
  175. metadata +364 -0
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Eve do
4
+ context "#ref_types" do
5
+ subject { mock_service(:eve, :ref_types) }
6
+
7
+ it "produces a hash with 96 entries" do
8
+ subject.should have(96).entries
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Eve do
4
+ context "#skill_tree" do
5
+ subject { mock_service(:eve, :skill_tree).skill_groups }
6
+
7
+ it "contains rows of skills" do
8
+ subject.should behave_like_rowset('groupName,groupID') do |group|
9
+ group.skills.should behave_like_rowset('typeName,groupID,typeID') do |skill|
10
+ for field in %w(description rank required_skills required_attributes skill_bonus_collection)
11
+ skill.should respond_to(field)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Map do
4
+ context "#fac_war_systems" do
5
+ subject { mock_service('map', 'fac_war_systems').solar_systems }
6
+
7
+ it "should behave like a Rowset" do
8
+ subject.should behave_like_rowset("solarSystemID,solarSystemName,occupyingFactionID,occupyingFactionName,contested")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Map do
4
+ context "#jumps" do
5
+ subject { mock_service('map', 'jumps').solar_systems }
6
+
7
+ it "should behave like a Rowset" do
8
+ subject.should behave_like_rowset('solarSystemID,shipJumps')
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Map do
4
+ context "#kills" do
5
+ subject { mock_service('map', 'kills').solar_systems }
6
+
7
+ it "should behave like a Rowset" do
8
+ subject.should behave_like_rowset("solarSystemID,shipKills,factionKills,podKills")
9
+ end
10
+
11
+ it "produces a RowSet called :solar_systems" do
12
+ subject.should be_kind_of(Eve::API::Response::Rowset)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Services::Map do
4
+ context "#sovereignty" do
5
+ subject { mock_service('map', 'sovereignty').solar_systems }
6
+
7
+ it "should behave like a Rowset" do
8
+ subject.should behave_like_rowset("solarSystemID,allianceID,factionID,solarSystemName,corporationID")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API do
4
+ context "#server_status" do
5
+ before(:each) { @result = mock_service('server', 'server_status').server_status }
6
+ subject { Eve::API.new }
7
+
8
+ it "should respond to current_time" do
9
+ @result.should respond_to(:current_time)
10
+ end
11
+ it "should respond to api_version" do
12
+ @result.should respond_to(:api_version)
13
+ end
14
+ it "should respond to server_open" do
15
+ @result.should respond_to(:server_open)
16
+ end
17
+ it "should respond to online_players" do
18
+ @result.should respond_to(:online_players)
19
+ end
20
+ it "should respond to cached_until" do
21
+ @result.should respond_to(:cached_until)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Request do
4
+ subject { Eve::API::Request.new('server', 'server_status') }
5
+
6
+ it "should dispatch and return a Response" do
7
+ response = subject.dispatch
8
+ response.should be_a(Eve::API::Response)
9
+ end
10
+
11
+ it "should cache repeat requests" do
12
+ Eve.cache.delete_matched /#{Regexp.escape subject.namespace}\/#{Regexp.escape subject.service}/
13
+ Net::HTTP.should_receive(:post_form).once.and_return(mock_http_response(subject.namespace, subject.service))
14
+ subject.dispatch
15
+ subject.dispatch
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Response do
4
+ %w(106 516).each do |code|
5
+ context "with error #{code}" do
6
+ subject { mock_service("xml/errors/#{code}.xml", :cache => false) }
7
+
8
+ it("should raise a #{code} error") do
9
+ proc { subject.server_status }.should raise_error(Eve::Errors::API_ERROR_MAP[code.to_i])
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Response::Rowset do
4
+ context "with mismatched attributes" do
5
+ subject do
6
+ Eve::API::Response::Rowset.new(Hpricot::XML(mock_response_body('xml/rowset_with_mismatched_attributes.xml')).root)
7
+ end
8
+
9
+ # Note, in order to address /char/character_sheet (which provides 2 optional attributes, 'level' and 'unpublished',
10
+ # this requirement has been removed.
11
+ #
12
+ # TODO: See if this is an error in the mock XML, or if these attributes are really optional.
13
+ #
14
+ #it "should raise an InvalidRowset error" do
15
+ # proc { subject }.should raise_error(Eve::Errors::InvalidRowset)
16
+ #end
17
+ end
18
+
19
+ context "with a sovereignty map" do
20
+ subject do
21
+ Eve::API::Response::Rowset.new((Hpricot::XML(mock_response_body('map', 'sovereignty')).root / "rowset").first)
22
+ end
23
+
24
+ it "should define row attributes as methods" do
25
+ subject[0].should respond_to(:solar_system_id)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API::Response do
4
+ context "server_status" do
5
+ subject do
6
+ Eve::API::Response.new(mock_http_response(:server, :server_status).body)
7
+ end
8
+
9
+ it "should be convertible to Hash" do
10
+ subject.to_hash.should == {"current_time"=>DateTime.parse("Wed, 10 Mar 2010 01:03:36 +0000"),
11
+ "cached_until"=>DateTime.parse("Sat, 10 Mar 2040 01:06:36 +0000"),
12
+ "online_players"=>31835,
13
+ "server_open"=>true,
14
+ "api_version"=>"2"}
15
+ end
16
+
17
+ it "should be convertible to YAML" do
18
+ subject.to_yaml.should == subject.to_hash.to_yaml
19
+ end
20
+
21
+ it "should respond_to :api_version" do
22
+ should respond_to(:api_version)
23
+ end
24
+
25
+ it "should respond_to :current_time" do
26
+ should respond_to(:current_time)
27
+ end
28
+
29
+ it "should respond_to :server_open" do
30
+ should respond_to(:server_open)
31
+ end
32
+
33
+ it "should respond_to :online_players" do
34
+ should respond_to(:online_players)
35
+ end
36
+
37
+ it "should respond_to :cached_until" do
38
+ should respond_to(:cached_until)
39
+ end
40
+
41
+ it "should provide access to attributes via [] operator" do
42
+ subject[:api_version].should_not be_nil
43
+ end
44
+
45
+ it "should provide access to attributes via [] operator" do
46
+ subject[:apiVersion].should_not be_nil
47
+ end
48
+
49
+ it "should provide access to attributes via [] operator" do
50
+ subject[:online_players].should_not be_nil
51
+ end
52
+
53
+ it "should provide access to attributes via [] operator" do
54
+ subject[:onlinePlayers].should_not be_nil
55
+ end
56
+ end
57
+
58
+ context "with a rowset" do
59
+ subject do
60
+ Eve::API::Response.new(mock_http_response(:map, :sovereignty).body)
61
+ end
62
+
63
+ it "delegates the name of the rowset into the rowset from the response object" do
64
+ subject.should respond_to(:solar_systems)
65
+ end
66
+
67
+ it "defines rowset attributes: #name" do
68
+ subject.solar_systems.name.should == 'solarSystems'
69
+ end
70
+
71
+ it "defines rowset attributes: #key" do
72
+ subject.solar_systems.key.should == 'solarSystemID'
73
+ end
74
+
75
+ it "defines rowset attributes: #columns" do
76
+ subject.solar_systems.columns.should == %w(solarSystemID allianceID factionID solarSystemName corporationID)
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::API do
4
+ it "should update options with #set, given 2 arguments" do
5
+ subject.set(:api_key, $limited_api_key)
6
+ subject[:api_key].should == $limited_api_key
7
+ end
8
+
9
+ it "should update options with #set, given a hash" do
10
+ subject.set(:api_key => $full_api_key)
11
+ subject[:api_key].should == $full_api_key
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hash do
4
+ it "#without" do
5
+ { :a => 1, :b => 2, :c => 3 }.without(:a, :b).should == {:c => 3}
6
+ end
7
+
8
+ it "#without_values" do
9
+ { :a => 1, :b => 1, :c => 2, :d => 2}.without_values(1).should == {:c => 2, :d => 2}
10
+ end
11
+
12
+ it "#optionalize" do
13
+ { :a => nil, :b => nil, :c => 1, :d => 2 }.optionalize.should == { :c => 1, :d => 2}
14
+ end
15
+
16
+ it "#camelize_keys" do
17
+ { :hello_world => 1, :goodbye_john => 2}.camelize_keys.should == { 'HelloWorld' => 1, 'GoodbyeJohn' => 2 }
18
+ end
19
+
20
+ it "#rename" do
21
+ { :a => 1, :b => 2 }.rename(:a => :b, :b => :c).should == { :b => 1, :c => 2 }
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe String do
4
+ it "#dehumanize" do
5
+ "say_hello_to_the_world".camelize.dehumanize.should == "sayHelloToTheWorld"
6
+ "Say hello to the world".dehumanize.should == "say_hello_to_the_world"
7
+ end
8
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::Helpers::JavascriptHelper do
4
+ subject { ActionView::Base.new }
5
+
6
+ it "should link to mailing list" do
7
+ subject.link_to_mailing_list("link", '1').should == '<a href="#" onclick="CCPEVE.joinMailingList(&quot;1&quot;); return false;">link</a>'
8
+ end
9
+
10
+ it "should link to channel" do
11
+ subject.link_to_channel("link", '1').should == '<a href="#" onclick="CCPEVE.joinChannel(&quot;1&quot;); return false;">link</a>'
12
+ end
13
+
14
+ it "should link to waypoing" do
15
+ subject.link_to_waypoint("link", '1').should == '<a href="#" onclick="CCPEVE.addWaypoint(&quot;1&quot;); return false;">link</a>'
16
+ end
17
+
18
+ it "should link to destination" do
19
+ subject.link_to_destination("link", '1').should == '<a href="#" onclick="CCPEVE.setDestination(&quot;1&quot;); return false;">link</a>'
20
+ end
21
+
22
+ it "should request trust" do
23
+ subject.request_trust("link").should == "<script type=\"text/javascript\">\n//<![CDATA[\nCCPEVE.requestTrust(\"link\");\n//]]>\n</script>"
24
+ end
25
+
26
+ it "should link to trust request" do
27
+ subject.link_to_trust_request("link", '1').should == '<a href="#" onclick="CCPEVE.requestTrust(&quot;1&quot;); return false;">link</a>'
28
+ end
29
+
30
+ it "should link to market details" do
31
+ subject.link_to_market_details("link", '1').should == '<a href="#" onclick="CCPEVE.showMarketDetails(&quot;1&quot;); return false;">link</a>'
32
+ end
33
+
34
+ it "should link to contract" do
35
+ subject.link_to_contract("link", '1', '2').should == '<a href="#" onclick="CCPEVE.showContract(&quot;1&quot;, &quot;2&quot;); return false;">link</a>'
36
+ end
37
+
38
+ it "should link to fitting" do
39
+ subject.link_to_fitting("link", '1').should == '<a href="#" onclick="CCPEVE.showFitting(&quot;1&quot;); return false;">link</a>'
40
+ end
41
+
42
+ it "should link to map" do
43
+ subject.link_to_route("link", '1').should == '<a href="#" onclick="CCPEVE.showRouteTo(&quot;1&quot;); return false;">link</a>'
44
+ end
45
+
46
+ it "should link to route" do
47
+ subject.link_to_route("link", '1').should == '<a href="#" onclick="CCPEVE.showRouteTo(&quot;1&quot;); return false;">link</a>'
48
+ subject.link_to_route("link", '1', '2').should == '<a href="#" onclick="CCPEVE.showRouteTo(&quot;1&quot;, &quot;2&quot;); return false;">link</a>'
49
+ end
50
+
51
+ it "should link to preview" do
52
+ subject.link_to_preview("link", '1').should == '<a href="#" onclick="CCPEVE.showPreview(&quot;1&quot;); return false;">link</a>'
53
+ end
54
+
55
+ it "should link to showinfo" do
56
+ subject.link_to_info("link", "typeid").should == '<a href="#" onclick="CCPEVE.showInfo(&quot;typeid&quot;); return false;">link</a>'
57
+ subject.link_to_info("link", 1, 2).should == '<a href="#" onclick="CCPEVE.showInfo(1, 2); return false;">link</a>'
58
+ end
59
+
60
+ it "should link to evemail" do
61
+ subject.link_to_evemail("link").should == '<a href="#" onclick="CCPEVE.openEveMail(); return false;">link</a>'
62
+ end
63
+
64
+ context '#type_id' do
65
+ it "should raise ArgumentError if type doesn't match" do
66
+ proc { subject.type_id('something that is completely invalid') }.should raise_error(ArgumentError)
67
+ end
68
+
69
+ it 'should return valid ID when given a valid argument' do
70
+ subject.type_id('Alliance').should == 16159
71
+ subject.type_id('Character').should == 1377
72
+ subject.type_id(:corporation).should == 2
73
+ subject.type_id(:constellation).should == 4
74
+ subject.type_id(:region).should == 3
75
+ subject.type_id(:solar_system).should == 5
76
+ subject.type_id("Solar System").should == 5
77
+ subject.type_id(:station).should == 3867
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::Helpers::ViewHelper do
4
+ subject do
5
+ env = Rack::MockRequest.env_for("/").merge('REQUEST_URI' => '', 'HTTP_USER_AGENT' => 'eve-minibrowser')
6
+ ActionView::Base.new([], {}, TrustController.call(env).template.controller)
7
+ end
8
+
9
+ it "should delegate #igb into #controller" do
10
+ subject.igb.should be_kind_of(Eve::Trust::IgbInterface)
11
+ end
12
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe Eve::Trust::ControllerHelpers do
4
+ subject do
5
+ subject = TrustController.call(@rack_env)
6
+ if exception = subject.template.instance_variable_get("@exception")
7
+ raise exception
8
+ end
9
+ subject
10
+ end
11
+
12
+ it "should not consider the helper methods to be actions" do
13
+ TrustController.action_methods.sort.should == %w(index)
14
+ end
15
+
16
+ context "from the IGB" do
17
+ before :all do
18
+ @rack_env = Rack::MockRequest.env_for("/").merge('REQUEST_URI' => '', 'HTTP_USER_AGENT' => 'eve-minibrowser')
19
+ end
20
+
21
+ context "without trust" do
22
+ it "should require trust" do
23
+ subject.headers['eve.trustme'].should_not be_blank
24
+ end
25
+ end
26
+
27
+ context "with trust" do
28
+
29
+ end
30
+
31
+ context "and an IGB template exists" do
32
+ before(:all) { @rack_env.merge!('mock_methods' => { :default_template_exists? => true }) }
33
+ it "responds with an IGB-specific page" do
34
+ subject.template.template_format.should == :igb
35
+ end
36
+ end
37
+
38
+ context "and an IGB template does not exist" do
39
+ before(:all) { @rack_env.merge!('mock_methods' => { :default_template_exists? => false }) }
40
+ it "does not respond with an IGB-specific page" do
41
+ subject.template.template_format.should_not == :igb
42
+ end
43
+ end
44
+ end
45
+
46
+ context "from any other browser" do
47
+ before :all do
48
+ @rack_env = Rack::MockRequest.env_for("/").merge('REQUEST_URI' => '',
49
+ 'HTTP_USER_AGENT' => 'Mozilla/5.001 (windows; U; NT4.0; en-US; rv:1.0) Gecko/25250101')
50
+ end
51
+
52
+ it "should not require trust" do
53
+ subject.headers['eve.trustme'].should be_blank
54
+ end
55
+
56
+ context "and an IGB template exists" do
57
+ before(:all) { @rack_env.merge!('mock_methods' => { :default_template_exists? => true }) }
58
+ it "does not respond with an IGB-specific page" do
59
+ subject.template.template_format.should_not == :igb
60
+ end
61
+ end
62
+
63
+ context "and an IGB template does not exist" do
64
+ before(:all) { @rack_env.merge!('mock_methods' => { :default_template_exists? => false }) }
65
+ it "does not respond with an IGB-specific page" do
66
+ subject.template.template_format.should_not == :igb
67
+ end
68
+ end
69
+ end
70
+ end