mblox 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -36,6 +36,9 @@ Configuration
36
36
  # If config.log_at == :debug and your logger's log level is :info, logging will be suppressed because it is below the log level of the logger.
37
37
  config.logger = Logger.new(STDOUT)
38
38
  config.log_at :info
39
+
40
+ # What to do if messages are longer than 160 characters. Default is :raise_error
41
+ config.on_message_too_long = :truncate
39
42
  end
40
43
 
41
44
  Once your application is configured, send messages:
@@ -49,7 +52,7 @@ Copy config.yml.example to config.yml and set all the values in that file. Run:
49
52
 
50
53
  rspec
51
54
 
52
- You should recieve 2 SMS messages to your phone within several seconds.
55
+ You should recieve 3 SMS messages to your phone within several seconds.
53
56
 
54
57
  ## Contributing
55
58
 
@@ -11,10 +11,16 @@ module Mblox
11
11
 
12
12
  class Configuration
13
13
  attr_accessor :outbound_url, :profile_id, :sender_id, :password, :partner_name, :tariff, :service_id
14
- attr_reader :logger, :log_level
14
+ attr_reader :logger, :log_level, :on_message_too_long
15
15
  def initialize
16
16
  @logger = Rails.logger if defined?(::Rails)
17
17
  @log_level = :debug
18
+ @on_message_too_long = :raise_error
19
+ end
20
+
21
+ def on_message_too_long= action
22
+ raise ArgumentError, "Mblox.config.on_message_too_long must be either :truncate or :raise_error" unless [:truncate, :raise_error].include?(action)
23
+ @on_message_too_long = action
18
24
  end
19
25
 
20
26
  def log_at level
@@ -11,6 +11,10 @@ module Mblox
11
11
  raise SmsError, "Phone number must be ten digits" unless /\A[0-9]{10}\z/.match(phone)
12
12
  raise SmsError, "Phone number cannot begin with 0 or 1" if ['0','1'].include?(phone[0].to_s)
13
13
  raise SmsError, "Message cannot be blank" if message.empty?
14
+ if message.size > 160
15
+ raise SmsError, "Message cannot be longer than 160 characters" if :raise_error == Mblox.config.on_message_too_long
16
+ message = message[0,160] if :truncate == Mblox.config.on_message_too_long
17
+ end
14
18
  @phone = "1#{phone}"
15
19
  @message = message.dup
16
20
  end
@@ -1,3 +1,3 @@
1
1
  module Mblox
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+
3
+ describe "configuration" do
4
+ describe "on_message_too_long" do
5
+ it "should default to :raise_error" do
6
+ Mblox.reset_configuration
7
+ expect(Mblox.config.on_message_too_long).to eq(:raise_error)
8
+ end
9
+
10
+ it "should allow the value :truncate" do
11
+ expect { Mblox.config.on_message_too_long = :truncate }.to_not raise_error
12
+ end
13
+
14
+ it "should allow the value :raise_error" do
15
+ expect { Mblox.config.on_message_too_long = :raise_error }.to_not raise_error
16
+ end
17
+
18
+ it "should not allow other values and should remain in a valid state" do
19
+ expect { Mblox.config.on_message_too_long = :do_nothing }.to raise_error(ArgumentError, "Mblox.config.on_message_too_long must be either :truncate or :raise_error")
20
+ expect(Mblox.config.on_message_too_long).to eq(:raise_error)
21
+ end
22
+ end
23
+ end
@@ -1,14 +1,6 @@
1
1
  require "spec_helper"
2
2
  require "logger"
3
3
 
4
- module Mblox
5
- class << self
6
- def reset_configuration
7
- @config = Configuration.new
8
- end
9
- end
10
- end
11
-
12
4
  describe "logger" do
13
5
  before(:each) do
14
6
  Mblox.reset_configuration
@@ -31,7 +23,7 @@ describe "logger" do
31
23
 
32
24
  it "should not allow log level news when the logger is created after log level is set" do
33
25
  Mblox.config.log_at :news
34
- expect { Mblox.config.logger = ::Logger.new("STDOUT")}.to raise_error(ArgumentError, "Mblox log level must be set to :fatal, :error, :warn, :info or :debug")
26
+ expect { Mblox.config.logger = ::Logger.new(STDOUT)}.to raise_error(ArgumentError, "Mblox log level must be set to :fatal, :error, :warn, :info or :debug")
35
27
  expect { Mblox.log "Some news" }.to_not raise_error
36
28
  end
37
29
 
@@ -25,6 +25,22 @@ describe "message" do
25
25
  expect { Mblox::Sms.new("2"*10, "") }.to raise_error(Mblox::SmsError, "Message cannot be blank")
26
26
  end
27
27
 
