sms-spec 0.0.9

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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in text_spec.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard 'rspec', :cli => "--color", :notification => true do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
data/README.markdown ADDED
@@ -0,0 +1,55 @@
1
+ # SMS Spec
2
+
3
+ An RSpec DSL and Cucumber steps to test SMS interactions with your
4
+ Ruby on Rails application.
5
+
6
+ Currently this gem only supports testing SMS messageing using the
7
+ [twilio-ruby](https://github.com/twilio/twilio-ruby) gem.
8
+
9
+ ##Setup
10
+ Add the sms\_spec gem to your Gemfile:
11
+ <pre>
12
+ group :test do
13
+ gem 'sms_spec'
14
+ end
15
+ </pre>
16
+
17
+ ## RSpec
18
+ In your spec\_helper.rb file add the following:
19
+ <pre>
20
+ require 'sms_spec'
21
+ </pre>
22
+
23
+ If you want to have the helpers available in all of your example groups,
24
+ you can add the following to your spec_helper.rb:
25
+ <pre>
26
+ Spec::Runner.configure do |config|
27
+ config.include(SmsSpec::Helpers)
28
+ config.include(SmsSpec::Matchers)
29
+ end
30
+ </pre>
31
+
32
+ Otherwise you will have to incliude the helpers and matchers in any
33
+ example where you use them:
34
+
35
+ <pre>
36
+ describe "MyController" do
37
+ include SmsSpec::Helpers
38
+ include SmsSpec::Matchers
39
+ end
40
+ </pre>
41
+
42
+ ## Cucumber
43
+ Add the folloing to you env.rb file:
44
+
45
+ <pre>
46
+ require 'sms_spec'
47
+ require 'sms_spec/cucumber'
48
+ </pre>
49
+
50
+ This loads the sms\_spec RSpec helpers into your cucumber wold. Then,
51
+ run the following to generate the text\_messsage\_steps.rb file:
52
+
53
+ <pre>
54
+ rails generate sms_spec:steps
55
+ </pre>
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,6 @@
1
+ Description:
2
+ Creates text_message_steps.rb in your cucumber step_definitions.
3
+
4
+ Examples:
5
+ `script/rails generate text_spec:steps`
6
+
@@ -0,0 +1,14 @@
1
+ require 'rails/generators'
2
+
3
+ module SmsSpec
4
+ class StepsGenerator < Rails::Generators::Base
5
+ def generate
6
+ copy_file 'text_message_steps.rb', 'features/step_definitions/text_message_steps.rb'
7
+ end
8
+
9
+ def self.source_root
10
+ File.join(File.dirname(__FILE__), 'templates')
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,44 @@
1
+ # -------------------------------------------
2
+ # Available methods
3
+ # -------------------------------------------
4
+
5
+ # messages
6
+ # add_message
7
+ # set_current_number
8
+ # current_number
9
+ # clear_messages
10
+ # current_text_message
11
+ # open_last_text_message_for
12
+
13
+
14
+ Given /^no text messages have been sent$/ do
15
+ clear_messages
16
+ end
17
+
18
+ Given /^all text messages have been read$/ do
19
+ clear_messages
20
+ end
21
+
22
+ Then /^"([^"]*)" should receive a text message$/ do |phone_number|
23
+ messages_for(phone_number).should_not be_empty
24
+ end
25
+
26
+ Then /^"([^"]*)" should receive no text messages$/ do |phone_number|
27
+ messages_for(phone_number).should be_empty
28
+ end
29
+
30
+ When /^"([^"]*?)" opens? the text message$/ do |mobile_number|
31
+ open_last_text_message_for(mobile_number)
32
+ end
33
+
34
+ Then /^I should see "([^"]*)" in the text message body$/ do |content|
35
+ current_text_message.should have_body(content)
36
+ end
37
+
38
+ Then /^I should see "([^"]*)" in the text message body$/ do |content|
39
+ current_text_message.should have_body(content)
40
+ end
41
+
42
+ Then /^I should see the following in the text message body:$/ do |content|
43
+ current_text_message.should have_body(content)
44
+ end
data/lib/sms-spec.rb ADDED
@@ -0,0 +1 @@
1
+ require 'sms_spec'
data/lib/sms_spec.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'rspec'
2
+ require "sms_spec/version"
3
+ require "sms_spec/helpers"
4
+ require "sms_spec/data"
5
+ require "sms_spec/message"
6
+ require "sms_spec/util"
7
+ require "sms_spec/mobile_device"
8
+ require "sms_spec/matchers"
9
+ #require "sms_spec/drivers/twilio-ruby"
10
+
11
+ module SmsSpec
12
+ def self.driver=(driver_sym)
13
+ require "sms_spec/drivers/#{driver_sym.to_s}"
14
+ end
15
+
16
+ SmsSpec.driver = :"twilio-ruby"
17
+ end
@@ -0,0 +1,6 @@
1
+ After do
2
+ SmsSpec::Data.clear_messages
3
+ end
4
+
5
+ World(SmsSpec::Helpers)
6
+ World(SmsSpec::Matchers)
@@ -0,0 +1,43 @@
1
+ require 'sms_spec/util'
2
+
3
+ module SmsSpec
4
+ class Data
5
+ extend SmsSpec::Util
6
+
7
+ def self.add_message message
8
+ @@messages ||= []
9
+ @@messages << message
10
+ end
11
+
12
+ def self.clear_messages
13
+ @@messages = []
14
+ @@current_text_message = nil
15
+ end
16
+
17
+ def self.messages
18
+ @@messages ||= []
19
+ end
20
+
21
+ def self.set_current_number(number)
22
+ @@current_number = sanitize number
23
+ end
24
+
25
+ def self.current_number
26
+ @@current_number
27
+ end
28
+
29
+ def self.current_text_message
30
+ @@current_text_message ||= nil
31
+ end
32
+
33
+ def self.open_last_text_message_for(phone_number)
34
+ message = messages_for(phone_number).first
35
+ @@current_text_message = @@messages.delete(message)
36
+ end
37
+
38
+ def self.messages_for(phone_number)
39
+ @@messages.select {|m| m.number == sanitize(phone_number)}
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ class Twilio::REST::Client
2
+
3
+ def initialize(account_sid, auth_token)
4
+ end
5
+
6
+ class Messages
7
+ include SmsSpec::Helpers
8
+
9
+ def create(opts={})
10
+ to = opts[:to]
11
+ body = opts[:body]
12
+ add_message Message.new(:number => to, :body => body)
13
+ end
14
+ end
15
+
16
+ class Sms
17
+ def messages
18
+ return Messages.new
19
+ end
20
+ end
21
+
22
+ class Account
23
+ def sms
24
+ return Sms.new
25
+ end
26
+ end
27
+
28
+ def account
29
+ return Account.new
30
+ end
31
+ end
@@ -0,0 +1,40 @@
1
+ require 'forwardable'
2
+
3
+ module SmsSpec
4
+ module Helpers
5
+ extend Forwardable
6
+
7
+ def_delegators :"SmsSpec::Data",
8
+ :messages,
9
+ :add_message,
10
+ :set_current_number,
11
+ :current_number,
12
+ :clear_messages,
13
+ :current_text_message,
14
+ :messages_for,
15
+ :open_last_text_message_for
16
+
17
+ def twiml_message(from, body, opts={})
18
+ base_options = {
19
+ "AccountSid"=>"1234567812345678",
20
+ "Body"=> body,
21
+ "ToZip"=>"94949",
22
+ "FromState"=>"MI",
23
+ "ToCity"=>"NOVATO",
24
+ "SmsSid"=>"1234567812345678",
25
+ "ToState"=>"CA",
26
+ "To"=>"8155552671",
27
+ "ToCountry"=>"US",
28
+ "FromCountry"=>"US",
29
+ "SmsMessageSid"=>"123456712345671234567",
30
+ "ApiVersion"=>"2008-08-01",
31
+ "FromCity"=>"GRAND RAPIDS",
32
+ "SmsStatus"=>"received",
33
+ "From"=> from,
34
+ "FromZip"=>"49507"
35
+ }
36
+
37
+ base_options.merge! opts
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,33 @@
1
+ module SmsSpec
2
+ module Matchers
3
+
4
+ RSpec::Matchers.define :have_text_messages do
5
+ match do |mobile_device|
6
+ mobile_device.messages.count > 0
7
+ end
8
+
9
+ failure_message_for_should do |mobile_device|
10
+ "expected the mobile device '#{mobile_device.number}' to have text messages but it did not"
11
+ end
12
+
13
+ failure_message_for_should_not do |mobile_device|
14
+ "expected the mobile device '#{mobile_device.number}' to have no text messages but it did"
15
+ end
16
+ end
17
+
18
+ RSpec::Matchers.define :have_body do |expected_body|
19
+ match do |message|
20
+ message.body == expected_body
21
+ end
22
+
23
+ #failure_message_for_should do |mobile_device|
24
+ #"expected the mobile device '#{mobile_device.number}' to have text messages but it did not"
25
+ #end
26
+
27
+ #failure_message_for_should_not do |mobile_device|
28
+ #"expected the mobile device '#{mobile_device.number}' to have no text messages but it did"
29
+ #end
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ class Message
2
+ attr_accessor :number
3
+ attr_accessor :body
4
+
5
+ include SmsSpec::Util
6
+
7
+ def initialize(opts={})
8
+ @number = sanitize opts[:number]
9
+ @body = opts[:body]
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ class MobileDevice
2
+
3
+ def initialize(number)
4
+ @number = number
5
+ end
6
+
7
+ def messages
8
+ SmsSpec::Data.messages.select {|d| d.number == @number}
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module SmsSpec
2
+ module Util
3
+ def sanitize number
4
+ number.gsub(/^\+*1/, "").gsub("-", "")
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module SmsSpec
2
+ VERSION = "0.0.9"
3
+ end
@@ -0,0 +1,36 @@
1
+ # -------------------------------------------
2
+ # Available methods
3
+ # -------------------------------------------
4
+
5
+ # messages
6
+ # add_message
7
+ # set_current_number
8
+ # current_number
9
+ # clear_messages
10
+ # current_text_message
11
+ # open_last_text_message_for
12
+
13
+
14
+ Given /^no text messages have been sent$/ do
15
+ clear_messages
16
+ end
17
+
18
+ Given /^all text messages have been read$/ do
19
+ clear_messages
20
+ end
21
+
22
+ Then /^"([^"]*)" should receive a text message$/ do |phone_number|
23
+ messages_for(phone_number).should_not be_empty
24
+ end
25
+
26
+ Then /^"([^"]*)" should receive no text messages$/ do |phone_number|
27
+ messages_for(phone_number).should be_empty
28
+ end
29
+
30
+ When /^"([^"]*?)" opens? the text message$/ do |mobile_number|
31
+ open_last_text_message_for(mobile_number)
32
+ end
33
+
34
+ Then /^I should see "([^"]*)" in the text message body$/ do |content|
35
+ current_text_message.should have_body(content)
36
+ end
@@ -0,0 +1,14 @@
1
+ base = defined?(Rails) ? Rails::Generator::Base : RubiGen::Base
2
+
3
+ class SmsSpecGenerator < base
4
+ def manifest
5
+ m.directory 'features/step_definitions'
6
+ m.file 'text_message_steps.rb', 'features/step_definitions/text_message_steps.rb'
7
+ end
8
+
9
+ protected
10
+
11
+ def banner
12
+ "Usage: #{0} sms_spec"
13
+ end
14
+ end
data/sms-spec.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "sms_spec/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "sms-spec"
7
+ s.version = SmsSpec::VERSION
8
+ s.authors = ["Chris Rittersdorf"]
9
+ s.email = ["manlycode@gmail.com"]
10
+ s.homepage = "https://github.com/mhs/sms_spec"
11
+ s.summary = %q{Test SMS interactions with RSpec and Cucumber}
12
+ s.description = %q{Text Spec gives you an RSpec DSL and Cucumber steps to test SMS interactions.}
13
+
14
+ s.rubyforge_project = "sms_spec"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency 'rspec'
22
+
23
+ s.add_development_dependency "rspec"
24
+ s.add_development_dependency "twilio-ruby"
25
+ s.add_development_dependency "guard-rspec"
26
+ s.add_development_dependency "pry"
27
+ end
@@ -0,0 +1,31 @@
1
+ require 'twilio-ruby'
2
+ require File.join(File.dirname(__FILE__), *%w[spec_helper])
3
+
4
+ describe SmsSpec do
5
+ include SmsSpec::Helpers
6
+
7
+ before :each do
8
+ SmsSpec::Data.clear_messages
9
+ end
10
+
11
+ describe "the twilio-ruby driver" do
12
+ it "is assignable" do
13
+ SmsSpec.driver = :"twilio-ruby"
14
+ end
15
+
16
+ it "intercepts calls to twilio's sms client" do
17
+ account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
18
+ auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
19
+
20
+ @client = Twilio::REST::Client.new account_sid, auth_token
21
+ @client.account.sms.messages.create(
22
+ :from => '+14159341234',
23
+ :to => '+16105557069',
24
+ :body => 'Hey there!'
25
+ )
26
+
27
+ open_last_text_message_for("+16105557069")
28
+ current_text_message.should_not be_nil
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,124 @@
1
+ require File.join(File.dirname(__FILE__), *%w[spec_helper])
2
+
3
+ describe SmsSpec::Helpers do
4
+ include SmsSpec::Helpers
5
+
6
+ before :each do
7
+ SmsSpec::Data.clear_messages
8
+ end
9
+
10
+ describe ".messages" do
11
+ describe "before any messages have been sent" do
12
+ it "is empty" do
13
+ messages.should be_empty
14
+ end
15
+ end
16
+
17
+ describe "after a message has been sent" do
18
+ it "adds a message" do
19
+ lambda {
20
+ add_message Message.new :number => "5555555512", :body => "Hello there"
21
+ }.should change(messages, :count).by(1)
22
+ end
23
+ end
24
+ end
25
+
26
+ describe ".set_current_number" do
27
+ it "assigns the current number" do
28
+ set_current_number "555551234"
29
+ current_number.should == "555551234"
30
+ end
31
+
32
+ it "sanitizes phone nubmers" do
33
+ set_current_number "+1555551234"
34
+ current_number.should == "555551234"
35
+
36
+ set_current_number "1-616-555-2929"
37
+ current_number.should == "6165552929"
38
+ end
39
+ end
40
+
41
+ describe ".clear_sms_messages" do
42
+ it "removes all messages" do
43
+ add_message Message.new :number => "5555555512", :body => "Hello there"
44
+ add_message Message.new :number => "5555555512", :body => "Hello there"
45
+ add_message Message.new :number => "5555555512", :body => "Hello there"
46
+
47
+ messages.should have(3).messages
48
+ end
49
+ end
50
+
51
+ describe ".current_text_message" do
52
+ describe "when there are not text messages yet" do
53
+ before :each do
54
+ SmsSpec::Data.clear_messages
55
+ end
56
+
57
+ it "returns nil" do
58
+ current_text_message.should be_nil
59
+ end
60
+ end
61
+
62
+ describe "when there are messages" do
63
+ let(:message1) { Message.new :number => "5555555513", :body => "Hi" }
64
+ let(:message2) { Message.new :number => "5555555512", :body => "Hello there" }
65
+
66
+ before do
67
+ add_message message1
68
+ add_message message2
69
+ end
70
+
71
+ describe "and no messages have been opened" do
72
+ it "should be nil" do
73
+ current_text_message.should be_nil
74
+ end
75
+ end
76
+
77
+ describe "and a message has been opened" do
78
+ before do
79
+ open_last_text_message_for("5555555513")
80
+ end
81
+
82
+ it "returns the last open text message" do
83
+ current_text_message.should == message1
84
+
85
+ open_last_text_message_for("5555555513")
86
+ current_text_message.should be_nil
87
+
88
+ open_last_text_message_for("5555555512")
89
+ current_text_message.should == message2
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ describe ".twiml_message" do
96
+ context "with defaults" do
97
+ let(:message) {
98
+ twiml_message("+16165559982", "Ahoy!")
99
+ }
100
+
101
+ it "modifies the From attribute" do
102
+ message["From"].should eql("+16165559982")
103
+ end
104
+
105
+ it "Modifies the Body attribute" do
106
+ message["Body"].should eql("Ahoy!")
107
+ end
108
+ end
109
+
110
+ describe "Overriding options" do
111
+ let(:message) {
112
+ twiml_message("+16165559982", "Ahoy!", "ToZip" => "49506", "ToCity" => "Detroit")
113
+ }
114
+
115
+ it "overrides the specified attributes" do
116
+ message["ToZip"].should eql("49506")
117
+ message["ToCity"].should eql("Detroit")
118
+ message["Body"].should eql("Ahoy!")
119
+ message["From"].should eql("+16165559982")
120
+ end
121
+ end
122
+ end
123
+
124
+ end
@@ -0,0 +1,70 @@
1
+ require File.join(File.dirname(__FILE__), *%w[spec_helper])
2
+
3
+ describe SmsSpec::Matchers do
4
+ include SmsSpec::Helpers
5
+ include SmsSpec::Matchers
6
+
7
+ let(:mobile_number) { "5555555512" }
8
+
9
+ class MatcherMatch
10
+ def initialize(object_to_test_match)
11
+ @object_to_test_match = object_to_test_match
12
+ end
13
+
14
+ def description
15
+ "match when provided #{@object_to_test_match.inspect}"
16
+ end
17
+
18
+ def matches?(matcher)
19
+ @matcher = matcher
20
+ matcher.matches?(@object_to_test_match)
21
+ end
22
+
23
+ def failure_message
24
+ "expected #{@matcher.inspect} to match when provided #{@object_to_test_match.inspect}, but it did not"
25
+ end
26
+
27
+ def negative_failure_message
28
+ "expected #{@matcher.inspect} not to match when provided #{@object_to_test_match.inspect}, but it did"
29
+ end
30
+ end
31
+
32
+ def match(object_to_test_match)
33
+ if object_to_test_match.is_a?(Regexp)
34
+ super # delegate to rspec's built in 'match' matcher
35
+ else
36
+ MatcherMatch.new(object_to_test_match)
37
+ end
38
+ end
39
+
40
+ describe ".have_text_messages" do
41
+ include SmsSpec::Matchers
42
+
43
+ describe "when the mobile device has no text messages" do
44
+ it "should not match" do
45
+ device = MobileDevice.new(:number => mobile_number)
46
+ have_text_messages.should_not match(device)
47
+ end
48
+ end
49
+
50
+ describe "when the mobile device has text messages" do
51
+ it "should match" do
52
+ add_message Message.new(:number => mobile_number, :body => "something")
53
+
54
+ device = MobileDevice.new(mobile_number)
55
+ have_text_messages.should match(device)
56
+ end
57
+ end
58
+ end
59
+
60
+ describe ".have_body" do
61
+ describe "when bodies match" do
62
+ it "matches" do
63
+ message = Message.new(:number => mobile_number, :body => "something")
64
+
65
+ have_body("something").should match(message)
66
+ end
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,4 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. lib sms-spec])
2
+
3
+ require 'rubygems'
4
+ require 'pry'
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sms-spec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.9
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Rittersdorf
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-18 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &2157261680 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2157261680
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &2157260980 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2157260980
36
+ - !ruby/object:Gem::Dependency
37
+ name: twilio-ruby
38
+ requirement: &2157260320 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2157260320
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard-rspec
49
+ requirement: &2157259700 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2157259700
58
+ - !ruby/object:Gem::Dependency
59
+ name: pry
60
+ requirement: &2157259140 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2157259140
69
+ description: Text Spec gives you an RSpec DSL and Cucumber steps to test SMS interactions.
70
+ email:
71
+ - manlycode@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - Guardfile
79
+ - README.markdown
80
+ - Rakefile
81
+ - lib/generators/text_spec/steps/USAGE
82
+ - lib/generators/text_spec/steps/steps_generator.rb
83
+ - lib/generators/text_spec/steps/templates/text_message_steps.rb
84
+ - lib/sms-spec.rb
85
+ - lib/sms_spec.rb
86
+ - lib/sms_spec/cucumber.rb
87
+ - lib/sms_spec/data.rb
88
+ - lib/sms_spec/drivers/twilio-ruby.rb
89
+ - lib/sms_spec/helpers.rb
90
+ - lib/sms_spec/matchers.rb
91
+ - lib/sms_spec/message.rb
92
+ - lib/sms_spec/mobile_device.rb
93
+ - lib/sms_spec/util.rb
94
+ - lib/sms_spec/version.rb
95
+ - rails_generators/text_spec/templates/text_message_steps.rb
96
+ - rails_generators/text_spec_generator.rb
97
+ - sms-spec.gemspec
98
+ - spec/drivers_spec.rb
99
+ - spec/helpers_spec.rb
100
+ - spec/matchers_spec.rb
101
+ - spec/spec_helper.rb
102
+ homepage: https://github.com/mhs/sms_spec
103
+ licenses: []
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project: sms_spec
122
+ rubygems_version: 1.8.6
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Test SMS interactions with RSpec and Cucumber
126
+ test_files:
127
+ - spec/drivers_spec.rb
128
+ - spec/helpers_spec.rb
129
+ - spec/matchers_spec.rb
130
+ - spec/spec_helper.rb