4info 1.0.5 → 1.1.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/4info.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{4info}
8
- s.version = "1.0.5"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jack Danger Canty"]
data/README.markdown CHANGED
@@ -23,7 +23,7 @@ You can also specify which attributes you'd like to use instead of the defaults
23
23
  sms_blocked_column :is_sms_blocked
24
24
  sms_confirmation_code_column :the_sms_confirmation_code
25
25
  sms_confirmation_attempted_column :when_was_the_sms_confirmation_attempted
26
- sms_confirmed_column :is_the_mobile_number_confirmed
26
+ sms_confirmed_phone_number_column :the_mobile_number_thats_been_confirmed
27
27
 
28
28
  # Defaults to the name on the left (minus the word '_column')
29
29
  end
@@ -34,7 +34,7 @@ You can manage the user's SMS state like so:
34
34
  @user.confirm_sms!
35
35
  # then ask the user for the confirmation code and
36
36
  # compare it to @user.sms_confirmation_code
37
- @user.update_attributes(:sms_confirmed => true)
37
+ @user.update_attributes(:sms_confirmed_phone_number => @user.sms_phone_number)
38
38
  @user.send_sms!("Hi! This is a text message.")
39
39
  # Then maybe the user will reply with 'BLOCK' by accident
40
40
  @user.unblock_sms!
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.5
1
+ 1.1.0
data/lib/contactable.rb CHANGED
@@ -5,7 +5,7 @@ module FourInfo
5
5
  :sms_blocked,
6
6
  :sms_confirmation_code,
7
7
  :sms_confirmation_attempted,
8
- :sms_confirmed ]
8
+ :sms_confirmed_phone_number ]
9
9
 
10
10
  def self.included(model)
11
11
  gem 'haml'
@@ -27,8 +27,8 @@ module FourInfo
27
27
  # provide a helper method to access the right value
28
28
  # no matter which column it's stored in
29
29
  #
30
- # e.g.: @user.four_info_sms_confirmed
31
- # => @user.send(User.sms_confirmed_column)
30
+ # e.g.: @user.four_info_sms_confirmation_code
31
+ # == @user.send(User.sms_confirmation_code_column)
32
32
  model.class_eval "
33
33
  def four_info_#{attribute}(value = nil)
34
34
  value ?
@@ -41,12 +41,19 @@ module FourInfo
41
41
  end
42
42
  end
43
43
 
44
+ def current_phone_number_confirmed_for_sms?
45
+ return false if four_info_sms_confirmed_phone_number.blank?
46
+ four_info_sms_confirmed_phone_number == four_info_sms_phone_number
47
+ end
48
+
44
49
  def send_sms!(msg, allow_multiple = false)
45
50
  if msg.to_s.size > 160 && !allow_multiple
46
51
  raise ArgumentError, "SMS Message is too long. Either specify that you want multiple messages or shorten the string."
47
52
  end
48
- return false if msg.to_s.strip.blank? || four_info_sms_blocked? || !four_info_sms_confirmed?
53
+ return false if msg.to_s.strip.blank? || four_info_sms_blocked?
54
+ return false unless current_phone_number_confirmed_for_sms?
49
55
 
56
+ # split into pieces that fit as individual messages.
50
57
  msg.to_s.scan(/.{1,160}/m).map do |text|
51
58
  FourInfo::Request.new.deliver_message(text, four_info_sms_phone_number).success?
52
59
  end
@@ -54,13 +61,13 @@ module FourInfo
54
61
 
55
62
  def confirm_sms!
56
63
  return false if four_info_sms_blocked?
57
- return true if four_info_sms_confirmed?
64
+ return true if current_phone_number_confirmed_for_sms?
58
65
  return false if four_info_sms_phone_number.blank?
59
66
 
60
67
  response = FourInfo::Request.new.confirm(four_info_sms_phone_number)
61
68
  if response.success?
62
- self.four_info_sms_confirmation_code = response.confirmation_code
63
- self.four_info_sms_confirmation_attempted = Time.now
69
+ self.four_info_sms_confirmation_code response.confirmation_code
70
+ self.four_info_sms_confirmation_attempted Time.now
64
71
  save
65
72
  else
66
73
  # "Confirmation Failed: #{response['message'].inspect}"
data/lib/response.rb CHANGED
@@ -16,7 +16,7 @@ module FourInfo
16
16
  end
17
17
 
18
18
  def confirmation_code
19
- self['confCode'].inner_text
19
+ self[:confcode].inner_text
20
20
  end
21
21
  end
22
22
  end
@@ -86,13 +86,16 @@ class FourInfoContactableTest < ActiveSupport::TestCase
86
86
  }
87
87
  should "work" do assert @worked end
88
88
  should "save confirmation number in proper attribute" do
89
- assert @user.four_info_sms_confirmation_code
89
+ assert_equal '123abc', @user.four_info_sms_confirmation_code
90
+ end
91
+ should "set confirmation attempted time" do
92
+ assert @user.four_info_sms_confirmation_attempted > 3.minutes.ago
90
93
  end
91
94
  should_change "stored code" do
92
95
  @user.four_info_sms_confirmation_code
93
96
  end
94
- should "not change sms_confirmed? to true" do
95
- assert !@user.four_info_sms_confirmed?
97
+ should "not have number confirmed yet" do
98
+ assert !@user.current_phone_number_confirmed_for_sms?
96
99
  end
97
100
  end
98
101
  context "confirming phone number when the confirmation fails for some reason" do
@@ -136,7 +139,7 @@ class FourInfoContactableTest < ActiveSupport::TestCase
136
139
  context "when the number is confirmed" do
137
140
  setup {
138
141
  FourInfo::Request.any_instance.stubs(:perform).returns(SendMsgSuccess)
139
- @user.update_attributes!(User.sms_confirmed_column => true)
142
+ @user.stubs(:current_phone_number_confirmed_for_sms?).returns(true)
140
143
  }
141
144
  context "sending a message" do
142
145
  setup { @result = @user.send_sms!('message') }
data/test/test_helper.rb CHANGED
@@ -16,7 +16,7 @@ ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'sqlite3'])
16
16
  ActiveRecord::Schema.define(:version => 1) do
17
17
  create_table :users do |t|
18
18
  t.column :sms_phone_number, :string
19
- t.column :sms_confirmed, :boolean
19
+ t.column :sms_confirmed_phone_number, :string
20
20
  t.column :sms_blocked, :boolean
21
21
  t.column :sms_confirmation_attempted, :datetime
22
22
  t.column :sms_confirmation_code, :string
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 4info
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Danger Canty