multi_sms 0.0.4 → 0.0.5

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.
@@ -7,9 +7,9 @@ module Providers
7
7
  end
8
8
 
9
9
  private
10
- # def method_missing(m, *args, &block)
11
- # # self.class.const_get(:API_VERSION)
12
- # end
10
+ def method_missing(m, *args, &block)
11
+ self.class.const_get(:API_VERSION)
12
+ end
13
13
  end
14
14
 
15
15
  end
@@ -1,3 +1,3 @@
1
1
  module MultiSms
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/multi_sms.rb CHANGED
@@ -13,6 +13,7 @@ end
13
13
 
14
14
  module MultiSms
15
15
 
16
+ class ConfigError < RuntimeError; end
16
17
  # When the authentication can't be done
17
18
  class AuthError < RuntimeError; end
18
19
  # Raised when the API server isn't working
@@ -41,7 +42,7 @@ module MultiSms
41
42
  #
42
43
  # Example:
43
44
  # MultiSms.config do |c|
44
- # c.foo = :bar
45
+ # c.default_provider = "Elk"
45
46
  # end
46
47
  #
47
48
  # MultiSms.config.foo # => :bar
@@ -51,7 +52,9 @@ module MultiSms
51
52
  end
52
53
 
53
54
  def send(country_code, parameters)
55
+ raise ConfigError, "MultiSms needs a default provider configured." unless config.default_provider.instance_of?(String)
54
56
  verify_parameters(parameters, [:from, :message, :to])
57
+
55
58
  provider = get_provider country_code
56
59
  provider.send(parameters)
57
60
  end
@@ -67,6 +70,7 @@ module MultiSms
67
70
  def get_provider(country_code)
68
71
  name = config.providers[country_code.to_s]
69
72
  name = config.default_provider unless name
73
+
70
74
  provider = "Providers::#{name}".split('::').inject(Object) {|o,c| o.const_get c}
71
75
  provider.new
72
76
  end
@@ -1,24 +1,49 @@
1
1
  require 'spec_helper'
2
2
  describe MultiSms do
3
3
 
4
- before do
5
- MultiSms.config do |config|
6
- config.providers = {"46" => "Elk", "47" => "Twilio"}
4
+ context "with a default provider" do
5
+ before do
6
+ MultiSms.config do |config|
7
+ config.providers = {"46" => "Elk", "47" => "Twilio"}
8
+ config.default_provider = "Twilio"
9
+ end
7
10
  end
8
- end
9
11
 
10
- it "should respond to providers" do
11
- MultiSms.providers.should eql ["Clickatell", "Elk", "Twilio"]
12
- end
12
+ it "should raise and exception if #to is missing" do
13
+ expect{MultiSms.send 46, from: "fake", message: "fake"}.to raise_error(MultiSms::MissingParameter)
14
+ end
15
+
16
+ it "should raise and exception if #from is missing" do
17
+ expect{MultiSms.send 46, to: "fake", message: "fake"}.to raise_error(MultiSms::MissingParameter)
18
+ end
19
+
20
+ it "should raise and exception if #message is missing" do
21
+ expect{MultiSms.send 46, to: "fake", from: "fake"}.to raise_error(MultiSms::MissingParameter)
22
+ end
23
+
24
+ it "should respond to providers" do
25
+ MultiSms.providers.should eql ["Clickatell", "Elk", "Twilio"]
26
+ end
27
+
28
+ it "should get provider based on swedish country code" do
29
+ provider = MultiSms.get_provider 46
30
+ provider.should be_an_instance_of Providers::Elk
31
+ end
32
+
33
+ it "should get provider based on norweigan country code" do
34
+ provider = MultiSms.get_provider 47
35
+ provider.should be_an_instance_of Providers::Twilio
36
+ end
37
+
38
+ it "should not pick default_provider for unconfigured country codes" do
39
+ provider = MultiSms.get_provider 45
40
+ provider.should be_an_instance_of Providers::Twilio
41
+ end
13
42
 
14
- it "should get provider based on swedish country code" do
15
- provider = MultiSms.get_provider 46
16
- provider.should be_an_instance_of Providers::Elk
17
43
  end
18
44
 
19
- it "should get provider based on norweigan country code" do
20
- provider = MultiSms.get_provider 47
21
- provider.should be_an_instance_of Providers::Twilio
45
+ it "should raise and exception if no default provider is configured" do
46
+ expect{MultiSms.send 46, to: "fake", from: "fake", message: "fake"}.to raise_error(MultiSms::ConfigError)
22
47
  end
23
48
 
24
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multi_sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -230,7 +230,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
230
  version: '0'
231
231
  segments:
232
232
  - 0
233
- hash: 3977358969120352856
233
+ hash: 2945269217158432553
234
234
  required_rubygems_version: !ruby/object:Gem::Requirement
235
235
  none: false
236
236
  requirements:
@@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
239
239
  version: '0'
240
240
  segments:
241
241
  - 0
242
- hash: 3977358969120352856
242
+ hash: 2945269217158432553
243
243
  requirements: []
244
244
  rubyforge_project: multi_sms
245
245
  rubygems_version: 1.8.24