jpmobile 0.1.6 → 1.0.0.pre

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 (73) hide show
  1. data/README +0 -0
  2. data/README.rdoc +58 -29
  3. data/Rakefile +1 -1
  4. data/VERSION.yml +4 -4
  5. data/lib/jpmobile.rb +3 -0
  6. data/lib/jpmobile/email.rb +17 -2
  7. data/lib/jpmobile/emoticon.rb +87 -23
  8. data/lib/jpmobile/emoticon/au.rb +644 -0
  9. data/lib/jpmobile/emoticon/softbank.rb +488 -0
  10. data/lib/jpmobile/emoticon/z_combine.rb +16 -13
  11. data/lib/jpmobile/hook_action_controller.rb +1 -13
  12. data/lib/jpmobile/hook_action_view.rb +3 -62
  13. data/lib/jpmobile/mail.rb +316 -0
  14. data/lib/jpmobile/mailer.rb +31 -0
  15. data/lib/jpmobile/mobile/abstract_mobile.rb +66 -0
  16. data/lib/jpmobile/mobile/au.rb +25 -2
  17. data/lib/jpmobile/mobile/docomo.rb +23 -1
  18. data/lib/jpmobile/mobile/emobile.rb +1 -1
  19. data/lib/jpmobile/mobile/softbank.rb +33 -1
  20. data/lib/jpmobile/mobile/vodafone.rb +1 -1
  21. data/lib/jpmobile/mobile/willcom.rb +1 -1
  22. data/lib/jpmobile/path_set.rb +40 -0
  23. data/lib/jpmobile/rails.rb +24 -0
  24. data/lib/jpmobile/resolver.rb +38 -0
  25. data/lib/jpmobile/util.rb +223 -14
  26. data/lib/tasks/jpmobile_tasks.rake +41 -48
  27. data/spec/rack/jpmobile/emoticon_spec.rb +3 -8
  28. data/spec/rack/jpmobile/filter_spec.rb +1 -1
  29. data/spec/rack/jpmobile/params_filter_spec.rb +4 -4
  30. data/spec/rack_helper.rb +5 -9
  31. data/spec/unit/detect_by_email_spec.rb +29 -0
  32. data/spec/unit/emoticon_spec.rb +90 -0
  33. data/spec/unit/encoding_spec.rb +102 -0
  34. data/spec/unit/mail_spec.rb +117 -0
  35. data/spec/unit/receive_mail_spec.rb +289 -0
  36. data/spec/unit/spec_helper.rb +8 -0
  37. data/spec/unit/util_spec.rb +5 -0
  38. data/test/rails/overrides/app/controllers/application_controller.rb +3 -2
  39. data/test/rails/overrides/app/controllers/template_path_controller.rb +8 -0
  40. data/test/rails/overrides/app/models/mobile_mailer.rb +19 -0
  41. data/test/rails/overrides/app/models/normal_mailer.rb +9 -0
  42. data/test/rails/overrides/spec/models/mobile_mailer_spec.rb +737 -0
  43. data/test/rails/overrides/spec/models/normal_mailer_spec.rb +34 -0
  44. data/test/rails/overrides/spec/requests/template_path_spec.rb +13 -7
  45. data/test/rails/overrides/spec/spec_helper.rb +6 -0
  46. data/test/rails/rails_root/app/controllers/application_controller.rb +3 -2
  47. data/test/rails/rails_root/app/controllers/template_path_controller.rb +8 -0
  48. data/test/rails/rails_root/app/models/mobile_mailer.rb +2 -1
  49. data/test/rails/rails_root/app/models/normal_mailer.rb +9 -0
  50. data/test/rails/rails_root/config/initializers/secret_token.rb +1 -1
  51. data/test/rails/rails_root/spec/models/mobile_mailer_spec.rb +73 -80
  52. data/test/rails/rails_root/spec/models/normal_mailer_spec.rb +34 -0
  53. data/test/rails/rails_root/spec/requests/template_path_spec.rb +13 -7
  54. data/test/rails/rails_root/spec/spec_helper.rb +1 -1
  55. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +2 -1
  56. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +7 -5
  57. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +1 -13
  58. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +3 -62
  59. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mail.rb +162 -111
  60. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mailer.rb +31 -0
  61. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +34 -3
  62. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +2 -5
  63. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +4 -5
  64. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +7 -8
  65. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/path_set.rb +40 -0
  66. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/params_filter.rb +1 -1
  67. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rails.rb +24 -0
  68. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/resolver.rb +38 -0
  69. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +33 -23
  70. metadata +43 -14
  71. data/test/legacy/emoticon_test.rb +0 -63
  72. data/test/legacy/helper.rb +0 -8
  73. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_mailer.rb +0 -22
