text_spec 0.0.1
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 +4 -0
- data/Gemfile +4 -0
- data/Guardfile +5 -0
- data/Rakefile +1 -0
- data/lib/text_spec/cucumber.rb +10 -0
- data/lib/text_spec/data.rb +43 -0
- data/lib/text_spec/drivers/twilio-ruby.rb +31 -0
- data/lib/text_spec/helpers.rb +17 -0
- data/lib/text_spec/matchers.rb +33 -0
- data/lib/text_spec/message.rb +11 -0
- data/lib/text_spec/mobile_device.rb +10 -0
- data/lib/text_spec/util.rb +7 -0
- data/lib/text_spec/version.rb +3 -0
- data/lib/text_spec.rb +15 -0
- data/rails_generators/text_spec/templates/text_message_steps.rb +36 -0
- data/rails_generators/text_spec_generator.rb +14 -0
- data/spec/drivers_spec.rb +32 -0
- data/spec/helpers_spec.rb +96 -0
- data/spec/matchers_spec.rb +70 -0
- data/spec/spec_helper.rb +4 -0
- data/text_spec.gemspec +27 -0
- metadata +126 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'bundler/gem_tasks'
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'text_spec/util'
|
|
2
|
+
|
|
3
|
+
module TextSpec
|
|
4
|
+
class Data
|
|
5
|
+
extend TextSpec::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 TextSpec::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,17 @@
|
|
|
1
|
+
require 'forwardable'
|
|
2
|
+
|
|
3
|
+
module TextSpec
|
|
4
|
+
module Helpers
|
|
5
|
+
extend Forwardable
|
|
6
|
+
|
|
7
|
+
def_delegators :"TextSpec::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
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module TextSpec
|
|
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
|
data/lib/text_spec.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'rspec'
|
|
2
|
+
require "text_spec/version"
|
|
3
|
+
require "text_spec/helpers"
|
|
4
|
+
require "text_spec/data"
|
|
5
|
+
require "text_spec/message"
|
|
6
|
+
require "text_spec/util"
|
|
7
|
+
require "text_spec/mobile_device"
|
|
8
|
+
require "text_spec/matchers"
|
|
9
|
+
#require "text_spec/drivers/twilio-ruby"
|
|
10
|
+
|
|
11
|
+
module TextSpec
|
|
12
|
+
def self.driver=(driver_sym)
|
|
13
|
+
require "text_spec/drivers/#{driver_sym.to_s}"
|
|
14
|
+
end
|
|
15
|
+
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 TextSpecGenerator < 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} text_spec"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[spec_helper])
|
|
2
|
+
require 'twilio-ruby'
|
|
3
|
+
|
|
4
|
+
describe TextSpec do
|
|
5
|
+
include TextSpec::Helpers
|
|
6
|
+
|
|
7
|
+
before :each do
|
|
8
|
+
TextSpec::Data.clear_messages
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
describe "the twilio-ruby driver" do
|
|
13
|
+
it "is assignable" do
|
|
14
|
+
TextSpec.driver = :"twilio-ruby"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "intercepts calls to twilio's sms client" do
|
|
18
|
+
account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
|
19
|
+
auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
|
|
20
|
+
|
|
21
|
+
@client = Twilio::REST::Client.new account_sid, auth_token
|
|
22
|
+
@client.account.sms.messages.create(
|
|
23
|
+
:from => '+14159341234',
|
|
24
|
+
:to => '+16105557069',
|
|
25
|
+
:body => 'Hey there!'
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
open_last_text_message_for("+16105557069")
|
|
29
|
+
current_text_message.should_not be_nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[spec_helper])
|
|
2
|
+
|
|
3
|
+
describe TextSpec::Helpers do
|
|
4
|
+
include TextSpec::Helpers
|
|
5
|
+
|
|
6
|
+
before :each do
|
|
7
|
+
TextSpec::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
|
+
TextSpec::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
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), *%w[spec_helper])
|
|
2
|
+
|
|
3
|
+
describe TextSpec::Matchers do
|
|
4
|
+
include TextSpec::Helpers
|
|
5
|
+
include TextSpec::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 TextSpec::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
|
data/spec/spec_helper.rb
ADDED
data/text_spec.gemspec
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "text_spec/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "text_spec"
|
|
7
|
+
s.version = TextSpec::VERSION
|
|
8
|
+
s.authors = ["Chris Rittersdorf"]
|
|
9
|
+
s.email = ["manlycode@gmail.com"]
|
|
10
|
+
s.homepage = ""
|
|
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 (currently only usint the twilio-rb gem).}
|
|
13
|
+
|
|
14
|
+
s.rubyforge_project = "text_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
|
metadata
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: text_spec
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Chris Rittersdorf
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-02-05 00:00:00.000000000Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
requirement: &2168620540 !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: *2168620540
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: rspec
|
|
27
|
+
requirement: &2168620060 !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: *2168620060
|
|
36
|
+
- !ruby/object:Gem::Dependency
|
|
37
|
+
name: twilio-ruby
|
|
38
|
+
requirement: &2168619540 !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: *2168619540
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: guard-rspec
|
|
49
|
+
requirement: &2168618940 !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: *2168618940
|
|
58
|
+
- !ruby/object:Gem::Dependency
|
|
59
|
+
name: pry
|
|
60
|
+
requirement: &2168618400 !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: *2168618400
|
|
69
|
+
description: Text Spec gives you an RSpec DSL and Cucumber steps to test SMS interactions
|
|
70
|
+
(currently only usint the twilio-rb gem).
|
|
71
|
+
email:
|
|
72
|
+
- manlycode@gmail.com
|
|
73
|
+
executables: []
|
|
74
|
+
extensions: []
|
|
75
|
+
extra_rdoc_files: []
|
|
76
|
+
files:
|
|
77
|
+
- .gitignore
|
|
78
|
+
- Gemfile
|
|
79
|
+
- Guardfile
|
|
80
|
+
- Rakefile
|
|
81
|
+
- lib/text_spec.rb
|
|
82
|
+
- lib/text_spec/cucumber.rb
|
|
83
|
+
- lib/text_spec/data.rb
|
|
84
|
+
- lib/text_spec/drivers/twilio-ruby.rb
|
|
85
|
+
- lib/text_spec/helpers.rb
|
|
86
|
+
- lib/text_spec/matchers.rb
|
|
87
|
+
- lib/text_spec/message.rb
|
|
88
|
+
- lib/text_spec/mobile_device.rb
|
|
89
|
+
- lib/text_spec/util.rb
|
|
90
|
+
- lib/text_spec/version.rb
|
|
91
|
+
- rails_generators/text_spec/templates/text_message_steps.rb
|
|
92
|
+
- rails_generators/text_spec_generator.rb
|
|
93
|
+
- spec/drivers_spec.rb
|
|
94
|
+
- spec/helpers_spec.rb
|
|
95
|
+
- spec/matchers_spec.rb
|
|
96
|
+
- spec/spec_helper.rb
|
|
97
|
+
- text_spec.gemspec
|
|
98
|
+
homepage: ''
|
|
99
|
+
licenses: []
|
|
100
|
+
post_install_message:
|
|
101
|
+
rdoc_options: []
|
|
102
|
+
require_paths:
|
|
103
|
+
- lib
|
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
|
+
none: false
|
|
106
|
+
requirements:
|
|
107
|
+
- - ! '>='
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
|
+
none: false
|
|
112
|
+
requirements:
|
|
113
|
+
- - ! '>='
|
|
114
|
+
- !ruby/object:Gem::Version
|
|
115
|
+
version: '0'
|
|
116
|
+
requirements: []
|
|
117
|
+
rubyforge_project: text_spec
|
|
118
|
+
rubygems_version: 1.8.6
|
|
119
|
+
signing_key:
|
|
120
|
+
specification_version: 3
|
|
121
|
+
summary: Test SMS interactions with RSpec and Cucumber
|
|
122
|
+
test_files:
|
|
123
|
+
- spec/drivers_spec.rb
|
|
124
|
+
- spec/helpers_spec.rb
|
|
125
|
+
- spec/matchers_spec.rb
|
|
126
|
+
- spec/spec_helper.rb
|