assistly 0.1.4 → 0.1.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.
- data/HISTORY.mkd +9 -0
- data/README.mkd +35 -19
- data/assistly.gemspec +3 -1
- data/lib/assistly/client/customer.rb +4 -4
- data/lib/assistly/client/interaction.rb +36 -3
- data/lib/assistly/configuration.rb +6 -2
- data/lib/assistly/error.rb +5 -0
- data/lib/assistly/version.rb +1 -1
- data/spec/assistly/api_spec.rb +1 -0
- data/spec/assistly/client/case_spec.rb +6 -6
- data/spec/assistly/client/interaction_spec.rb +122 -3
- data/spec/assistly_spec.rb +13 -0
- data/spec/helper.rb +2 -0
- metadata +58 -27
data/HISTORY.mkd
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.1.5 - April 15, 2011
|
2
|
+
-------------------------
|
3
|
+
* Support for creating outbound interactions via email
|
4
|
+
|
5
|
+
0.1.1 - 0.1.4 - April 14, 2011
|
6
|
+
-------------------------
|
7
|
+
* Miscellaneous bug fixes found when actually using this in production.
|
8
|
+
* Moved to Zencoder Github account
|
9
|
+
|
1
10
|
0.1 - April 12, 2011
|
2
11
|
-------------------------
|
3
12
|
* Initial release
|
data/README.mkd
CHANGED
@@ -24,54 +24,70 @@ Usage Examples
|
|
24
24
|
# All methods require authentication. To get your Assistly OAuth credentials,
|
25
25
|
# register an app in the Assistly admin for your account at http://your-domain.assistly.com/admin
|
26
26
|
@assistly = Assistly.configure do |config|
|
27
|
+
config.subdomain = YOUR_ASSISTLY_SUBDOMAIN
|
27
28
|
config.consumer_key = YOUR_CONSUMER_KEY
|
28
29
|
config.consumer_secret = YOUR_CONSUMER_SECRET
|
29
30
|
config.oauth_token = YOUR_OAUTH_TOKEN
|
30
31
|
config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
|
31
32
|
end
|
32
|
-
|
33
|
+
|
33
34
|
# List cases
|
34
35
|
@assistly.cases
|
35
36
|
@assistly.cases(:since_id => 12345)
|
36
|
-
|
37
|
+
|
37
38
|
# Get a specific case
|
38
39
|
@assistly.case(12345)
|
39
|
-
|
40
|
+
|
40
41
|
# Update a specific case
|
41
42
|
@assistly.update_case(12345, :subject => "Something Else")
|
42
|
-
|
43
|
+
|
44
|
+
# Get a case url
|
45
|
+
@assistly.case_url(12345)
|
46
|
+
|
43
47
|
# List customers
|
44
48
|
@assistly.customers
|
45
49
|
@assistly.customers(:since_id => 12345, :count => 5)
|
46
|
-
|
50
|
+
|
47
51
|
# Get a specific customer
|
48
52
|
@assistly.customer(12345)
|
49
|
-
|
53
|
+
|
50
54
|
# Create a customer
|
51
55
|
@assistly.create_customer(:name => "Chris Warren", :twitter => "cdwarren")
|
52
|
-
|
56
|
+
|
53
57
|
# Update a customer
|
54
58
|
@assistly.update_customer(12345, :name => "Christopher Warren")
|
55
|
-
|
59
|
+
|
56
60
|
# Add a customer email
|
57
61
|
@assistly.create_customer_email(12345, "foo@example.com")
|
58
62
|
@assistly.create_customer_email(12345, "foo@example.com", :customer_contact_type => "work")
|
59
|
-
|
63
|
+
|
60
64
|
# Update a customer email
|
61
65
|
@assistly.update_customer_email(12345, 54321, :email => "foo@example.com")
|
62
66
|
@assistly.update_customer_email(12345, 54321, :customer_contact_type => "work")
|
63
|
-
|
67
|
+
|
64
68
|
# List interactions
|
65
69
|
@assistly.interactions
|
66
70
|
@assistly.interactions(:since_id => 12345)
|
67
71
|
@assistly.interactions(:since_id => 12345, :count => 5)
|
72
|
+
|
73
|
+
# Create an inbound interaction
|
74
|
+
@assistly.create_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")
|
75
|
+
@assistly.create_inbound_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")
|
68
76
|
|
69
|
-
# Create an interaction
|
70
|
-
|
71
|
-
|
77
|
+
# Create an outbound interaction
|
78
|
+
# Assistly's API doesn't support creating outbound communications, so we do this over email with a BCC back to Assistly and customer headers.
|
79
|
+
# Assistly.support_email must be set to your Assistly email address so that the email can be sent to the account and give the customer someone to respond to.
|
80
|
+
#
|
81
|
+
# Read more at http://support.assistly.com/customer/portal/articles/4180
|
82
|
+
# Additional headers can be passed as well http://support.assistly.com/customer/portal/articles/6728
|
83
|
+
#
|
84
|
+
# Email is sent using Pony https://github.com/benprew/pony
|
85
|
+
@assistly.create_interaction(:interaction_subject => "Missed Your Call", :customer_email => "foo@example.com", :interaction_body => "Sorry we missed yoru call. What's up?", :direction => "outbound")
|
86
|
+
@assistly.create_outbound_interaction("foo@example.com", "Missed Your Call", "Sorry we missed yoru call. What's up?")
|
87
|
+
|
72
88
|
# List users
|
73
89
|
@assistly.users
|
74
|
-
|
90
|
+
|
75
91
|
# Get a specific user
|
76
92
|
@assistly.user(12345)
|
77
93
|
|
@@ -88,15 +104,15 @@ Here are some ways *you* can contribute:
|
|
88
104
|
* by writing specifications
|
89
105
|
* by writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
|
90
106
|
* by refactoring code
|
91
|
-
* by closing [issues](http://github.com/
|
107
|
+
* by closing [issues](http://github.com/zencoder/assistly/issues)
|
92
108
|
* by reviewing patches
|
93
109
|
|
94
|
-
All contributors will be added to the [HISTORY](https://github.com/
|
110
|
+
All contributors will be added to the [HISTORY](https://github.com/zencoder/assistly/blob/master/HISTORY.mkd)
|
95
111
|
file and will receive the respect and gratitude of the community.
|
96
112
|
|
97
113
|
Submitting an Issue
|
98
114
|
-------------------
|
99
|
-
We use the [GitHub issue tracker](http://github.com/
|
115
|
+
We use the [GitHub issue tracker](http://github.com/zencoder/assistly/issues) to track bugs and
|
100
116
|
features. Before submitting a bug report or feature request, check to make sure it hasn't already
|
101
117
|
been submitted. You can indicate support for an existing issuse by voting it up. When submitting a
|
102
118
|
bug report, please include a [Gist](http://gist.github.com/) that includes a stack trace and any
|
@@ -117,5 +133,5 @@ Submitting a Pull Request
|
|
117
133
|
|
118
134
|
Copyright
|
119
135
|
---------
|
120
|
-
Copyright (c) 2011 Chris Warren
|
121
|
-
See [LICENSE](https://github.com/
|
136
|
+
Copyright (c) 2011 Chris Warren/Zencoder
|
137
|
+
See [LICENSE](https://github.com/zencoder/assistly/blob/master/LICENSE.mkd) for details.
|
data/assistly.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.add_development_dependency('maruku', '~> 0.6')
|
8
8
|
s.add_development_dependency('rake', '~> 0.8')
|
9
9
|
s.add_development_dependency('rspec', '~> 2.5')
|
10
|
+
s.add_development_dependency('email_spec', '~> 1.1.1')
|
10
11
|
s.add_development_dependency('simplecov', '~> 0.4')
|
11
12
|
s.add_development_dependency('webmock', '~> 1.6')
|
12
13
|
s.add_development_dependency('yard', '~> 0.6')
|
@@ -19,8 +20,9 @@ Gem::Specification.new do |s|
|
|
19
20
|
s.add_runtime_dependency('multi_xml', '~> 0.2.0')
|
20
21
|
s.add_runtime_dependency('rash', '~> 0.3.0')
|
21
22
|
s.add_runtime_dependency('simple_oauth', '~> 0.1.4')
|
23
|
+
s.add_runtime_dependency('pony', '~> 1.1')
|
22
24
|
s.authors = ["Chris Warren"]
|
23
|
-
s.description = %q{A Ruby wrapper for the Assistly REST API
|
25
|
+
s.description = %q{A Ruby wrapper for the Assistly REST API}
|
24
26
|
s.post_install_message =<<eos
|
25
27
|
********************************************************************************
|
26
28
|
|
@@ -44,7 +44,7 @@ module Assistly
|
|
44
44
|
if response['success']
|
45
45
|
return response['results']['customer']
|
46
46
|
else
|
47
|
-
return response
|
47
|
+
return response
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -62,7 +62,7 @@ module Assistly
|
|
62
62
|
if response['success']
|
63
63
|
return response['results']['customer']
|
64
64
|
else
|
65
|
-
return response
|
65
|
+
return response
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -81,7 +81,7 @@ module Assistly
|
|
81
81
|
if response['success']
|
82
82
|
return response['results']['email']
|
83
83
|
else
|
84
|
-
return response
|
84
|
+
return response
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
@@ -100,7 +100,7 @@ module Assistly
|
|
100
100
|
if response['success']
|
101
101
|
return response['results']['email']
|
102
102
|
else
|
103
|
-
return response
|
103
|
+
return response
|
104
104
|
end
|
105
105
|
end
|
106
106
|
end
|
@@ -17,8 +17,23 @@ module Assistly
|
|
17
17
|
response = get("interactions",options)
|
18
18
|
response['results']
|
19
19
|
end
|
20
|
+
|
21
|
+
def create_interaction(*args)
|
22
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
23
|
+
direction =
|
24
|
+
if options[:direction].to_s == "outbound"
|
25
|
+
options.delete(:direction)
|
26
|
+
to = options.delete(:customer_email)
|
27
|
+
subject = options.delete(:interaction_subject)
|
28
|
+
body = options.delete(:interaction_body)
|
29
|
+
|
30
|
+
create_outbound_interaction(to, subject, body, options)
|
31
|
+
else
|
32
|
+
create_inbound_interaction(options)
|
33
|
+
end
|
34
|
+
end
|
20
35
|
|
21
|
-
# Creates an interaction
|
36
|
+
# Creates an interaction from a customer
|
22
37
|
#
|
23
38
|
# @format :json
|
24
39
|
# @authenticated true
|
@@ -27,15 +42,33 @@ module Assistly
|
|
27
42
|
# @see http://dev.assistly.com/docs/api/interactions/create
|
28
43
|
# @example Create a new interaction
|
29
44
|
# Assistly.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
|
30
|
-
def
|
45
|
+
def create_inbound_interaction(*args)
|
31
46
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
32
47
|
response = post('interactions', options)
|
33
48
|
if response['success']
|
34
49
|
return response['results']
|
35
50
|
else
|
36
|
-
return response
|
51
|
+
return response
|
37
52
|
end
|
38
53
|
end
|
54
|
+
|
55
|
+
# Create an interaction from an agent
|
56
|
+
#
|
57
|
+
# Assistly's API doesn't support creating a new case/interaction initiated by an agent
|
58
|
+
# so we'll use send an email to the customer directly that is BCC'd to the support email address
|
59
|
+
# which will create the ticket
|
60
|
+
#
|
61
|
+
# @see http://support.assistly.com/customer/portal/articles/4180
|
62
|
+
# @see http://support.assistly.com/customer/portal/articles/6728
|
63
|
+
def create_outbound_interaction(to, subject, body, *args)
|
64
|
+
raise Assistly::SupportEmailNotSet if support_email.blank?
|
65
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
66
|
+
options.merge!(:to => to, :subject => subject, :body => body, :from => support_email, :bcc => support_email)
|
67
|
+
options.merge!(:headers => { "x-assistly-customer-email" => to,
|
68
|
+
"x-assistly-interaction-direction" => "out",
|
69
|
+
"x-assistly-case-status" => options[:status]||"open"})
|
70
|
+
Pony.mail(options)
|
71
|
+
end
|
39
72
|
end
|
40
73
|
end
|
41
74
|
end
|
@@ -14,6 +14,7 @@ module Assistly
|
|
14
14
|
:oauth_token_secret,
|
15
15
|
:proxy,
|
16
16
|
:subdomain,
|
17
|
+
:support_email,
|
17
18
|
:user_agent,
|
18
19
|
:version].freeze
|
19
20
|
|
@@ -48,7 +49,7 @@ module Assistly
|
|
48
49
|
# By default, don't use a proxy server
|
49
50
|
DEFAULT_PROXY = nil
|
50
51
|
|
51
|
-
# By default
|
52
|
+
# By default use example
|
52
53
|
DEFAULT_SUBDOMAIN = "example"
|
53
54
|
|
54
55
|
# The user agent that will be sent to the API endpoint if none is set
|
@@ -56,7 +57,9 @@ module Assistly
|
|
56
57
|
|
57
58
|
# The user agent that will be sent to the API endpoint if none is set
|
58
59
|
DEFAULT_VERSION = "v1".freeze
|
59
|
-
|
60
|
+
|
61
|
+
# By default, don't set a support email address
|
62
|
+
DEFAULT_SUPPORT_EMAIL = nil
|
60
63
|
|
61
64
|
# @private
|
62
65
|
attr_accessor *VALID_OPTIONS_KEYS
|
@@ -86,6 +89,7 @@ module Assistly
|
|
86
89
|
self.oauth_token_secret = DEFAULT_OAUTH_TOKEN_SECRET
|
87
90
|
self.proxy = DEFAULT_PROXY
|
88
91
|
self.subdomain = DEFAULT_SUBDOMAIN
|
92
|
+
self.support_email = DEFAULT_SUPPORT_EMAIL
|
89
93
|
self.user_agent = DEFAULT_USER_AGENT
|
90
94
|
self.version = DEFAULT_VERSION
|
91
95
|
self
|
data/lib/assistly/error.rb
CHANGED
data/lib/assistly/version.rb
CHANGED
data/spec/assistly/api_spec.rb
CHANGED
@@ -24,7 +24,7 @@ describe Assistly::Client do
|
|
24
24
|
|
25
25
|
it "should return up to 100 cases worth of extended information" do
|
26
26
|
cases = @client.cases
|
27
|
-
|
27
|
+
|
28
28
|
cases.should be_a Array
|
29
29
|
cases.first.case.id.should == 1
|
30
30
|
cases.first.case.user.name.should == "Jeremy Suriel"
|
@@ -32,7 +32,7 @@ describe Assistly::Client do
|
|
32
32
|
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
describe ".case" do
|
37
37
|
|
38
38
|
context "lookup" do
|
@@ -50,7 +50,7 @@ describe Assistly::Client do
|
|
50
50
|
|
51
51
|
it "should return up to 100 cases worth of extended information" do
|
52
52
|
a_case = @client.case(1)
|
53
|
-
|
53
|
+
|
54
54
|
a_case.id.should == 1
|
55
55
|
a_case.external_id.should == "123"
|
56
56
|
a_case.subject.should == "Welcome to Assistly"
|
@@ -58,7 +58,7 @@ describe Assistly::Client do
|
|
58
58
|
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
describe ".update_case" do
|
63
63
|
|
64
64
|
context "update" do
|
@@ -76,14 +76,14 @@ describe Assistly::Client do
|
|
76
76
|
|
77
77
|
it "should return up to 100 cases worth of extended information" do
|
78
78
|
a_case = @client.update_case(1, :subject => "Welcome to Assistly")
|
79
|
-
|
79
|
+
|
80
80
|
a_case.id.should == 1
|
81
81
|
a_case.subject.should == "Welcome to Assistly"
|
82
82
|
end
|
83
83
|
|
84
84
|
end
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
describe ".case_url" do
|
88
88
|
|
89
89
|
context "generating a case url" do
|
@@ -1,14 +1,17 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
describe Assistly::Client do
|
4
|
+
include EmailSpec::Helpers
|
5
|
+
include EmailSpec::Matchers
|
6
|
+
|
4
7
|
Assistly::Configuration::VALID_FORMATS.each do |format|
|
5
8
|
context ".new(:format => '#{format}')" do
|
6
9
|
before do
|
7
|
-
@client = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS')
|
10
|
+
@client = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS', :support_email => "help@example.com")
|
8
11
|
end
|
9
12
|
|
10
13
|
describe ".create_interaction" do
|
11
|
-
context "create a new interaction" do
|
14
|
+
context "create a new interaction without specifying direction should default to inbound" do
|
12
15
|
before do
|
13
16
|
stub_post("interactions.#{format}").
|
14
17
|
to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
|
@@ -27,6 +30,122 @@ describe Assistly::Client do
|
|
27
30
|
interaction.interaction.interactionable.email.subject.should == "this is an api test"
|
28
31
|
end
|
29
32
|
end
|
33
|
+
|
34
|
+
context "create a new interaction and specify inbound" do
|
35
|
+
before do
|
36
|
+
stub_post("interactions.#{format}").
|
37
|
+
to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should get the correct resource" do
|
41
|
+
@client.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com", :direction => "in")
|
42
|
+
a_post("interactions.#{format}").
|
43
|
+
should have_been_made
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should create an interaction" do
|
47
|
+
interaction = @client.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com", :direction => "in")
|
48
|
+
|
49
|
+
interaction.customer.emails.first.email.email.should == "customer@zencoder.com"
|
50
|
+
interaction.interaction.interactionable.email.subject.should == "this is an api test"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "create a new interaction and specify outbound" do
|
55
|
+
before do
|
56
|
+
@email = @client.create_interaction(:customer_email => "customer@example.com", :interaction_subject => "Need help?", :interaction_body => "Sorry we missed you in chat today.", :direction => "outbound")
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should deliver the email to the customer" do
|
60
|
+
@email.last.should deliver_to("customer@example.com")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should be from the support email" do
|
64
|
+
@email.last.should deliver_from(@client.support_email)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should contain the message in the mail body" do
|
68
|
+
@email.last.should have_body_text(/Sorry we missed you in chat today/)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should bcc to the support email" do
|
72
|
+
@email.last.should bcc_to(@client.support_email)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should set the Assistly headers" do
|
76
|
+
@email.last.should have_header("x-assistly-customer-email","customer@example.com")
|
77
|
+
@email.last.should have_header("x-assistly-interaction-direction","out")
|
78
|
+
@email.last.should have_header("x-assistly-case-status","open")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe ".create_inbound_interaction" do
|
84
|
+
context "create a new interaction" do
|
85
|
+
before do
|
86
|
+
stub_post("interactions.#{format}").
|
87
|
+
to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should get the correct resource" do
|
91
|
+
@client.create_inbound_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
|
92
|
+
a_post("interactions.#{format}").
|
93
|
+
should have_been_made
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should create an interaction" do
|
97
|
+
interaction = @client.create_inbound_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
|
98
|
+
|
99
|
+
interaction.customer.emails.first.email.email.should == "customer@zencoder.com"
|
100
|
+
interaction.interaction.interactionable.email.subject.should == "this is an api test"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe ".create_outbound_interaction" do
|
106
|
+
context "create" do
|
107
|
+
|
108
|
+
before do
|
109
|
+
@email = @client.create_outbound_interaction("customer@example.com", "Need help?", "Sorry we missed you in chat today.")
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should deliver the email to the customer" do
|
113
|
+
@email.last.should deliver_to("customer@example.com")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should be from the support email" do
|
117
|
+
@email.last.should deliver_from(@client.support_email)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should contain the message in the mail body" do
|
121
|
+
@email.last.should have_body_text(/Sorry we missed you in chat today/)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should bcc to the support email" do
|
125
|
+
@email.last.should bcc_to(@client.support_email)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should set the Assistly headers" do
|
129
|
+
@email.last.should have_header("x-assistly-customer-email","customer@example.com")
|
130
|
+
@email.last.should have_header("x-assistly-interaction-direction","out")
|
131
|
+
@email.last.should have_header("x-assistly-case-status","open")
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
context "without support_email defined" do
|
137
|
+
|
138
|
+
before do
|
139
|
+
@client_without_support_email = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS')
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should raise an error" do
|
143
|
+
lambda do
|
144
|
+
@client_without_support_email.create_outbound_interaction("customer@example.com", "Need help?", "Sorry we missed you in chat today.")
|
145
|
+
end.should raise_error(Assistly::SupportEmailNotSet)
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
30
149
|
end
|
31
150
|
|
32
151
|
describe ".interactions" do
|
@@ -46,7 +165,7 @@ describe Assistly::Client do
|
|
46
165
|
|
47
166
|
it "should return up to 100 users worth of extended information" do
|
48
167
|
interactions = @client.interactions
|
49
|
-
|
168
|
+
|
50
169
|
interactions.should be_a Array
|
51
170
|
interactions.last.interaction.user.name.should == "Agent Jeremy"
|
52
171
|
end
|
data/spec/assistly_spec.rb
CHANGED
@@ -59,6 +59,19 @@ describe Assistly do
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
+
describe ".support_email" do
|
63
|
+
it "should return the default support_email" do
|
64
|
+
Assistly.support_email.should == Assistly::Configuration::DEFAULT_SUPPORT_EMAIL
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe ".support_email=" do
|
69
|
+
it "should set the support_email" do
|
70
|
+
Assistly.support_email = "help@example.com"
|
71
|
+
Assistly.support_email.should == "help@example.com"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
62
75
|
describe ".version=" do
|
63
76
|
before do
|
64
77
|
Assistly.version = "v4"
|
data/spec/helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assistly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Warren
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-15 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: json
|
@@ -93,9 +93,25 @@ dependencies:
|
|
93
93
|
type: :development
|
94
94
|
version_requirements: *id005
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
96
|
+
name: email_spec
|
97
97
|
prerelease: false
|
98
98
|
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 17
|
104
|
+
segments:
|
105
|
+
- 1
|
106
|
+
- 1
|
107
|
+
- 1
|
108
|
+
version: 1.1.1
|
109
|
+
type: :development
|
110
|
+
version_requirements: *id006
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov
|
113
|
+
prerelease: false
|
114
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
99
115
|
none: false
|
100
116
|
requirements:
|
101
117
|
- - ~>
|
@@ -106,11 +122,11 @@ dependencies:
|
|
106
122
|
- 4
|
107
123
|
version: "0.4"
|
108
124
|
type: :development
|
109
|
-
version_requirements: *
|
125
|
+
version_requirements: *id007
|
110
126
|
- !ruby/object:Gem::Dependency
|
111
127
|
name: webmock
|
112
128
|
prerelease: false
|
113
|
-
requirement: &
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
114
130
|
none: false
|
115
131
|
requirements:
|
116
132
|
- - ~>
|
@@ -121,11 +137,11 @@ dependencies:
|
|
121
137
|
- 6
|
122
138
|
version: "1.6"
|
123
139
|
type: :development
|
124
|
-
version_requirements: *
|
140
|
+
version_requirements: *id008
|
125
141
|
- !ruby/object:Gem::Dependency
|
126
142
|
name: yard
|
127
143
|
prerelease: false
|
128
|
-
requirement: &
|
144
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
129
145
|
none: false
|
130
146
|
requirements:
|
131
147
|
- - ~>
|
@@ -136,11 +152,11 @@ dependencies:
|
|
136
152
|
- 6
|
137
153
|
version: "0.6"
|
138
154
|
type: :development
|
139
|
-
version_requirements: *
|
155
|
+
version_requirements: *id009
|
140
156
|
- !ruby/object:Gem::Dependency
|
141
157
|
name: ZenTest
|
142
158
|
prerelease: false
|
143
|
-
requirement: &
|
159
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
144
160
|
none: false
|
145
161
|
requirements:
|
146
162
|
- - ~>
|
@@ -151,11 +167,11 @@ dependencies:
|
|
151
167
|
- 5
|
152
168
|
version: "4.5"
|
153
169
|
type: :development
|
154
|
-
version_requirements: *
|
170
|
+
version_requirements: *id010
|
155
171
|
- !ruby/object:Gem::Dependency
|
156
172
|
name: hashie
|
157
173
|
prerelease: false
|
158
|
-
requirement: &
|
174
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
159
175
|
none: false
|
160
176
|
requirements:
|
161
177
|
- - ~>
|
@@ -167,11 +183,11 @@ dependencies:
|
|
167
183
|
- 0
|
168
184
|
version: 1.0.0
|
169
185
|
type: :runtime
|
170
|
-
version_requirements: *
|
186
|
+
version_requirements: *id011
|
171
187
|
- !ruby/object:Gem::Dependency
|
172
188
|
name: faraday
|
173
189
|
prerelease: false
|
174
|
-
requirement: &
|
190
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
175
191
|
none: false
|
176
192
|
requirements:
|
177
193
|
- - ~>
|
@@ -183,11 +199,11 @@ dependencies:
|
|
183
199
|
- 0
|
184
200
|
version: 0.6.0
|
185
201
|
type: :runtime
|
186
|
-
version_requirements: *
|
202
|
+
version_requirements: *id012
|
187
203
|
- !ruby/object:Gem::Dependency
|
188
204
|
name: faraday_middleware
|
189
205
|
prerelease: false
|
190
|
-
requirement: &
|
206
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
191
207
|
none: false
|
192
208
|
requirements:
|
193
209
|
- - ~>
|
@@ -199,11 +215,11 @@ dependencies:
|
|
199
215
|
- 3
|
200
216
|
version: 0.6.3
|
201
217
|
type: :runtime
|
202
|
-
version_requirements: *
|
218
|
+
version_requirements: *id013
|
203
219
|
- !ruby/object:Gem::Dependency
|
204
220
|
name: multi_json
|
205
221
|
prerelease: false
|
206
|
-
requirement: &
|
222
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
207
223
|
none: false
|
208
224
|
requirements:
|
209
225
|
- - ~>
|
@@ -215,11 +231,11 @@ dependencies:
|
|
215
231
|
- 5
|
216
232
|
version: 0.0.5
|
217
233
|
type: :runtime
|
218
|
-
version_requirements: *
|
234
|
+
version_requirements: *id014
|
219
235
|
- !ruby/object:Gem::Dependency
|
220
236
|
name: multi_xml
|
221
237
|
prerelease: false
|
222
|
-
requirement: &
|
238
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
223
239
|
none: false
|
224
240
|
requirements:
|
225
241
|
- - ~>
|
@@ -231,11 +247,11 @@ dependencies:
|
|
231
247
|
- 0
|
232
248
|
version: 0.2.0
|
233
249
|
type: :runtime
|
234
|
-
version_requirements: *
|
250
|
+
version_requirements: *id015
|
235
251
|
- !ruby/object:Gem::Dependency
|
236
252
|
name: rash
|
237
253
|
prerelease: false
|
238
|
-
requirement: &
|
254
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
239
255
|
none: false
|
240
256
|
requirements:
|
241
257
|
- - ~>
|
@@ -247,11 +263,11 @@ dependencies:
|
|
247
263
|
- 0
|
248
264
|
version: 0.3.0
|
249
265
|
type: :runtime
|
250
|
-
version_requirements: *
|
266
|
+
version_requirements: *id016
|
251
267
|
- !ruby/object:Gem::Dependency
|
252
268
|
name: simple_oauth
|
253
269
|
prerelease: false
|
254
|
-
requirement: &
|
270
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
255
271
|
none: false
|
256
272
|
requirements:
|
257
273
|
- - ~>
|
@@ -263,8 +279,23 @@ dependencies:
|
|
263
279
|
- 4
|
264
280
|
version: 0.1.4
|
265
281
|
type: :runtime
|
266
|
-
version_requirements: *
|
267
|
-
|
282
|
+
version_requirements: *id017
|
283
|
+
- !ruby/object:Gem::Dependency
|
284
|
+
name: pony
|
285
|
+
prerelease: false
|
286
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
287
|
+
none: false
|
288
|
+
requirements:
|
289
|
+
- - ~>
|
290
|
+
- !ruby/object:Gem::Version
|
291
|
+
hash: 13
|
292
|
+
segments:
|
293
|
+
- 1
|
294
|
+
- 1
|
295
|
+
version: "1.1"
|
296
|
+
type: :runtime
|
297
|
+
version_requirements: *id018
|
298
|
+
description: A Ruby wrapper for the Assistly REST API
|
268
299
|
email:
|
269
300
|
- chris@zencoder.com
|
270
301
|
executables: []
|