@@ -29,61 +29,56 @@ rescue LoadError
29
29
  end
30
30
 
31
31
  namespace :test do
32
- desc "run jpmobile legacy tests"
33
- Rake::TestTask.new(:legacy) do |t|
34
- t.libs << 'lib'
35
- t.pattern = 'test/legacy/**/*_test.rb'
36
- t.verbose = true
37
- end
38
32
  desc "Generate rails app and run jpmobile tests in the app"
39
- task :rails, [:versions] do |t, args|
33
+ task :rails, [:skip] do |t, args|
40
34
  rails_root = "test/rails/rails_root"
41
35
  relative_root = "../../../"
42
- rails_versions = args.versions.split("/") rescue ["3.0.x"]
43
36
 
44
- puts "Running tests in Rails #{rails_versions.join(', ')}"
37
+ puts "Running tests in Rails"
38
+ skip = args.skip == "true"
45
39
 
46
- rails_versions.each do |rails_version|
47
- puts " for #{rails_version}"
40
+ unless skip
48
41
  # generate rails app
49
42
  FileUtils.rm_rf(rails_root)
50
43
  FileUtils.mkdir_p(rails_root)
51
- system "rails new #{rails_root}"
44
+ `rails new #{rails_root}`
45
+ end
52
46
 
53
- # setup jpmobile
54
- plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile')
47
+ # setup jpmobile
48
+ plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile')
49
+ FileUtils.mkdir_p(plugin_path)
50
+ FileList["*"].exclude("test").exclude("spec").each do |file|
51
+ FileUtils.cp_r(file, plugin_path)
52
+ end
53
+
54
+ # setup jpmobile-ipaddresses
55
+ begin
56
+ plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile-ipaddresses')
55
57
  FileUtils.mkdir_p(plugin_path)
56
- FileList["*"].exclude("test").exclude("spec").each do |file|
58
+ FileList["vendor/jpmobile-ipaddresses/*"].exclude("test").each do |file|
57
59
  FileUtils.cp_r(file, plugin_path)
58
60
  end
61
+ rescue LoadError
62
+ puts "IP Address test requires jpmobile-ipaddresses module"
63
+ end
59
64
 
60
- # setup jpmobile-ipaddresses
61
- begin
62
- plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile-ipaddresses')
63
- FileUtils.mkdir_p(plugin_path)
64
- FileList["vendor/jpmobile-ipaddresses/*"].exclude("test").each do |file|
65
- FileUtils.cp_r(file, plugin_path)
66
- end
67
- rescue LoadError
68
- puts "IP Address test requires jpmobile-ipaddresses module"
69
- end
70
-
71
- # setup jpmobile-terminfo
72
- begin
73
- plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile-terminfo')
74
- FileUtils.mkdir_p(plugin_path)
75
- FileList["vendor/jpmobile-terminfo/*"].exclude("test").each do |file|
76
- FileUtils.cp_r(file, plugin_path)
77
- end
78
- rescue LoadError
79
- puts "Terminal display information test requires jpmobile-terminfo module"
65
+ # setup jpmobile-terminfo
66
+ begin
67
+ plugin_path = File.join(rails_root, 'vendor', 'plugins', 'jpmobile-terminfo')
68
+ FileUtils.mkdir_p(plugin_path)
69
+ FileList["vendor/jpmobile-terminfo/*"].exclude("test").each do |file|
70
+ FileUtils.cp_r(file, plugin_path)
80
71
  end
