jpmobile 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/Gemfile +10 -8
  2. data/README.rdoc +1 -1
  3. data/Rakefile +13 -5
  4. data/VERSION.yml +1 -1
  5. data/lib/jpmobile/helpers.rb +1 -1
  6. data/lib/jpmobile/rack/filter.rb +2 -7
  7. data/lib/tasks/jpmobile_tasks.rake +1 -1
  8. data/spec/rack/jpmobile/emoticon_spec.rb +17 -9
  9. data/spec/rack/jpmobile/filter_spec.rb +92 -18
  10. data/spec/rack_helper.rb +2 -0
  11. data/spec/spec_helper.rb +0 -26
  12. data/test/rails/overrides/spec/helpers/helpers_spec.rb +1 -1
  13. data/test/rails/rails_root/app/controllers/application_controller.rb +5 -0
  14. data/test/rails/rails_root/app/controllers/docomo_guid_always_controller.rb +3 -0
  15. data/test/rails/rails_root/app/controllers/docomo_guid_base_controller.rb +5 -0
  16. data/test/rails/rails_root/app/controllers/docomo_guid_docomo_controller.rb +3 -0
  17. data/test/rails/rails_root/app/controllers/filter_controller.rb +3 -0
  18. data/test/rails/rails_root/app/controllers/filter_controller_base.rb +25 -0
  19. data/test/rails/rails_root/app/controllers/hankaku_filter_controller.rb +3 -0
  20. data/test/rails/rails_root/app/controllers/hankaku_input_filter_controller.rb +7 -0
  21. data/test/rails/rails_root/app/controllers/links_controller.rb +28 -0
  22. data/test/rails/rails_root/app/controllers/mobile_spec_controller.rb +5 -0
  23. data/test/rails/rails_root/app/controllers/template_path_controller.rb +9 -0
  24. data/test/rails/rails_root/app/controllers/trans_sid_always_and_session_off_controller.rb +4 -0
  25. data/test/rails/rails_root/app/controllers/trans_sid_always_controller.rb +3 -0
  26. data/test/rails/rails_root/app/controllers/trans_sid_base_controller.rb +40 -0
  27. data/test/rails/rails_root/app/controllers/trans_sid_metal_controller.rb +15 -0
  28. data/test/rails/rails_root/app/controllers/trans_sid_mobile_controller.rb +3 -0
  29. data/test/rails/rails_root/app/controllers/trans_sid_none_controller.rb +3 -0
  30. data/test/rails/rails_root/app/helpers/application_helper.rb +2 -0
  31. data/test/rails/rails_root/app/models/user.rb +2 -0
  32. data/test/rails/rails_root/autotest/discover.rb +2 -0
  33. data/test/rails/rails_root/config/application.rb +42 -0
  34. data/test/rails/rails_root/config/boot.rb +13 -0
  35. data/test/rails/rails_root/config/environment.rb +5 -0
  36. data/test/rails/rails_root/config/environments/development.rb +26 -0
  37. data/test/rails/rails_root/config/environments/production.rb +49 -0
  38. data/test/rails/rails_root/config/environments/test.rb +35 -0
  39. data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +7 -0
  40. data/test/rails/rails_root/config/initializers/inflections.rb +10 -0
  41. data/test/rails/rails_root/config/initializers/jpmobile_generator.rb +2 -0
  42. data/test/rails/rails_root/config/initializers/mime_types.rb +5 -0
  43. data/test/rails/rails_root/config/initializers/secret_token.rb +7 -0
  44. data/test/rails/rails_root/config/initializers/session_store.rb +2 -0
  45. data/test/rails/rails_root/config/routes.rb +7 -0
  46. data/test/rails/rails_root/db/migrate/001_add_sessions_table.rb +16 -0
  47. data/test/rails/rails_root/db/migrate/20100824062306_create_users.rb +13 -0
  48. data/test/rails/rails_root/db/schema.rb +31 -0
  49. data/test/rails/rails_root/db/seeds.rb +7 -0
  50. data/test/rails/rails_root/spec/helpers/helpers_spec.rb +15 -0
  51. data/test/rails/rails_root/spec/requests/docomo_guid_spec.rb +102 -0
  52. data/test/rails/rails_root/spec/requests/docomo_spec.rb +33 -0
  53. data/test/rails/rails_root/spec/requests/emobile_spec.rb +53 -0
  54. data/test/rails/rails_root/spec/requests/filter_spec.rb +221 -0
  55. data/test/rails/rails_root/spec/requests/helpers_spec.rb +187 -0
  56. data/test/rails/rails_root/spec/requests/pc_spec.rb +22 -0
  57. data/test/rails/rails_root/spec/requests/softbank_emulator_spec.rb +21 -0
  58. data/test/rails/rails_root/spec/requests/template_path_spec.rb +234 -0
  59. data/test/rails/rails_root/spec/requests/trans_sid_spec.rb +207 -0
  60. data/test/rails/rails_root/spec/spec_helper.rb +32 -0
  61. data/test/rails/rails_root/test/performance/browsing_test.rb +9 -0
  62. data/test/rails/rails_root/test/test_helper.rb +13 -0
  63. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
  64. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
  65. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
  66. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
  67. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
  68. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
  69. data/test/rails/rails_root/vendor/plugins/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
  70. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
  71. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
  72. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
  73. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/spec_helper.rb +2 -0
  74. data/test/rails/rails_root/vendor/plugins/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
  75. data/test/rails/rails_root/vendor/plugins/jpmobile/init.rb +3 -0
  76. data/test/rails/rails_root/vendor/plugins/jpmobile/install.rb +1 -0
  77. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +56 -0
  78. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/datum_conv.rb +72 -0
  79. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/docomo_guid.rb +43 -0
  80. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/email.rb +18 -0
  81. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +141 -0
  82. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/au.rb +1287 -0
  83. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/conversion_table.rb +3909 -0
  84. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/docomo.rb +255 -0
  85. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/softbank.rb +477 -0
  86. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/z_combine.rb +33 -0
  87. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/encoding.rb +29 -0
  88. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +113 -0
  89. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +174 -0
  90. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +31 -0
  91. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +87 -0
  92. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +99 -0
  93. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/android.rb +10 -0
  94. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +108 -0
  95. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/ddipocket.rb +12 -0
  96. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +128 -0
  97. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/emobile.rb +16 -0
  98. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/iphone.rb +26 -0
  99. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/smart_phone.rb +21 -0
  100. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +62 -0
  101. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/vodafone.rb +17 -0
  102. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/willcom.rb +28 -0
  103. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/windows_phone.rb +10 -0
  104. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/position.rb +68 -0
  105. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack.rb +49 -0
  106. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/filter.rb +50 -0
  107. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/mobile_carrier.rb +33 -0
  108. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb +47 -0
  109. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rails.rb +23 -0
  110. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/request_with_mobile.rb +45 -0
  111. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +133 -0
  112. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +97 -0
  113. data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/conversion-table.rb +2588 -0
  114. data/test/rails/rails_root/vendor/plugins/jpmobile/tmp/utf8_to_image.rb +1407 -0
  115. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/emoji/genregexp.rb +47 -0
  116. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_au_emoticon_table.rb +34 -0
  117. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_docomo_emoticon_table.rb +33 -0
  118. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_emoticon_conversion_table.rb +107 -0
  119. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/generate_softbank_emoticon_table.rb +31 -0
  120. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/list_gps_unsupported_au.rb +23 -0
  121. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile-ipaddresses.rb +18 -0
  122. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/abstract_ip_addresses.rb +23 -0
  123. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/au.rb +40 -0
  124. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/docomo.rb +22 -0
  125. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/emobile.rb +15 -0
  126. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/softbank.rb +20 -0
  127. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-ipaddresses/lib/jpmobile/mobile/ip_addresses/willcom.rb +158 -0
  128. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile-terminfo.rb +9 -0
  129. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo.rb +62 -0
  130. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/lib/jpmobile/mobile/terminfo/docomo.rb +739 -0
  131. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/spec_helper.rb +2 -0
  132. data/test/rails/rails_root/vendor/plugins/jpmobile/vendor/jpmobile-terminfo/spec/terminfo_spec.rb +54 -0
  133. metadata +368 -75
  134. data/.rspec +0 -5
  135. data/jpmobile.gemspec +0 -237
  136. data/test/rails/.gitignore +0 -1
  137. data/test/rails/overrides/.rspec +0 -5
  138. data/test/rails/overrides/Gemfile +0 -33
  139. data/test/rails/overrides/app/views/filter/index.html.erb +0 -0
  140. data/test/rails/overrides/app/views/hankaku_filter/index.html.erb +0 -0
  141. data/test/rails/overrides/app/views/hankaku_input_filter/index.html.erb +0 -0
  142. data/test/rails/overrides/app/views/hankaku_input_filter/index_xhtml.html.erb +0 -1
  143. data/test/rails/overrides/app/views/layouts/xhtml.html.erb +0 -12
  144. data/test/rails/overrides/app/views/links/au_gps.html.erb +0 -1
  145. data/test/rails/overrides/app/views/links/au_location.html.erb +0 -1
  146. data/test/rails/overrides/app/views/links/docomo_foma_gps.html.erb +0 -1
  147. data/test/rails/overrides/app/views/links/docomo_openiarea.html.erb +0 -1
  148. data/test/rails/overrides/app/views/links/docomo_utn.html.erb +0 -1
  149. data/test/rails/overrides/app/views/links/link.html.erb +0 -1
  150. data/test/rails/overrides/app/views/links/show_all.html.erb +0 -1
  151. data/test/rails/overrides/app/views/links/softbank_location.html.erb +0 -1
  152. data/test/rails/overrides/app/views/links/willcom_location.html.erb +0 -1
  153. data/test/rails/overrides/app/views/template_path/_partial.html.erb +0 -1
  154. data/test/rails/overrides/app/views/template_path/_partial_mobile.html.erb +0 -1
  155. data/test/rails/overrides/app/views/template_path/_partial_mobile_docomo.html.erb +0 -1
  156. data/test/rails/overrides/app/views/template_path/_partial_smart_phone.html.erb +0 -1
  157. data/test/rails/overrides/app/views/template_path/_partial_smart_phone_iphone.html.erb +0 -1
  158. data/test/rails/overrides/app/views/template_path/index.html.erb +0 -1
  159. data/test/rails/overrides/app/views/template_path/index_mobile.html.erb +0 -1
  160. data/test/rails/overrides/app/views/template_path/index_mobile_docomo.html.erb +0 -1
  161. data/test/rails/overrides/app/views/template_path/index_smart_phone.html.erb +0 -1
  162. data/test/rails/overrides/app/views/template_path/index_smart_phone_iphone.html.erb +0 -1
  163. data/test/rails/overrides/app/views/template_path/partial.html.erb +0 -2
  164. data/test/rails/overrides/app/views/template_path/show_mobile.html.erb +0 -1
  165. data/test/rails/overrides/app/views/template_path/show_mobile_docomo.html.erb +0 -1
  166. data/test/rails/overrides/spec/rcov.opts +0 -2
