jpmobile 6.1.2 → 7.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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +8 -3
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +119 -138
- data/README.md +3 -18
- data/jpmobile.gemspec +3 -4
- data/lib/jpmobile/docomo_guid.rb +2 -2
- data/lib/jpmobile/hook_action_view.rb +3 -3
- data/lib/jpmobile/hook_template_details_requested.rb +12 -0
- data/lib/jpmobile/mailer.rb +1 -1
- data/lib/jpmobile/mobile/android.rb +1 -1
- data/lib/jpmobile/mobile/android_tablet.rb +1 -1
- data/lib/jpmobile/mobile/au.rb +2 -2
- data/lib/jpmobile/mobile/black_berry.rb +1 -1
- data/lib/jpmobile/mobile/ddipocket.rb +1 -1
- data/lib/jpmobile/mobile/docomo.rb +2 -2
- data/lib/jpmobile/mobile/emobile.rb +2 -2
- data/lib/jpmobile/mobile/ipad.rb +1 -1
- data/lib/jpmobile/mobile/iphone.rb +1 -1
- data/lib/jpmobile/mobile/softbank.rb +2 -2
- data/lib/jpmobile/mobile/vodafone.rb +2 -2
- data/lib/jpmobile/mobile/willcom.rb +2 -2
- data/lib/jpmobile/mobile/windows_phone.rb +1 -1
- data/lib/jpmobile/path_set.rb +10 -36
- data/lib/jpmobile/rails.rb +2 -0
- data/lib/jpmobile/resolver.rb +44 -6
- data/lib/jpmobile/template_details.rb +38 -0
- data/lib/jpmobile/trans_sid.rb +1 -1
- data/lib/jpmobile/util.rb +1 -1
- data/lib/jpmobile/version.rb +1 -1
- data/lib/jpmobile/view_selector.rb +5 -6
- data/lib/jpmobile.rb +13 -0
- data/lib/tasks/jpmobile_tasks.rake +2 -1
- data/spec/rack/jpmobile/mobile_by_ua_spec.rb +1 -0
- data/test/rails/overrides/Gemfile.jpmobile +4 -0
- data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/template_path_controller.rb +3 -0
- data/test/rails/overrides/app/views/mobile_spec/mobile_not_exist.html.erb +3 -0
- data/test/rails/overrides/config/routes.rb +1 -1
- data/test/rails/overrides/spec/controllers/mobile_spec_controller_spec.rb +3 -3
- data/test/rails/overrides/spec/rails_helper.rb +1 -1
- data/test/rails/overrides/spec/requests/filter_spec.rb +106 -0
- data/test/rails/overrides/spec/requests/template_path_spec.rb +1 -1
- data/test/rails/overrides/spec/{features → system}/admin/top_spec.rb +2 -2
- data/test/rails/overrides/spec/{features → system}/filter_spec.rb +2 -7
- data/test/rails/overrides/spec/system/support/cuprite_setup.rb +14 -0
- data/test/rails/overrides/spec/system_helper.rb +3 -0
- metadata +23 -29
- data/test/rails/overrides/app/views/mobile_spec/no_mobile.html.erb +0 -3
@@ -4,9 +4,9 @@ module Jpmobile::Mobile
|
|
4
4
|
# スーパクラスはSoftbank。
|
5
5
|
class Vodafone < Softbank
|
6
6
|
# 対応するUser-Agentの正規表現
|
7
|
-
USER_AGENT_REGEXP = /^(Vodafone|Vemulator)
|
7
|
+
USER_AGENT_REGEXP = /^(Vodafone|Vemulator)/
|
8
8
|
# 対応するメールアドレスの正規表現
|
9
|
-
MAIL_ADDRESS_REGEXP = /.+@[dhtcrknsq]\.vodafone\.ne\.jp
|
9
|
+
MAIL_ADDRESS_REGEXP = /.+@[dhtcrknsq]\.vodafone\.ne\.jp/
|
10
10
|
|
11
11
|
# cookieに対応しているか?
|
12
12
|
def supports_cookie?
|
@@ -4,9 +4,9 @@ module Jpmobile::Mobile
|
|
4
4
|
# Ddipocketのスーパクラス。
|
5
5
|
class Willcom < AbstractMobile
|
6
6
|
# 対応するUser-Agentの正規表現
|
7
|
-
USER_AGENT_REGEXP = %r{^Mozilla/3.0\(WILLCOM}
|
7
|
+
USER_AGENT_REGEXP = %r{^Mozilla/3.0\(WILLCOM}
|
8
8
|
# 対応するメールアドレスの正規表現
|
9
|
-
MAIL_ADDRESS_REGEXP = /.+@((.+\.)?pdx\.ne\.jp|willcom\.com)
|
9
|
+
MAIL_ADDRESS_REGEXP = /.+@((.+\.)?pdx\.ne\.jp|willcom\.com)/
|
10
10
|
|
11
11
|
# 位置情報があれば Position のインスタンスを返す。無ければ +nil+ を返す。
|
12
12
|
def position
|
data/lib/jpmobile/path_set.rb
CHANGED
@@ -1,41 +1,15 @@
|
|
1
1
|
module Jpmobile
|
2
|
-
class PathSet <
|
3
|
-
|
4
|
-
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
5
|
-
def #{method}(*args)
|
6
|
-
super
|
7
|
-
typecast!
|
8
|
-
end
|
9
|
-
METHOD
|
10
|
-
end
|
2
|
+
class PathSet < ActionView::PathSet
|
3
|
+
private
|
11
4
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
each do |resolver|
|
21
|
-
templates = resolver.find_all(*args)
|
22
|
-
return templates unless templates.empty?
|
23
|
-
end
|
24
|
-
[]
|
25
|
-
end
|
26
|
-
|
27
|
-
def exists?(*args)
|
28
|
-
find_all(*args).any?
|
29
|
-
end
|
30
|
-
|
31
|
-
protected
|
32
|
-
|
33
|
-
def typecast!
|
34
|
-
each_with_index do |path, i|
|
35
|
-
path = path.to_s if path.is_a?(Pathname)
|
36
|
-
next unless path.is_a?(String)
|
37
|
-
|
38
|
-
self[i] = Jpmobile::Resolver.new(path)
|
5
|
+
def typecast(paths)
|
6
|
+
paths.map do |path|
|
7
|
+
case path
|
8
|
+
when Pathname, String
|
9
|
+
Jpmobile::Resolver.new path.to_s
|
10
|
+
else
|
11
|
+
super(paths)
|
12
|
+
end
|
39
13
|
end
|
40
14
|
end
|
41
15
|
end
|
data/lib/jpmobile/rails.rb
CHANGED
@@ -12,8 +12,10 @@ end
|
|
12
12
|
|
13
13
|
ActiveSupport.on_load(:action_view) do
|
14
14
|
require 'jpmobile/hook_action_view'
|
15
|
+
require 'jpmobile/hook_template_details_requested'
|
15
16
|
|
16
17
|
self.prepend Jpmobile::HtmlOptionsWithAcceptCharset
|
18
|
+
ActionView::TemplateDetails::Requested.prepend Jpmobile::HookTemplateDetailsRequested
|
17
19
|
end
|
18
20
|
|
19
21
|
ActiveSupport.on_load(:after_initialize) do
|
data/lib/jpmobile/resolver.rb
CHANGED
@@ -1,14 +1,52 @@
|
|
1
1
|
module Jpmobile
|
2
2
|
class Resolver < ::ActionView::FileSystemResolver
|
3
|
-
EXTENSIONS = [:locale, :formats, :handlers, :mobile].freeze
|
4
|
-
DEFAULT_PATTERN = ':prefix/:action{_:mobile,}{.:locale,}{.:formats,}{+:variants,}{.:handlers,}'.freeze
|
5
|
-
|
6
3
|
def initialize(path)
|
7
|
-
|
4
|
+
super(path)
|
5
|
+
|
6
|
+
@path_parser = Jpmobile::Resolver::PathParser.new
|
7
|
+
end
|
8
8
|
|
9
|
+
def clear_cache
|
9
10
|
super
|
10
|
-
|
11
|
-
@
|
11
|
+
|
12
|
+
@path_parser = Jpmobile::Resolver::PathParser.new
|
13
|
+
end
|
14
|
+
|
15
|
+
class PathParser < ::ActionView::Resolver::PathParser
|
16
|
+
def build_path_regex
|
17
|
+
handlers = ::ActionView::Template::Handlers.extensions.map {|x| Regexp.escape(x) }.join('|')
|
18
|
+
formats = ::ActionView::Template::Types.symbols.map {|x| Regexp.escape(x) }.join('|')
|
19
|
+
locales = '[a-z]{2}(?:-[A-Z]{2})?'
|
20
|
+
variants = '[^.]*'
|
21
|
+
mobile = Jpmobile::Mobile.all_variants.map {|x| Regexp.escape(x) }.join('|')
|
22
|
+
|
23
|
+
%r{
|
24
|
+
\A
|
25
|
+
(?:(?<prefix>.*)/)?
|
26
|
+
(?<partial>_)?
|
27
|
+
(?<action>.*?)
|
28
|
+
(?:_(?<mobile>#{mobile}))??
|
29
|
+
(?:\.(?<locale>#{locales}))??
|
30
|
+
(?:\.(?<format>#{formats}))??
|
31
|
+
(?:\+(?<variant>#{variants}))??
|
32
|
+
(?:\.(?<handler>#{handlers}))?
|
33
|
+
\z
|
34
|
+
}x
|
35
|
+
end
|
36
|
+
|
37
|
+
def parse(path)
|
38
|
+
@regex ||= build_path_regex
|
39
|
+
match = @regex.match(path)
|
40
|
+
path = ActionView::TemplatePath.build(match[:action], match[:prefix] || '', !!match[:partial])
|
41
|
+
details = Jpmobile::TemplateDetails.new(
|
42
|
+
match[:locale]&.to_sym,
|
43
|
+
match[:handler]&.to_sym,
|
44
|
+
match[:format]&.to_sym,
|
45
|
+
match[:variant]&.to_sym,
|
46
|
+
match[:mobile]&.to_sym,
|
47
|
+
)
|
48
|
+
ParsedPath.new(path, details)
|
49
|
+
end
|
12
50
|
end
|
13
51
|
end
|
14
52
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Jpmobile
|
2
|
+
class TemplateDetails < ActionView::TemplateDetails
|
3
|
+
def initialize(locale, handler, format, variant, mobile)
|
4
|
+
@mobile = mobile
|
5
|
+
|
6
|
+
super(locale, handler, format, variant)
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(requested)
|
10
|
+
requested.formats_idx[@format] &&
|
11
|
+
requested.locale_idx[@locale] &&
|
12
|
+
requested.variants_idx[@variant] &&
|
13
|
+
requested.handlers_idx[@handler] &&
|
14
|
+
requested.mobile_idx[@mobile]
|
15
|
+
end
|
16
|
+
|
17
|
+
def sort_key_for(requested)
|
18
|
+
[
|
19
|
+
requested.formats_idx[@format],
|
20
|
+
requested.locale_idx[@locale],
|
21
|
+
requested.variants_idx[@variant],
|
22
|
+
requested.handlers_idx[@handler],
|
23
|
+
requested.mobile_idx[@mobile],
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
class Requested < ActionView::TemplateDetails::Requested
|
28
|
+
attr_reader :mobile, :mobile_idx
|
29
|
+
|
30
|
+
def initialize(locale:, handlers:, formats:, variants:, mobile:)
|
31
|
+
super(locale: locale, handlers: handlers, formats: formats, variants: variants)
|
32
|
+
|
33
|
+
@mobile = mobile.map(&:to_sym)
|
34
|
+
@mobile_idx = build_idx_hash(mobile)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/jpmobile/trans_sid.rb
CHANGED
data/lib/jpmobile/util.rb
CHANGED
data/lib/jpmobile/version.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
module Jpmobile
|
2
2
|
module ViewSelector
|
3
|
-
|
4
|
-
base.class_eval do
|
5
|
-
before_action :register_mobile
|
3
|
+
extend ActiveSupport::Concern
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
included do
|
6
|
+
before_action :register_mobile
|
7
|
+
|
8
|
+
self.view_paths = Jpmobile::PathSet.new(self.view_paths.paths.map(&:path))
|
10
9
|
end
|
11
10
|
|
12
11
|
def register_mobile
|
data/lib/jpmobile.rb
CHANGED
@@ -48,9 +48,19 @@ module Jpmobile
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.carriers=(ary)
|
51
|
+
@all_variants = nil
|
52
|
+
|
51
53
|
@carriers = ary
|
52
54
|
end
|
53
55
|
|
56
|
+
def self.all_variants
|
57
|
+
return @all_variants if @all_variants
|
58
|
+
|
59
|
+
@all_variants = carriers.map {|carrier|
|
60
|
+
Jpmobile::Mobile.const_get(carrier).new({}, {}).variants
|
61
|
+
}.flatten.uniq
|
62
|
+
end
|
63
|
+
|
54
64
|
require 'jpmobile/mobile/abstract_mobile'
|
55
65
|
end
|
56
66
|
|
@@ -63,6 +73,9 @@ module Jpmobile
|
|
63
73
|
autoload :Mailer, 'jpmobile/mailer'
|
64
74
|
autoload :Resolver, 'jpmobile/resolver'
|
65
75
|
|
76
|
+
autoload :PathSet, 'jpmobile/path_set'
|
77
|
+
autoload :TemplateDetails, 'jpmobile/template_details'
|
78
|
+
|
66
79
|
autoload :ViewSelector, 'jpmobile/view_selector'
|
67
80
|
autoload :FallbackViewSelector, 'jpmobile/fallback_view_selector'
|
68
81
|
|
@@ -112,12 +112,13 @@ namespace :test do
|
|
112
112
|
|
113
113
|
system 'bundle install'
|
114
114
|
system 'bin/rails db:migrate RAILS_ENV=test' unless skip
|
115
|
-
system 'bin/rails spec'
|
115
|
+
system 'bin/rails spec', exception: true
|
116
116
|
|
117
117
|
ENV.replace(original_env)
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
121
|
+
|
121
122
|
desc 'Run sinatra on jpmobile tests'
|
122
123
|
Rake::TestTask.new(:sinatra) do |t|
|
123
124
|
t.libs << 'lib'
|
@@ -17,6 +17,7 @@ describe Jpmobile::MobileCarrier do
|
|
17
17
|
[Jpmobile::Mobile::Emobile, 'emobile/1.0.0 (H11T; like Gecko; Wireless) NetFront/3.4'],
|
18
18
|
[Jpmobile::Mobile::Iphone, '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'],
|
19
19
|
[Jpmobile::Mobile::Android, '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'],
|
20
|
+
[Jpmobile::Mobile::Android, 'Mozilla/5.0 (Linux; Android 9; ANE-LX2J Build/HUAWEIANE-LX2J; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Mobile Safari/537.36 Instagram 172.0.0.21.123 Android (28/9; 480dpi; 1080x2060; HUAWEI; ANE-LX2J; HWANE; hi6250; ja_JP; 269790805)'],
|
20
21
|
[Jpmobile::Mobile::WindowsPhone, 'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)'],
|
21
22
|
[Jpmobile::Mobile::BlackBerry, 'BlackBerry9000/4.6.0.224 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/220'],
|
22
23
|
[Jpmobile::Mobile::Ipad, 'Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F191 Safari/6533.18.5'],
|
@@ -52,7 +52,7 @@ describe MobileSpecController, type: :controller do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
describe "GET '
|
55
|
+
describe "GET 'mobile_not_exist'" do
|
56
56
|
around do |example|
|
57
57
|
orig_value = Jpmobile.config.fallback_view_selector
|
58
58
|
Jpmobile.config.fallback_view_selector = true
|
@@ -65,7 +65,7 @@ describe MobileSpecController, type: :controller do
|
|
65
65
|
context 'PC access' do
|
66
66
|
it 'should be successful' do
|
67
67
|
request.user_agent = 'Mozilla'
|
68
|
-
get '
|
68
|
+
get 'mobile_not_exist'
|
69
69
|
|
70
70
|
expect(response).to be_successful
|
71
71
|
expect(response.body).not_to match('RailsRoot PC mobile')
|
@@ -75,7 +75,7 @@ describe MobileSpecController, type: :controller do
|
|
75
75
|
context 'mobile access' do
|
76
76
|
it 'should be successful' do
|
77
77
|
request.user_agent = 'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
78
|
-
get '
|
78
|
+
get 'mobile_not_exist'
|
79
79
|
|
80
80
|
expect(response).to be_successful
|
81
81
|
expect(response.body).not_to match('RailsRoot mobile')
|
@@ -48,7 +48,7 @@ RSpec.configure do |config|
|
|
48
48
|
# # ...
|
49
49
|
# end
|
50
50
|
#
|
51
|
-
# The different available types are documented in the
|
51
|
+
# The different available types are documented in the system, such as in
|
52
52
|
# https://relishapp.com/rspec/rspec-rails/docs
|
53
53
|
config.infer_spec_type_from_file_location!
|
54
54
|
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'system_helper'
|
2
|
+
|
3
|
+
describe 'jpmobile integration spec', type: :request do
|
4
|
+
include Jpmobile::Util
|
5
|
+
|
6
|
+
before do
|
7
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
8
|
+
end
|
9
|
+
|
10
|
+
shared_examples_for '文字コードフィルタが動作しているとき' do
|
11
|
+
it 'はhtml以外は変換しないこと' do
|
12
|
+
get "/#{controller}/rawdata", env: { 'HTTP_USER_AGENT' => user_agent }
|
13
|
+
expect(response.body.encode('UTF-8')).to eq('アブラカダブラ')
|
14
|
+
expect(response.headers['Content-Type']).not_to match(/charset/i)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# PCからのアクセス
|
20
|
+
#
|
21
|
+
describe FilterController do
|
22
|
+
let(:controller) { 'filter' }
|
23
|
+
|
24
|
+
describe 'PCからのアクセス' do
|
25
|
+
let(:user_agent) do
|
26
|
+
'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)'
|
27
|
+
end
|
28
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
32
|
+
let(:user_agent) do
|
33
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
34
|
+
end
|
35
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'au CA32 からのアクセス' do
|
39
|
+
let(:user_agent) do
|
40
|
+
'KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0'
|
41
|
+
end
|
42
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'Vodafone V903T からのアクセス' do
|
46
|
+
let(:user_agent) do
|
47
|
+
'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'
|
48
|
+
end
|
49
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'SoftBank 910T からのアクセス' do
|
53
|
+
let(:user_agent) do
|
54
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
55
|
+
end
|
56
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe HankakuFilterController do
|
61
|
+
let(:controller) { 'hankaku_filter' }
|
62
|
+
|
63
|
+
describe 'PCからのアクセス' do
|
64
|
+
let(:user_agent) do
|
65
|
+
'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)'
|
66
|
+
end
|
67
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
71
|
+
let(:user_agent) do
|
72
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
73
|
+
end
|
74
|
+
|
75
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
76
|
+
end
|
77
|
+
|
78
|
+
describe 'SoftBank 910T からのアクセス' do
|
79
|
+
let(:user_agent) do
|
80
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
81
|
+
end
|
82
|
+
|
83
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe HankakuInputFilterController do
|
88
|
+
let(:controller) { 'hankaku_input_filter' }
|
89
|
+
|
90
|
+
describe 'DoCoMo SH902i からのアクセス' do
|
91
|
+
let(:user_agent) do
|
92
|
+
'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
|
93
|
+
end
|
94
|
+
|
95
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'SoftBank 910T からのアクセス' do
|
99
|
+
let(:user_agent) do
|
100
|
+
'SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1'
|
101
|
+
end
|
102
|
+
|
103
|
+
it_should_behave_like '文字コードフィルタが動作しているとき'
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'system_helper'
|
2
2
|
|
3
3
|
describe Admin::TopController, type: :feature do
|
4
4
|
describe "GET 'full_path'" do
|
5
5
|
before do
|
6
|
-
page.driver.
|
6
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
7
7
|
end
|
8
8
|
|
9
9
|
context 'PCからのアクセスの場合' do
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'system_helper'
|
2
2
|
|
3
3
|
describe 'jpmobile integration spec', type: :feature do
|
4
4
|
include Jpmobile::Util
|
5
5
|
|
6
6
|
before do
|
7
|
-
page.driver.
|
7
|
+
page.driver.headers = { 'User-Agent' => user_agent }
|
8
8
|
end
|
9
9
|
|
10
10
|
shared_examples_for 'hankaku_filter input: true のとき' do
|
@@ -38,11 +38,6 @@ describe 'jpmobile integration spec', type: :feature do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
shared_examples_for '文字コードフィルタが動作しているとき' do
|
41
|
-
it 'はhtml以外は変換しないこと' do
|
42
|
-
visit "/#{controller}/rawdata"
|
43
|
-
expect(page.body.encode('UTF-8')).to have_content('アブラカダブラ')
|
44
|
-
expect(page.response_headers['Content-Type']).not_to match(/charset/i)
|
45
|
-
end
|
46
41
|
it 'response.bodyが空のときは文字コードを変更しないこと' do
|
47
42
|
visit "/#{controller}/empty"
|
48
43
|
expect(page.response_headers['Content-Type']).to match(/utf-8/i)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'capybara/cuprite'
|
2
|
+
|
3
|
+
Capybara.register_driver(:cuprite) do |app|
|
4
|
+
Capybara::Cuprite::Driver.new(
|
5
|
+
app,
|
6
|
+
**{
|
7
|
+
window_size: [1200, 800],
|
8
|
+
browser_options: {},
|
9
|
+
inspector: true,
|
10
|
+
},
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
Capybara.default_driver = Capybara.javascript_driver = :cuprite
|