72
+ rescue LoadError
73
+ puts "Terminal display information test requires jpmobile-terminfo module"
74
+ end
81
75
 
82
- # setup tests
83
- FileList["test/rails/overrides/*"].each do |file|
84
- FileUtils.cp_r(file, rails_root)
85
- end
76
+ # setup tests
77
+ FileList["test/rails/overrides/*"].each do |file|
78
+ FileUtils.cp_r(file, rails_root)
79
+ end
86
80
 
81
+ unless skip
87
82
  # for cookie_only option
88
83
  config_path = File.join(rails_root, 'config', 'initializers', 'session_store.rb')
89
84
  File.open(config_path, 'w') do |file|
@@ -92,16 +87,14 @@ Rails.application.config.session_store :active_record_store, :key => '_session_i
92
87
  Rails.application.config.session_options = {:cookie_only => false}
93
88
  END
94
89
  end
95
-
96
- # run tests in rails
97
- cd rails_root
98
- # ruby "-S bundle install"
99
- ruby "-S rake db:migrate test"
100
- ruby "-S rake spec"
101
- # ruby "-S rspec -b --color spec/requests/filter_spec.rb -e 'jpmobile integration spec HankakuInputFilterController SoftBank 910T からのアクセス it should behave like hankaku_filter :input => true のとき はtextareaの中では半角に変換されないこと'"
102
-
103
- cd relative_root
104
90
  end
91
+
92
+ # run tests in rails
93
+ cd rails_root
94
+ # ruby "-S bundle install"
95
+ ruby "-S rake db:migrate test" unless skip
96
+ ruby "-S rake spec"
97
+ # ruby "-S rspec -b --color spec/requests/filter_spec.rb -e 'jpmobile integration spec HankakuInputFilterController SoftBank 910T からのアクセス it should behave like hankaku_filter :input => true のとき はtextareaの中では半角に変換されないこと'"
105
98
  end
106
99
  desc "Run sinatra on jpmobile tests"
107
100
  Rake::TestTask.new(:sinatra) do |t|
@@ -4,6 +4,7 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../rack_helper.r
4
4
  describe "絵文字が" do
5
5
  include Rack::Test::Methods
6
6
  include Jpmobile::RackHelper
7
+ include Jpmobile::Util
7
8
 
8
9
  before(:each) do
9
10
  @docomo_cr = "&#xE63E;";
@@ -77,10 +78,7 @@ describe "絵文字が" do
77
78
  end
78
79
 
79
80
  it "パラメータが変換されること" do
80
- query_string = "q=" + URI.encode(sjis("\xf8\x9f"))
81
- if query_string.respond_to?(:force_encoding)
82
- query_string.force_encoding("ASCII-8BIT")
83
- end
81
+ query_string = ascii_8bit("q=" + URI.encode(sjis("\xf8\x9f")))
84
82
 