@@ -0,0 +1,187 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.dirname(__FILE__) + '/../spec_helper'
3
+ require 'nokogiri'
4
+
5
+ describe Jpmobile::Helpers do
6
+ # 文字列 +str+ 中に含まれるリンクについて、
7
+ # リンクテキスト、属性のHash、URLのqueryをのぞいた部分、ueryをHashにしたもの
8
+ # の3要素からなる配列の配列で返す。
9
+ def get_href_and_texts(str)
10
+ results = []
11
+ (Nokogiri::HTML.parse(str)/"a").each do |link|
12
+ path, query = link["href"].split(/\?/, 2)
13
+ params = query.nil? ? nil : Rack::Utils.parse_query(query)
14
+ results << [link.inner_html, link.attributes, path, params]
15
+ end
16
+ return results
17
+ end
18
+
19
+ it "get_position_link_to_がエラー無く終わるか" do
20
+ lambda {
21
+ get "/links/show_all", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
22
+ }.should_not raise_error
23
+ end
24
+
25
+ context "docomo で" do
26
+ it "get_position_link_to が正常に表示されること" do
27
+ get "/links/link", {}, { "HTTP_USER_AGENT" => "DoCoMo/2.0 SH903i(c100;TB;W24H16)"}
28
+ links = get_href_and_texts(body)
29
+
30
+ links.size.should == 1
31
+ text, attrs, path, params = links.first
32
+ text.should == "STRING"
33
+ path.should == "http://www.example.com/links/link"
34
+ body.should =~ /lcs>/
35
+ end
36
+
37
+ it "docomo_utn_link_to が正しく出力されること" do
38
+ get "/links/docomo_utn", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
39
+ links = get_href_and_texts(body)
40
+
41
+ links.size.should == 1
42
+ text, attrs, path, params = links.first
43
+ text.should == "STRING"
44
+ path.should == "http://www.example.com/links/docomo_utn"
45
+ body.should =~ /utn>/
46
+ end
47
+
48
+ it "オープンiエリア取得用のリンクが正しく出力されること" do
49
+ get "/links/docomo_openiarea", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
50
+ links = get_href_and_texts(body)
51
+
52
+ links.size.should == 1
53
+ text, attrs, path, params = links.first
54
+ text.should == "STRING"
55
+ path.should == "http://w1m.docomo.ne.jp/cp/iarea"
56
+ params["ecode"].should == "OPENAREACODE"
57
+ params["msn"].should == "OPENAREAKEY"
58
+ params["posinfo"].should == "1"
59
+ params["nl"].should == "http://www.example.com/links/docomo_openiarea"
60
+ end
61
+
62
+ it "GPS取得用のリンクが正しく出力されること" do
63
+ get "/links/docomo_foma_gps", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
64
+ links = get_href_and_texts(body)
65
+
66
+ links.size.should == 1
67
+ text, attrs, path, params = links.first
68
+ text.should == "STRING"
69
+ path.should == "http://www.example.com/links/docomo_foma_gps"
70
+ body.should =~ /lcs>/
71
+ end
72
+ end
73
+
74
+ context "au で" do
75
+ # get_position_link_to(自動判別), au, location only
76
+ def test_get_position_link_to_au_location_only
77
+ get "/links/link", {}, {"HTTP_USER_AGENT" => "KDDI-SN26 UP.Browser/6.2.0.6.2 (GUI) MMP/2.0"}
78
+ links = get_href_and_texts(body)
79
+ assert_equal(1, links.size)
80
+ text, attrs, path, params = links.first
81
+ assert_equal("STRING", text)
82
+ assert_equal("device:location", path)
83
+ assert_equal("http://www.example.com/links/link", params["url"])
84
+ end
85
+
86
+ # get_position_link_to(自動判別), au, gps
87
+ def test_get_position_link_to_au_gps
88
+ get "/links/link", {}, {"HTTP_USER_AGENT" => "KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0"}
89
+ links = get_href_and_texts(body)
90
+ assert_equal(1, links.size)
91
+ text, attrs, path, params = links.first
92
+ assert_equal("STRING", text)
93
+ assert_equal("device:gpsone", path)
94
+ assert_equal("http://www.example.com/links/link", params["url"])
95
+ assert_equal("0", params["number"])
96
+ assert_equal("0", params["acry"])
97
+ assert_equal("1", params["ver"])
98
+ assert_equal("0", params["unit"])
99
+ assert_equal("0", params["datum"])
100
+ end
101
+
102
+ # au簡易位置情報取得用のリンクが正しく出力されるか。
103
+ def test_au_location_link_to
104
+ get "/links/au_location", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
105
+ links = get_href_and_texts(body)
106
+ assert_equal(1, links.size)
107
+ text, attrs, path, params = links.first
108
+ assert_equal("STRING", text)
109
+ assert_equal("device:location", path)
110
+ assert_equal("http://www.example.com/links/au_location", params["url"])
111
+ end
112
+
113
+ # au GPS位置情報取得用のリンクが正しく出力されるか。
114
+ def test_au_gps_link_to
115
+ get "/links/au_gps", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
116
+ links = get_href_and_texts(body)
117
+ assert_equal(1, links.size)
118
+ text, attrs, path, params = links.first
119
+ assert_equal("STRING", text)
120
+ assert_equal("device:gpsone", path)
121
+ assert_equal("http://www.example.com/links/au_gps", params["url"])
122
+ assert_equal("0", params["number"])
123
+ assert_equal("0", params["acry"])
124
+ assert_equal("1", params["ver"])
125
+ assert_equal("0", params["unit"])
126
+ assert_equal("0", params["datum"])
127
+ end
128
+ end
129
+
130
+ context "softbank で" do
131
+ # get_position_link_to(自動判別), Vodafone
132
+ def test_get_position_link_to_vodafone
133
+ get "/links/link", {}, {"HTTP_USER_AGENT" => "Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0"}
134
+ links = get_href_and_texts(body)
135
+ assert_equal(1, links.size)
136
+ text, attrs, path, params = links.first
137
+ assert_equal("STRING", text)
138
+ assert_equal("location:auto", path)
139
+ end
140
+
141
+ # get_position_link_to(自動判別), Softbank
142
+ def test_get_position_link_to_softbank
143
+ get "/links/link", {}, {"HTTP_USER_AGENT" => "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"}
144
+ links = get_href_and_texts(body)
145
+ assert_equal(1, links.size)
146
+ text, attrs, path, params = links.first
147
+ assert_equal("STRING", text)
148
+ assert_equal("location:auto", path)
149
+ end
150
+
151
+ # Softbank 3G 位置情報取得用のリンクが正しく出力されるか。
152
+ def test_softbank_location_link_to
153
+ get "/links/softbank_location", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
154
+ links = get_href_and_texts(body)
155
+ assert_equal(1, links.size)
156
+ text, attrs, path, params = links.first
157
+ assert_equal("STRING", text)
158
+ assert_equal("location:auto", path)
159
+ end
160
+ end
161
+
162
+ context "willcom で" do
163
+ # get_position_link_to(自動判別), Willcom
164
+ def test_get_position_link_to_willcom
165
+ get "/links/link", {}, {"HTTP_USER_AGENT" => "Mozilla/3.0(WILLCOM;KYOCERA/WX310K/2;1.2.2.16.000000/0.1/C100) Opera 7.0"}
166
+ links = get_href_and_texts(body)
167
+ assert_equal(1, links.size)
168
+ text, attrs, path, params = links.first
169
+ assert_equal("STRING", text)
170
+ assert_equal("http://location.request/dummy.cgi", path)
171
+ assert_equal("http://www.example.com/links/link", params["my"])
172
+ assert_equal("$location", params["pos"])
173
+ end
174
+
175
+ # Willcom 位置情報取得用のリンクが正しく出力されるか。
176
+ def test_willcom_location_link_to
177
+ get "/links/willcom_location", {}, {"HTTP_USER_AGENT" => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"}
178
+ links = get_href_and_texts(body)
179
+ assert_equal(1, links.size)
180
+ text, attrs, path, params = links.first
181
+ assert_equal("STRING", text)
182
+ assert_equal("http://location.request/dummy.cgi", path)
183
+ assert_equal("http://www.example.com/links/willcom_location", params["my"])
184
+ assert_equal("$location", params["pos"])
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe "PCからのアクセスの場合" do
6
+ before do
7
+ @headers = {
8
+ "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)",
9
+ }
10
+ end
11
+
12
+ it "request.mobile は nil であるべき" do
13
+ get "/mobile_spec/index", {}, @headers
14
+
15
+ request.mobile.should be_nil
16
+ end
17
+ it "request.mobile? は false であるべき" do
18
+ get "/mobile_spec/index", {}, @headers
19
+
20
+ request.mobile?.should be_false
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe "Softbank Emulator からのアクセスのとき" do
6
+ it "request.mobile は Softbank のインスタンスであること" do
7
+ get "/mobile_spec/index", {}, {"HTTP_USER_AGENT" => "Semulator"}
8
+
9
+ request.mobile.should be_an_instance_of(Jpmobile::Mobile::Softbank)
10
+ request.mobile?.should be_true
11
+ end
12
+ end
13
+
14
+ describe "Vodafone Emulator からのアクセスのとき" do
15
+ it "request.mobile は Vodafone のインスタンスであること" do
16
+ get "/mobile_spec/index", {}, {"HTTP_USER_AGENT" => "Vemulator"}
17
+
18
+ request.mobile.should be_an_instance_of(Jpmobile::Mobile::Vodafone)
19
+ request.mobile?.should be_true
20
+ end
21
+ end
@@ -0,0 +1,234 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ #
6
+ # 携帯からのアクセス
7
+ #
8
+ describe TemplatePathController, "DoCoMo SH902i からのアクセス" do
9
+ before do
10
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
11
+ end
12
+
13
+ it 'テンプレートの探索順が正しいこと' do
14
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
15
+
16
+ controller.view_paths.mobile_template_candidates.should == [ 'mobile_docomo', 'mobile' ]
17
+ end
18
+ end
19
+
20
+ describe TemplatePathController, "au CA32 からのアクセス" do
21
+ before do
22
+ @user_agent = "KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0"
23
+ end
24
+ it 'テンプレートの探索順が正しいこと' do
25
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
26
+
27
+ controller.view_paths.mobile_template_candidates.should == [ 'mobile_au', 'mobile' ]
28
+ end
29
+ end
30
+
31
+ describe TemplatePathController, "Vodafone V903T からのアクセス" do
32
+ before do
33
+ @user_agent = "Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0"
34
+ end
35
+ it 'テンプレートの探索順が正しいこと' do
36
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
37
+
38
+ controller.view_paths.mobile_template_candidates.should == [ 'mobile_vodafone', 'mobile_softbank', 'mobile' ]
39
+ end
40
+ end
41
+
42
+ describe TemplatePathController, "SoftBank 910T からのアクセス" do
43
+ before do
44
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
45
+ end
46
+ it 'テンプレートの探索順が正しいこと' do
47
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
48
+
49
+ controller.view_paths.mobile_template_candidates.should == [ 'mobile_softbank', 'mobile' ]
50
+ end
51
+ end
52
+
53
+ describe TemplatePathController, "iPhone からのアクセス" do
54
+ before do
55
+ @user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
56
+ end
57
+ it 'テンプレートの探索順が正しいこと' do
58
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
59
+
60
+ controller.view_paths.mobile_template_candidates.should == [ 'smart_phone_iphone', 'smart_phone' ]
61
+ end
62
+ end
63
+
64
+ describe TemplatePathController, "Android からのアクセス" do
65
+ before do
66
+ @user_agent = 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEriccsonSO-01B Build/R1EA018) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
67
+ end
68
+ it 'テンプレートの探索順が正しいこと' do
69
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
70
+
71
+ controller.view_paths.mobile_template_candidates.should == [ 'smart_phone_android', 'smart_phone' ]
72
+ end
73
+ end
74
+
75
+ describe TemplatePathController, "Windows Phone からのアクセス" do
76
+ before do
77
+ @user_agent = 'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)'
78
+ end
79
+ it 'テンプレートの探索順が正しいこと' do
80
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
81
+
82
+ controller.view_paths.mobile_template_candidates.should == [ 'smart_phone_windows_phone', 'smart_phone' ]
83
+ end
84
+ end
85
+
86
+ describe TemplatePathController, "integrated_views" do
87
+ describe "index" do
88
+ context "PCからのアクセスの場合" do
89
+ before do
90
+ @user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)"
91
+ end
92
+ it 'index.html.erbが使用されること' do
93
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
94
+
95
+ response.should have_tag("h1", :content => "index.html.erb")
96
+ end
97
+ end
98
+
99
+ context "DoCoMoからのアクセスの場合" do
100
+ before do
101
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
102
+ end
103
+ it 'index_mobile_docomo.html.erbが使用されること' do
104
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
105
+
106
+ response.should have_tag("h1", :content => "index_mobile_docomo.html.erb")
107
+ end
108
+
109
+ it 'show.html.erb がなくとも show_mobile_docomo.html.erbが使用されること' do
110
+ get "/template_path/show", {}, { "HTTP_USER_AGENT" => @user_agent}
111
+
112
+ response.should have_tag("h1", :content => "show_mobile_docomo.html.erb")
113
+ end
114
+ end
115
+
116
+ context "SoftBankからのアクセスの場合" do
117
+ before do
118
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
119
+ end
120
+ it 'index_mobile.html.erbが使用されること' do
121
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
122
+
123
+ response.should have_tag("h1", :content => "index_mobile.html.erb")
124
+ end
125
+
126
+ it 'show.html.erb がなくとも show_mobile.html.erbが使用されること' do
127
+ get "/template_path/show", {}, { "HTTP_USER_AGENT" => @user_agent}
128
+
129
+ response.should have_tag("h1", :content => "show_mobile.html.erb")
130
+ end
131
+ end
132
+
133
+ context "iPhoneからのアクセスの場合" do
134
+ before do
135
+ @user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
136
+ end
137
+ it 'smart_phone_iphone.html.erbが使用されること' do
138
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
139
+
140
+ response.should have_tag("h1", :content => "smart_phone_iphone.html.erb")
141
+ end
142
+ end
143
+
144
+ context "Androidからのアクセスの場合" do
145
+ before do
146
+ @user_agent = 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEriccsonSO-01B Build/R1EA018) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
147
+ end
148
+ it 'smart_phone.html.erbが使用されること' do
149
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
150
+
151
+ response.should have_tag("h1", :content => "smart_phone.html.erb")
152
+ end
153
+ end
154
+
155
+ context "Windows Phoneからのアクセスの場合" do
156
+ before do
157
+ @user_agent = 'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)'
158
+ end
159
+ it 'smart_phone.html.erbが使用されること' do
160
+ get "/template_path/index", {}, { "HTTP_USER_AGENT" => @user_agent}
161
+
162
+ response.should have_tag("h1", :content => "smart_phone.html.erb")
163
+ end
164
+ end
165
+ end
166
+
167
+ context "partial" do
168
+ context "PCからのアクセスの場合" do
169
+ before do
170
+ @user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)"
171
+ end
172
+ it '_partial.html.erbが使用されること' do
173
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
174
+
175
+ response.should have_tag("h2", :content => "_partial.html.erb")
176
+ end
177
+ end
178
+
179
+ context "DoCoMoからのアクセスの場合" do
180
+ before do
181
+ @user_agent = "DoCoMo/2.0 SH902i(c100;TB;W24H12)"
182
+ end
183
+ it '_partial_mobile_docomo.html.erbが使用されること' do
184
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
185
+
186
+ response.should have_tag("h2", :content => "_partial_mobile_docomo.html.erb")
187
+ end
188
+ end
189
+
190
+ context "SoftBankからのアクセスの場合" do
191
+ before do
192
+ @user_agent = "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
193
+ end
194
+ it '_partial_mobile.html.erbが使用されること' do
195
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
196
+
197
+ response.should have_tag("h2", :content => "_partial_mobile.html.erb")
198
+ end
199
+ end
200
+
201
+ context "iPhoneからのアクセスの場合" do
202
+ before do
203
+ @user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
204
+ end
205
+ it '_partial_smart_phone_iphone.html.erbが使用されること' do
206
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
207
+
208
+ response.should have_tag("h2", :content => "_partial_smart_phone_iphone.html.erb")
209
+ end
210
+ end
211
+
212
+ context "Androidからのアクセスの場合" do
213
+ before do
214
+ @user_agent = 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEriccsonSO-01B Build/R1EA018) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
215
+ end
216
+ it '_partial_smart_phone.html.erbが使用されること' do
217
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
218
+
219
+ response.should have_tag("h2", :content => "_partial_smart_phone.html.erb")
220
+ end
221
+ end
222
+
223
+ context "Windows Phoneからのアクセスの場合" do
224
+ before do
225
+ @user_agent = 'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)'
226
+ end
227
+ it '_partial_smart_phone.html.erbが使用されること' do
228
+ get "/template_path/partial", {}, { "HTTP_USER_AGENT" => @user_agent}
229
+
230
+ response.should have_tag("h2", :content => "_partial_smart_phone.html.erb")
231
+ end
232
+ end
233
+ end
234
+ end