action_smser 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.
- data/MIT-LICENSE +20 -0
- data/README.md +191 -0
- data/Rakefile +39 -0
- data/app/assets/javascripts/action_smser/delivery_reports.js +2 -0
- data/app/assets/stylesheets/action_smser/application.css +7 -0
- data/app/assets/stylesheets/action_smser/delivery_reports.css +4 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/action_smser/application_controller.rb +4 -0
- data/app/controllers/action_smser/delivery_reports_controller.rb +63 -0
- data/app/models/action_smser/delivery_report.rb +30 -0
- data/app/views/action_smser/delivery_reports/index.html.erb +143 -0
- data/app/views/layouts/action_smser/delivery_reports.html.erb +56 -0
- data/config/routes.rb +7 -0
- data/db/migrate/20120102215215_create_action_smser_delivery_reports.rb +19 -0
- data/lib/action_smser.rb +24 -0
- data/lib/action_smser/base.rb +133 -0
- data/lib/action_smser/delivery_methods/simple_http.rb +70 -0
- data/lib/action_smser/delivery_methods/test_array.rb +30 -0
- data/lib/action_smser/engine.rb +5 -0
- data/lib/action_smser/version.rb +3 -0
- data/lib/tasks/action_smser_tasks.rake +4 -0
- data/test/action_smser_test.rb +7 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +7 -0
- data/test/dummy/app/assets/stylesheets/application.css +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/hello_smser.rb +9 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +51 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +26 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +30 -0
- data/test/dummy/config/environments/production.rb +60 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/git_ignored_passwords.rb +10 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/schema.rb +28 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +540 -0
- data/test/dummy/log/test.log +18246 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/action_smser/delivery_reports_controller_test.rb +118 -0
- data/test/integration/navigation_test.rb +11 -0
- data/test/test_helper.rb +25 -0
- data/test/unit/action_smser/base_test.rb +83 -0
- data/test/unit/action_smser/delivery_methods/simple_http_test.rb +52 -0
- data/test/unit/action_smser/delivery_methods/test_array_test.rb +42 -0
- data/test/unit/action_smser/delivery_report_test.rb +54 -0
- metadata +212 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/404.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
23
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>The change you wanted was rejected (422)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/422.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>The change you wanted was rejected.</h1>
|
23
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>We're sorry, but something went wrong (500)</title>
|
5
|
+
<style type="text/css">
|
6
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
7
|
+
div.dialog {
|
8
|
+
width: 25em;
|
9
|
+
padding: 0 4em;
|
10
|
+
margin: 4em auto 0 auto;
|
11
|
+
border: 1px solid #ccc;
|
12
|
+
border-right-color: #999;
|
13
|
+
border-bottom-color: #999;
|
14
|
+
}
|
15
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
16
|
+
</style>
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body>
|
20
|
+
<!-- This file lives in public/500.html -->
|
21
|
+
<div class="dialog">
|
22
|
+
<h1>We're sorry, but something went wrong.</h1>
|
23
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
24
|
+
</div>
|
25
|
+
</body>
|
26
|
+
</html>
|
File without changes
|
@@ -0,0 +1,6 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
6
|
+
require 'rails/commands'
|
@@ -0,0 +1,118 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ActionSmser::DeliveryReportsControllerTest < ActionController::TestCase
|
4
|
+
|
5
|
+
class SmsTestSetup
|
6
|
+
def self.admin_access(controller)
|
7
|
+
if controller.session[:admin_logged].blank?
|
8
|
+
return controller.session[:admin_logged]
|
9
|
+
else
|
10
|
+
return true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.process_delivery_report(params)
|
15
|
+
processable_array = []
|
16
|
+
if params["DeliveryReport"] && params["DeliveryReport"]["message"]
|
17
|
+
reports = params["DeliveryReport"]["message"]
|
18
|
+
reports = [reports] unless reports.is_a?(Array)
|
19
|
+
reports.each do |report|
|
20
|
+
processable_array << {'msg_id' => report['id'], 'status' => report['status']}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
return processable_array
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
test "gateway_commit with existing dr" do
|
29
|
+
@msg_id = "102010314204056202"
|
30
|
+
@dr = ActionSmser::DeliveryReport.create(:msg_id => @msg_id, :status => 'ORIGINAL_STATUS')
|
31
|
+
|
32
|
+
ActionSmser.delivery_options[:gateway_commit] = {'test_gateway' => SmsTestSetup}
|
33
|
+
|
34
|
+
get 'gateway_commit', :use_route => :action_smser, :gateway => 'test_gateway',
|
35
|
+
"DeliveryReport"=>{"message"=>{"id"=>@msg_id, "donedate"=>"2012/01/03 14:20:45", "sentdate"=>"2012/01/03 14:20:40", "status"=>"DELIVERED"}}
|
36
|
+
|
37
|
+
|
38
|
+
assert_response :success
|
39
|
+
assert @response.body.downcase.include?("update"), "should have responed about saving"
|
40
|
+
@dr.reload
|
41
|
+
assert_equal "DELIVERED", @dr.status
|
42
|
+
end
|
43
|
+
|
44
|
+
test "gateway_commit with multiple records" do
|
45
|
+
@msg_id = "102010314204056202"
|
46
|
+
@msg_id2 = "99999999999999999"
|
47
|
+
@dr = ActionSmser::DeliveryReport.create(:msg_id => @msg_id, :status => 'ORIGINAL_STATUS')
|
48
|
+
@dr2 = ActionSmser::DeliveryReport.create(:msg_id => @msg_id2, :status => 'ORIGINAL_STATUS')
|
49
|
+
|
50
|
+
ActionSmser.delivery_options[:gateway_commit] = {'test_gateway' => SmsTestSetup}
|
51
|
+
|
52
|
+
get 'gateway_commit', :use_route => :action_smser, :gateway => 'test_gateway',
|
53
|
+
"DeliveryReport"=>
|
54
|
+
{"message"=>[{"id"=>@msg_id.to_s, "status"=>"DELIVERED"},
|
55
|
+
{"id"=>@msg_id2, "status"=>"DELIVERED"}]}
|
56
|
+
|
57
|
+
assert_response :success
|
58
|
+
assert @response.body.downcase.include?("update"), "should have responded about saving"
|
59
|
+
@dr.reload
|
60
|
+
@dr2.reload
|
61
|
+
assert_equal "DELIVERED", @dr.status, "should have updated first record"
|
62
|
+
assert_equal "DELIVERED", @dr2.status, "should have updated second record"
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
test "gateway_commit without dr" do
|
68
|
+
ActionSmser.delivery_options[:gateway_commit] = {'test_gateway' => SmsTestSetup}
|
69
|
+
|
70
|
+
get 'gateway_commit', :use_route => :action_smser, :gateway => 'test_gateway',
|
71
|
+
"DeliveryReport"=>{"message"=>{"id"=>"wrongid", "donedate"=>"2012/01/03 14:20:45", "sentdate"=>"2012/01/03 14:20:40", "status"=>"DELIVERED"}}
|
72
|
+
|
73
|
+
assert_response :success
|
74
|
+
assert @response.body =~ /not/i, "should have responded not saved"
|
75
|
+
end
|
76
|
+
|
77
|
+
test "gateway_commit without any parser" do
|
78
|
+
get 'gateway_commit', :use_route => :action_smser, :gateway => 'gateway_not_found',
|
79
|
+
"DeliveryReport"=>{"message"=>{"id"=>"wrongid", "donedate"=>"2012/01/03 14:20:45", "sentdate"=>"2012/01/03 14:20:40", "status"=>"DELIVERED"}}
|
80
|
+
|
81
|
+
assert_response :success
|
82
|
+
assert @response.body =~ /not/i, "should have responded not saved"
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
test "index with forbidden admin_access (default access mode)" do
|
87
|
+
get 'index', :use_route => :action_smser
|
88
|
+
assert_response 403
|
89
|
+
assert_template nil
|
90
|
+
end
|
91
|
+
|
92
|
+
test "index with always enabled admin" do
|
93
|
+
2.times do
|
94
|
+
ActionSmser::DeliveryReport.create(:msg_id => "idtest_#{rand(10)}")
|
95
|
+
end
|
96
|
+
ActionSmser::DeliveryReportsController.any_instance.stubs(:admin_access_only).returns(true)
|
97
|
+
get 'index', :use_route => :action_smser
|
98
|
+
assert_response :success
|
99
|
+
assert_template :index
|
100
|
+
end
|
101
|
+
|
102
|
+
test "index with admin_access lambda with right login info" do
|
103
|
+
default = ActionSmser.delivery_options[:admin_access]
|
104
|
+
ActionSmser.delivery_options[:admin_access] = SmsTestSetup
|
105
|
+
2.times do
|
106
|
+
ActionSmser::DeliveryReport.create(:msg_id => "idtest_#{rand(10)}")
|
107
|
+
end
|
108
|
+
session[:admin_logged] = true
|
109
|
+
get 'index', :use_route => :action_smser
|
110
|
+
|
111
|
+
assert_response :success
|
112
|
+
assert_template :index
|
113
|
+
|
114
|
+
ActionSmser.delivery_options[:admin_access] = default
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class NavigationTest < ActionDispatch::IntegrationTest
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
test "basic gateway_commit delivery_report" do
|
7
|
+
get 'action_smser/delivery_reports/gateway_commit/example_gateway'
|
8
|
+
assert_response :success
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Configure Rails Environment
|
4
|
+
ENV["RAILS_ENV"] = "test"
|
5
|
+
|
6
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
7
|
+
require "rails/test_help"
|
8
|
+
#require 'ruby-debug'
|
9
|
+
|
10
|
+
Rails.backtrace_cleaner.remove_silencers!
|
11
|
+
|
12
|
+
# Load support files
|
13
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
14
|
+
|
15
|
+
ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => ':memory:'
|
16
|
+
|
17
|
+
silence_stream(STDOUT) do
|
18
|
+
ActiveRecord::Migrator.migrate File.expand_path('../../db/migrate/', __FILE__)
|
19
|
+
end
|
20
|
+
|
21
|
+
#def drop_all_tables
|
22
|
+
# ActiveRecord::Base.connection.tables.each do |table|
|
23
|
+
# ActiveRecord::Base.connection.drop_table(table)
|
24
|
+
# end
|
25
|
+
#end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ActionSmser::BaseTest < ActiveSupport::TestCase
|
5
|
+
class MockSms<ActionSmser::Base
|
6
|
+
def basic_sms(to, from, body)
|
7
|
+
sms(:to => to, :from => from, :body => body)
|
8
|
+
end
|
9
|
+
|
10
|
+
def after_delivery(result)
|
11
|
+
puts "generic delivery observer, mock this"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
setup do
|
16
|
+
@receivers = ["555123555", "123", "+358123555123"]
|
17
|
+
@sender = "555666"
|
18
|
+
@body = "Body with ääkköset end"
|
19
|
+
@sms = MockSms.basic_sms(@receivers, @sender, @body)
|
20
|
+
end
|
21
|
+
|
22
|
+
test "receivers should be joined by commas" do
|
23
|
+
assert_equal "555123555,123,358123555123", @sms.to_encoded
|
24
|
+
end
|
25
|
+
|
26
|
+
test "should be ok with single receivers" do
|
27
|
+
str = "123123"
|
28
|
+
@sms = MockSms.basic_sms(str, @sender, @body)
|
29
|
+
assert_equal [str], @sms.to_as_array
|
30
|
+
end
|
31
|
+
|
32
|
+
test "from_encoded should remove leading + and 0" do
|
33
|
+
@sms = MockSms.basic_sms("+358555", "+358123" , @body)
|
34
|
+
assert_equal "358123", @sms.from_encoded
|
35
|
+
end
|
36
|
+
|
37
|
+
test "body should be possible to encode" do
|
38
|
+
assert_equal "Body+with+%E4%E4kk%F6set+end", @sms.body_encoded_escaped
|
39
|
+
end
|
40
|
+
|
41
|
+
test "body should be cropped to 500 chars, limit extra looong messages" do
|
42
|
+
@sms.body = (1..1000).map{'a'}.join
|
43
|
+
assert_equal 500, @sms.body_encoded_escaped.size
|
44
|
+
end
|
45
|
+
|
46
|
+
test "should be valid sms" do
|
47
|
+
assert @sms.valid?
|
48
|
+
end
|
49
|
+
|
50
|
+
test "should not be valid if no recipients" do
|
51
|
+
@sms = MockSms.basic_sms([nil, ""], @sender, @body)
|
52
|
+
assert !@sms.valid?
|
53
|
+
end
|
54
|
+
|
55
|
+
test "should have saved sms_type" do
|
56
|
+
assert_equal "ActionSmser::BaseTest::MockSms.basic_sms", @sms.sms_type
|
57
|
+
end
|
58
|
+
|
59
|
+
test "should have copied the delivery_options when initializing" do
|
60
|
+
assert @sms.delivery_options == ActionSmser.delivery_options
|
61
|
+
assert @sms.delivery_options.object_id != ActionSmser.delivery_options.object_id
|
62
|
+
end
|
63
|
+
|
64
|
+
test "should have test_array as delivery method" do
|
65
|
+
assert_equal ActionSmser::DeliveryMethods::TestArray, @sms.delivery_method
|
66
|
+
end
|
67
|
+
|
68
|
+
test "after delivery it should call delivery_observer if it's present" do
|
69
|
+
@sms.expects(:after_delivery).once
|
70
|
+
assert @sms.deliver
|
71
|
+
end
|
72
|
+
|
73
|
+
test "message_real_length should return real sms lenght" do
|
74
|
+
assert_equal 4, ActionSmser::Base.message_real_length("a[a")
|
75
|
+
end
|
76
|
+
test "message_real_crop should return cropped message with sms chars taken account" do
|
77
|
+
assert_equal "a[a[", ActionSmser::Base.message_real_cropped("a[a[", 6)
|
78
|
+
assert_equal "a[a", ActionSmser::Base.message_real_cropped("a[a[", 5)
|
79
|
+
assert_equal "a[a", ActionSmser::Base.message_real_cropped("a[a[", 4)
|
80
|
+
assert_equal "a[", ActionSmser::Base.message_real_cropped("a[a[", 3)
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ActionSmser::SimpleHttpTest < ActiveSupport::TestCase
|
5
|
+
class MockSms<ActionSmser::Base
|
6
|
+
def basic_sms(to, from, body)
|
7
|
+
sms(:to => to, :from => from, :body => body)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
setup do
|
12
|
+
@receivers = ["555123555", "123555123"]
|
13
|
+
@sender = "555666"
|
14
|
+
@body = "Body with ääkköset end"
|
15
|
+
@sms = MockSms.basic_sms(@receivers, @sender, @body)
|
16
|
+
|
17
|
+
@sms.delivery_options[:delivery_method] = :simple_http
|
18
|
+
@sms.delivery_options[:simple_http] = {:username => 'user', :password => 'pass'}
|
19
|
+
assert_equal ActionSmser::DeliveryMethods::SimpleHttp, @sms.delivery_method, "cant run tests, wrong delivery method"
|
20
|
+
|
21
|
+
http_mock = stub(:body => "id_1234\nid_6666")
|
22
|
+
ActionSmser::DeliveryMethods::SimpleHttp.stubs(:deliver_http_request).returns(http_mock)
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
test "should be able to deliver" do
|
27
|
+
@sms_delivery = @sms.deliver
|
28
|
+
assert @sms_delivery
|
29
|
+
assert_equal @sms_delivery.count, 2, "two messages"
|
30
|
+
end
|
31
|
+
|
32
|
+
test "with saving delivery_reports" do
|
33
|
+
@sms.delivery_options[:save_delivery_reports] = true
|
34
|
+
#debugger
|
35
|
+
@delivery_reports_count = ActionSmser::DeliveryReport.count
|
36
|
+
@sms_delivery = @sms.deliver
|
37
|
+
|
38
|
+
assert @sms_delivery.is_a?(Array)
|
39
|
+
assert @sms_delivery.first.is_a?(ActionSmser::DeliveryReport), "should return deliveryreport array"
|
40
|
+
|
41
|
+
assert_equal @delivery_reports_count + 2, ActionSmser::DeliveryReport.count
|
42
|
+
|
43
|
+
@dr = @sms_delivery.last
|
44
|
+
assert_equal "123555123", @dr.to, "receiver wrong"
|
45
|
+
assert_equal "id_6666", @dr.msg_id, "id wrong"
|
46
|
+
end
|
47
|
+
|
48
|
+
# There are better frameworks for testing http requests
|
49
|
+
# http://railscasts.com/episodes/276-testing-time-web-requests
|
50
|
+
# https://github.com/chrisk/fakeweb
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ActionSmser::TestArrayTest < ActiveSupport::TestCase
|
5
|
+
class MockSms<ActionSmser::Base
|
6
|
+
def basic_sms(to, from, body)
|
7
|
+
sms(:to => to, :from => from, :body => body)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
setup do
|
12
|
+
@receivers = ["555123555", "123555123"]
|
13
|
+
@sender = "555666"
|
14
|
+
@body = "Body with ääkköset end"
|
15
|
+
@sms = MockSms.basic_sms(@receivers, @sender, @body)
|
16
|
+
|
17
|
+
@sms.delivery_options[:delivery_method] = :test_array
|
18
|
+
assert_equal ActionSmser::DeliveryMethods::TestArray, @sms.delivery_method, "cant run tests, wrong delivery method"
|
19
|
+
ActionSmser::DeliveryMethods::TestArray.deliveries.clear
|
20
|
+
|
21
|
+
@sms_delivery = @sms.deliver
|
22
|
+
end
|
23
|
+
|
24
|
+
test "should be able to deliver" do
|
25
|
+
assert @sms_delivery
|
26
|
+
end
|
27
|
+
|
28
|
+
test "should add to TestArray" do
|
29
|
+
assert_equal 1, ActionSmser::DeliveryMethods::TestArray.deliveries.size
|
30
|
+
assert_equal @sms, ActionSmser::DeliveryMethods::TestArray.deliveries.first
|
31
|
+
end
|
32
|
+
|
33
|
+
test "with saving delivery_reports" do
|
34
|
+
ActionSmser::DeliveryMethods::TestArray.deliveries.clear
|
35
|
+
@sms.delivery_options[:save_delivery_reports] = true
|
36
|
+
@delivery_reports_count = ActionSmser::DeliveryReport.count
|
37
|
+
@sms_delivery = @sms.deliver
|
38
|
+
|
39
|
+
assert_equal @delivery_reports_count + 2, ActionSmser::DeliveryReport.count
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ActionSmser::DeliveryReportTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
class MockSms<ActionSmser::Base
|
7
|
+
def basic_sms(to, from, body)
|
8
|
+
sms(:to => to, :from => from, :body => body)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
setup do
|
13
|
+
@receivers = ["555123555", "", "123555123"]
|
14
|
+
@sender = "555666"
|
15
|
+
@body = "Body with ääkköset end"
|
16
|
+
@sms = MockSms.basic_sms(@receivers, @sender, @body)
|
17
|
+
end
|
18
|
+
|
19
|
+
test "build DeliveryReport from sms" do
|
20
|
+
@dr = ActionSmser::DeliveryReport.build_from_sms(@sms, "123", "msg_id_a")
|
21
|
+
|
22
|
+
assert @sender == @dr.from, "should have set @sms.from"
|
23
|
+
assert @body == @dr.body, "should have set @sms.body"
|
24
|
+
assert @sms.sms_type == @dr.sms_type, "should have set @sms.sms_type"
|
25
|
+
|
26
|
+
assert "123" == @dr.to, "should have set right to info"
|
27
|
+
|
28
|
+
assert "msg_id_a" == @dr.msg_id, "should have set right msg_id"
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
test "create_from_save" do
|
33
|
+
@dr_count = ActionSmser::DeliveryReport.count
|
34
|
+
@dr = ActionSmser::DeliveryReport.create_from_sms(@sms, "123", "msg_id_a")
|
35
|
+
|
36
|
+
assert_equal @dr_count + 1, ActionSmser::DeliveryReport.count, "should have created one in db"
|
37
|
+
assert @dr.is_a?(ActionSmser::DeliveryReport), "should have returned right item"
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
test "updating status" do
|
42
|
+
@dr = ActionSmser::DeliveryReport.new
|
43
|
+
@dr.status = "LOCAL_TEST"
|
44
|
+
@dr.save!
|
45
|
+
log = @dr.log
|
46
|
+
|
47
|
+
@dr.status = "TEST_2"
|
48
|
+
assert_equal "TEST_2", @dr.status
|
49
|
+
assert log != @dr.log, "should have updated log"
|
50
|
+
assert @dr.log.include?("TEST_2")
|
51
|
+
assert @dr.save
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|