85
83
  res = Rack::MockRequest.env_for(
86
84
  "/?#{query_string}",
@@ -127,10 +125,7 @@ describe "絵文字が" do
127
125
  end
128
126
 
129
127
  it "パラメータが変換されること" do
130
- query_string = "q=" + URI.encode(sjis("\xf6\x60"))
131
- if query_string.respond_to?(:force_encoding)
132
- query_string.force_encoding("ASCII-8BIT")
133
- end
128
+ query_string = ascii_8bit("q=" + URI.encode(sjis("\xf6\x60")))
134
129
 
135
130
  res = Rack::MockRequest.env_for(
136
131
  "/?#{query_string}",
@@ -7,7 +7,7 @@ describe Jpmobile::Rack::Filter do
7
7
 
8
8
  context "漢字コード変換" do
9
9
  before(:each) do
10
- @utf8 = "ゆーてぃーえふえいとの\n日本語ですが何か"
10
+ @utf8 = "ゆーてぃーえふえいとの\n日本語〜ですが何か"
11
11
  @sjis = utf8_to_sjis(@utf8)
12
12
  end
13
13
 
@@ -10,21 +10,21 @@ describe Jpmobile::Rack::ParamsFilter do
10
10
  before(:each) do
11
11
  @query_params = {
12
12
  "hoge" => "ほげ",
13
- "パラメータ" => "テストです■",
13
+ "パラメータ" => "テストです〜■",
14
14
  }
15
15
  @form_params = {
16
16
  "bar" => "万葉集",
17
- "アジャイル" => "僕の♪",
17
+ "アジャイル" => "僕の〜♪",
18
18
  }
19
19
  end
20
20
 
21
21
  context "Shift_JIS 変換の " do
22
22
  before(:each) do
23
23
  @query_string = @query_params.map {|k, v|
24
- "%s=%s" % [::Rack::Utils.escape(NKF.nkf("-sWx", k)), ::Rack::Utils.escape(NKF.nkf("-sWx", v))]
24
+ "%s=%s" % [::Rack::Utils.escape(utf8_to_sjis(k)), ::Rack::Utils.escape(utf8_to_sjis(v))]
25
25
  }.join("&")
26
26
  @form_string = @form_params.map {|k, v|
27
- "%s=%s" % [NKF.nkf("-sWx", k), NKF.nkf("-sWx", v)]
27
+ "%s=%s" % [utf8_to_sjis(k), utf8_to_sjis(v)]
28
28
  }.join("&")
29
29
  end
30
30
 
data/spec/rack_helper.rb CHANGED
@@ -19,15 +19,14 @@ rescue LoadError
19
19
  end
20
20
 
21
21
  RSpec.configure do |config|
22
- config.include Rack::Test::Methods
22
+ config.filter_run :focus => true
23
+ config.run_all_when_everything_filtered = true
24
+ config.color_enabled = true
23
25
  end
24
26
 
25
27
  class UnitApplication
26
28
  def initialize(body = nil)
27
- @body = body || "Body"
28
- if @body.respond_to?(:force_encoding)
29
- @body.force_encoding("UTF-8")
30
- end
29
+ @body = Jpmobile::Util.utf8(body || "Body")
31
30
  end
32
31
 
33
32
  def call(env)
@@ -53,10 +52,7 @@ end
53
52
  class RenderParamApp
54
53
  def call(env)
55
54
  request = Rack::Request.new(env)
56
- q = request.params['q']
57
- if q.respond_to?(:force_encoding)
58
- q.force_encoding("UTF-8")
59
- end
55
+ q = Jpmobile::Util.utf8(request.params['q'])
60
56
 
61
57
  [200, env, q]
62
58
  end
@@ -11,6 +11,8 @@ describe 'Jpmobile::Email' do
11
11
  ['dadaea@pdx.ne.jp.jp' , nil ],
12
12
  ['xxxe@dj.pdx.ne.jp' , Jpmobile::Mobile::Willcom ],
13
13
  ['xxxe@dj.pdx.ne.jp.jp' , nil ],
14
+ ['xxxe@willcom.com' , Jpmobile::Mobile::Willcom ],
15
+ ['xxxe@willcom.com.jp' , nil ],
14
16
  ['oeeikx@softbank.ne.jp' , Jpmobile::Mobile::Softbank ],
15
17
  ['oeeikx@softbank.ne.jp.jp' , nil ],
16
18
  ['eaae@disney.ne.jp' , Jpmobile::Mobile::Softbank ],
@@ -22,4 +24,31 @@ describe 'Jpmobile::Email' do
22
24
  Jpmobile::Email.detect(email_addr).should == carrier
23
25
  end
24
26
  end
27
+
28
+ [
29
+ ['From: Jpmobile Rails <example@example.ne.jp>' , nil ],
30
+ ['From: Jpmobile Rails <test@docomo.ne.jp>' , Jpmobile::Mobile::Docomo ],
31
+ ['From: test@docomo.ne.jp' , Jpmobile::Mobile::Docomo ],
32
+ ['From: Jpmobile Rails <test@docomo.ne.jp.jp>' , nil ],
33
+ ['From: Jpmobile Rails <a(--)l@ezweb.ne.jp>' , Jpmobile::Mobile::Au ],
34
+ ['From: a(--)l@ezweb.ne.jp' , Jpmobile::Mobile::Au ],
35
+ ['From: Jpmobile Rails <a(--)l@ezweb.ne.jp.jp>' , nil ],
36
+ ['From: Jpmobile Rails <dadaea@pdx.ne.jp>' , Jpmobile::Mobile::Willcom ],
37
+ ['From: Jpmobile Rails <dadaea@pdx.ne.jp.jp>' , nil ],
38
+ ['From: Jpmobile Rails <xxxe@dj.pdx.ne.jp>' , Jpmobile::Mobile::Willcom ],
39
+ ['From: Jpmobile Rails <xxxe@dj.pdx.ne.jp.jp>' , nil ],
40
+ ['From: Jpmobile Rails <xxxe@willcom.com>' , Jpmobile::Mobile::Willcom ],
41
+ ['From: Jpmobile Rails <xxxe@willcom.com.jp>' , nil ],
42
+ ['From: Jpmobile Rails <oeeikx@softbank.ne.jp>' , Jpmobile::Mobile::Softbank ],
43
+ ['From: oeeikx@softbank.ne.jp' , Jpmobile::Mobile::Softbank ],
44
+ ['From: Jpmobile Rails <oeeikx@softbank.ne.jp.jp>' , nil ],
45
+ ['From: Jpmobile Rails <eaae@disney.ne.jp>' , Jpmobile::Mobile::Softbank ],
46
+ ['From: Jpmobile Rails <eaae@disney.ne.jp.jp>' , nil ],
47
+ ['From: Jpmobile Rails <iiiaa@r.vodafone.ne.jp>' , Jpmobile::Mobile::Vodafone ],
48
+ ['From: Jpmobile Rails <iiiaa@r.vodafone.ne.jp.jp>' , nil ],
49
+ ].each do |line, carrier|
50
+ it "#detect should return #{carrier} when take mail header #{line}}" do
51
+ Jpmobile::Email.detect_from_mail_header(line).should == carrier
52
+ end
53
+ end
25
54
  end
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
3
+
4
+ describe Jpmobile::Emoticon do
5
+ include Jpmobile::Util
6
+
7
+ describe "unicodecr_to_external" do
8
+ context "should convert unicodecr to docomo encoding" do
9
+ it "when no options" do
10
+ Jpmobile::Emoticon::unicodecr_to_external("&#xe63e;").should == sjis("\xf8\x9f")
11
+ end
12
+
13
+ it "in multiple convertion" do
14
+ Jpmobile::Emoticon::unicodecr_to_external("&#xE48E;", Jpmobile::Emoticon::CONVERSION_TABLE_TO_DOCOMO, true).should == sjis("\xf8\x9f\xf8\xa0")
15
+ end
16
+ end
17
+
18
+ context "should convert unicodecr to au encoding" do
19
+ it "when no options" do
20
+ Jpmobile::Emoticon::unicodecr_to_external("&#xe481;").should == sjis("\xf6\x59")
21
+ end
22
+ end
23
+
24
+ context "should convert unicodecr to softbank encoding" do
25
+ it "when no opptions" do
26
+ Jpmobile::Emoticon::unicodecr_to_external("&#xf001;").should == [0xe001].pack('U')
27
+ end
28
+
29
+ it "in multiple convertion" do
30
+ Jpmobile::Emoticon::unicodecr_to_external("&#xE48E;", Jpmobile::Emoticon::CONVERSION_TABLE_TO_SOFTBANK, true).should == [0xe04a, 0xe049].pack('U*')
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "unicodecr_to_utf8" do
36
+ it "should convert unicodecr to internal utf8 encoding" do
37
+ # docomo codepoint
38
+ Jpmobile::Emoticon::unicodecr_to_utf8("&#xe63e;").should == utf8("\356\230\276")
39
+ # au codepoint
40
+ Jpmobile::Emoticon::unicodecr_to_utf8("&#xe481;").should == utf8("\356\222\201")
41
+ # softbank codepoint
42
+ Jpmobile::Emoticon::unicodecr_to_utf8("&#xf001;").should == utf8("\xef\x80\x81")
43
+ end
44
+ end
45
+
46
+ describe "utf8_to_unicodecr" do
47
+ it "should convert utf8 encoding to unicodecr" do
48
+ # docomo codepoint
49
+ Jpmobile::Emoticon::utf8_to_unicodecr(utf8("\356\230\276")).should == "&#xe63e;"
50
+ # au codepoint
51
+ Jpmobile::Emoticon::utf8_to_unicodecr(utf8("\356\222\201")).should == "&#xe481;"
52
+ # softbank codepoint
53
+ Jpmobile::Emoticon::utf8_to_unicodecr(utf8("\xef\x80\x81")).should == "&#xf001;"
54
+ end
55
+ end
56
+
57
+ describe "external_to_unicodecr" do
58
+ it "should convert docomo encoding to unicodecr" do
59
+ Jpmobile::Emoticon::external_to_unicodecr_docomo(sjis("\xf8\x9f")).should == "&#xe63e;"
60
+ end
61
+
62
+ it "should convert au encoding to unicodecr" do
63
+ Jpmobile::Emoticon::external_to_unicodecr_au(sjis("\xf6\x59")).should == "&#xe481;"
64
+ end
65
+
66
+ it "should convert softbank encoding to unicodecr" do
67
+ Jpmobile::Emoticon::external_to_unicodecr_softbank([0xe001].pack('U')).should == "&#xf001;"
68
+ end
69
+
70
+ it "should not convert docomo encoding of koukai-sjis emoticons to unicodecr" do
71
+ Jpmobile::Emoticon::external_to_unicodecr_docomo(sjis("\x8c\xf6\x8a\x4a")).should == sjis("\x8c\xf6\x8a\x4a")
72
+ end
73
+ end
74
+
75
+ context "for email" do
76
+ describe "au" do
77
+ it "should not convert 助助 that does not contain emoticons" do
78
+ Jpmobile::Emoticon.external_to_unicodecr_au_mail(utf8_to_jis("助助")).should_not match(/e484/i)
79
+ end
80
+
81
+ it "should not convert exterior of 2byte Kanji-code" do
82
+ Jpmobile::Emoticon.external_to_unicodecr_au_mail(utf8_to_jis("abcd=uしから=uずんば=u")).should_not match(/e484/i)
83
+ end
84
+
85
+ it "should not convert ascii string to unicodecr" do
86
+ Jpmobile::Emoticon.external_to_unicodecr_au_mail(utf8_to_jis("-------=_NextPart_15793_72254_63179")).should_not match(/e5c2/i)
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,102 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
3
+
4
+ describe "Jpmobile::Mobile" do
5
+ include Jpmobile::Util
6
+
7
+ describe "AbstractMobile" do
8
+ before(:each) do
9
+ @mobile = Jpmobile::Mobile::AbstractMobile.new(nil, nil)
10
+ end
11
+
12
+ context "to_mail_subject" do
13
+ it "should convert string to ISO-2022-JP B-Encoding when string contains Japanese" do
14
+ @mobile.to_mail_subject("ほげ").should == "=?ISO-2022-JP?B?GyRCJFskMhsoQg==?="
15
+ end
16
+ end
17
+
18
+ context "to_mail_body" do
19
+ it "should convert string to ISO-2022-JP when string contains Japanese" do
20
+ @mobile.to_mail_body("ほげ").should == utf8_to_jis("ほげ")
21
+ end
22
+ end
23
+ end
24
+
25
+ describe "Docomo" do
26
+ before(:each) do
27
+ @mobile = Jpmobile::Mobile::Docomo.new(nil, nil)
28
+ end
29
+
30
+ context "to_mail_subject" do
31
+ it "should convert string to Shift_JIS B-Encoding when string contains Japanese" do
32
+ @mobile.to_mail_subject("ほげ").should == "=?Shift_JIS?B?gtmCsA==?="
33
+ end
34
+
35
+ it "should convert emoticon &#xe63e; to \xf8\x9f in B-Encoding" do
36
+ @mobile.to_mail_subject("ほげ&#xe63e;").should == "=?Shift_JIS?B?gtmCsPif?="
37
+ end
38
+ end
39
+
40
+ context "to_mail_body" do
41
+ it "should convert string to Shift_JIS when string contains Japanese" do
42
+ @mobile.to_mail_body("ほげ").should == utf8_to_sjis("ほげ")
43
+ end
44
+
45
+ it "should convert emoticon &#xe63e; to \xf8\x9f" do
46
+ @mobile.to_mail_body("ほげ&#xe63e;").should == utf8_to_sjis("ほげ") + sjis("\xf8\x9f")
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "Au" do
52
+ before(:each) do
53
+ @mobile = Jpmobile::Mobile::Au.new(nil, nil)
54
+ end
55
+
56
+ context "to_mail_subject" do
57
+ it "should convert string to ISO-2022-JP B-Encoding when string contains Japanese" do
58
+ @mobile.to_mail_subject("ほげ").should == "=?ISO-2022-JP?B?GyRCJFskMhsoQg==?="
59
+ end
60
+
61
+ it "should convert emoticon &#xe63e; to \x75\x41 in B-Encoding" do
62
+ @mobile.to_mail_subject("ほげ&#xe63e;").should == "=?ISO-2022-JP?B?GyRCJFskMhsoQhskQnVBGyhC?="
63
+ end
64
+ end
65
+
66
+ context "to_mail_body" do
67
+ it "should convert string to ISO-2022-JP when string contains Japanese" do
68
+ @mobile.to_mail_body("ほげ").should == utf8_to_jis("ほげ")
69
+ end
70
+
71
+ it "should convert emoticon &#xe63e; to \x75\x41" do
72
+ ascii_8bit(@mobile.to_mail_body("ほげ&#xe63e;")).should == ascii_8bit(utf8_to_jis("ほげ") + jis("\x1b\x24\x42\x75\x41\x1b\x28\x42"))
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "Softbank" do
78
+ before(:each) do
79
+ @mobile = Jpmobile::Mobile::Softbank.new(nil, nil)
80
+ end
81
+
82
+ context "to_mail_subject" do
83
+ it "should convert string to Shift_JIS B-Encoding when string contains Japanese" do
84
+ @mobile.to_mail_subject("ほげ").should == "=?Shift_JIS?B?gtmCsA==?="
85
+ end
86
+
87
+ it "should convert emoticon &#xe63e; to \xf9\x8b in B-Encoding" do
88
+ @mobile.to_mail_subject("ほげ&#xe63e;").should == "=?Shift_JIS?B?gtmCsPmL?="
89
+ end
90
+ end
91
+
92
+ context "to_mail_body" do
93
+ it "should convert string to Shift_JIS when string contains Japanese" do
94
+ @mobile.to_mail_body("ほげ").should == utf8_to_sjis("ほげ")
95
+ end
96
+
97
+ it "should convert emoticon &#xe63e; to \xf9\x8b" do
98
+ @mobile.to_mail_body("ほげ&#xe63e;").should == utf8_to_sjis("ほげ") + sjis("\xf9\x8b")
99
+ end
100
+ end
101
+ end
102
+ end