28
+ it "can be 160 characters long" do
29
+ expect { Mblox::Sms.new("2"*10, "A"*160) }.to_not raise_error
30
+ end
31
+
32
+ it "will be truncated when the message is longer than 160 characters if configured to do so" do
33
+ message = "A"+"ABCDEFGHIJ"*16
34
+ Mblox.config.on_message_too_long = :truncate
35
+ expect { @mblox = Mblox::Sms.new("2"*10, message) }.to_not raise_error
36
+ expect(@mblox.message).to eq(message[0,160])
37
+ end
38
+
39
+ it "cannot be longer than 160 characters if configured to raise error" do
40
+ Mblox.config.on_message_too_long = :raise_error
41
+ expect { Mblox::Sms.new("2"*10, "A"*161) }.to raise_error(Mblox::SmsError, "Message cannot be longer than 160 characters")
42
+ end
43
+
28
44
  it "should be safe from changing" do
29
45
  msg = the_message
30
46
  mblox = Mblox::Sms.new(TEST_NUMBER,msg)
@@ -42,6 +58,10 @@ describe "SMS messages" do
42
58
  expect(Mblox::Sms.new(TEST_NUMBER.to_s,the_message).send).to eq(result_ok)
43
59
  end
44
60
 
61
+ it "should allow 160-character messages" do
62
+ expect(Mblox::Sms.new(TEST_NUMBER,"A"*160).send).to eq(result_ok)
63
+ end
64
+
45
65
  it "should fail when sent to a landline" do
46
66
  expect(Mblox::Sms.new("6176354500",the_message).send).to eq(result_unroutable)
47
67
  end
@@ -30,3 +30,11 @@ end
30
30
  def result_unroutable
31
31
  "RequestResult: \"0:OK\" / SubscriberResult: \"10:MsipRejectCode=29 Number unroutable:2e Do not retry:2e\""
32
32
  end
33
+
34
+ module Mblox
35
+ class << self
36
+ def reset_configuration
37
+ @config = Configuration.new
38
+ end
39
+ end
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mblox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -119,7 +119,6 @@ files:
119
119
  - LICENSE.txt
120
120
  - README.md
121
121
  - Rakefile
122
- - STDOUT
123
122
  - config.yml.example
124
123
  - lib/mblox.rb
125
124
  - lib/mblox/configuration.rb
@@ -127,6 +126,7 @@ files:
127
126
  - lib/mblox/sms_error.rb
128
127
  - lib/mblox/version.rb
129
128
  - mblox.gemspec
129
+ - spec/configuration_spec.rb
130
130
  - spec/log_spec.rb
131
131
  - spec/sms_spec.rb
132
132
  - spec/spec_helper.rb
@@ -164,16 +164,18 @@ summary: ! '# Mblox This gem is for subscribers to Mblox to send SMS messages.
164
164
  will default to Rails.logger and config.log_at will default to :debug # config.log_at
165
165
  means the level at which Mblox will log. # If config.log_at == :debug and your logger''s
166
166
  log level is :info, logging will be suppressed because it is below the log level
167
- of the logger. config.logger = Logger.new(STDOUT) config.log_at :info end Once
168
- your application is configured, send messages: phone_number = 2225555555 # The
169
- number you''re sending to. Must be a 10-digit number, including the area code. Can
170
- be a String or Fixnum. Mblox::Sms.new(phone_number, "your message").send ## Testing Copy
171
- config.yml.example to config.yml and set all the values in that file. Run: rspec You
172
- should recieve 2 SMS messages to your phone within several seconds. ## Contributing 1.
167
+ of the logger. config.logger = Logger.new(STDOUT) config.log_at :info # What to
168
+ do if messages are longer than 160 characters. Default is :raise_error config.on_message_too_long
169
+ = :truncate end Once your application is configured, send messages: phone_number
170
+ = 2225555555 # The number you''re sending to. Must be a 10-digit number, including
171
+ the area code. Can be a String or Fixnum. Mblox::Sms.new(phone_number, "your message").send ##
172
+ Testing Copy config.yml.example to config.yml and set all the values in that file. Run: rspec You
173
+ should recieve 3 SMS messages to your phone within several seconds. ## Contributing 1.
173
174
  Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit
174
175
  your changes (`git commit -am ''Add some feature''`) 4. Push to the branch (`git
175
176
  push origin my-new-feature`) 5. Create new Pull Request'
176
177
  test_files:
178
+ - spec/configuration_spec.rb
177
179
  - spec/log_spec.rb
178
180
  - spec/sms_spec.rb
179
181
  - spec/spec_helper.rb
data/STDOUT DELETED
@@ -1 +0,0 @@
1
- # Logfile created on 2013-05-01 15:05:03 -0400 by logger.rb/31641