hello_sign 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,11 +10,11 @@ module HelloSign
10
10
  API_ENDPOINT = 'https://api.hellosign.com'
11
11
  API_VERSION = '/v3'
12
12
 
13
- attr_reader :email, :password
13
+ attr_reader :email_address, :password
14
14
 
15
- def initialize(email, password)
16
- @email = email
17
- @password = password
15
+ def initialize(email_address, password)
16
+ @email_address = email_address
17
+ @password = password
18
18
  end
19
19
 
20
20
  def get(path, options = {})
@@ -29,7 +29,7 @@ module HelloSign
29
29
 
30
30
  def request(method, path, options)
31
31
  base_connection do |connection|
32
- connection.request :basic_auth, email, password unless options[:auth_not_required]
32
+ connection.request :basic_auth, email_address, password unless options[:auth_not_required]
33
33
  end.send(method) do |request|
34
34
  request.url "#{API_VERSION}#{path}", options[:params]
35
35
  request.body = options[:body]
@@ -6,14 +6,14 @@ module HelloSign
6
6
 
7
7
  def ccs
8
8
  @ccs.inject({}) do |parameter, cc|
9
- parameter[cc[:role]] = {:email_address => cc[:email]}
9
+ parameter[cc[:role]] = {:email_address => cc[:email_address]}
10
10
  parameter
11
11
  end
12
12
  end
13
13
 
14
14
  def signers
15
15
  @signers.inject({}) do |parameter, signer|
16
- parameter[signer[:role]] = {:name => signer[:name], :email_address => signer[:email]}
16
+ parameter[signer[:role]] = {:name => signer[:name], :email_address => signer[:email_address]}
17
17
  parameter
18
18
  end
19
19
  end
@@ -7,10 +7,10 @@ module HelloSign
7
7
  attr_writer :signers, :files
8
8
 
9
9
  def signers
10
- @signers.each_with_index.inject({}) do |parameter, (signer, index)|
10
+ (@signers || {}).each_with_index.inject({}) do |parameter, (signer, index)|
11
11
  signer = {
12
12
  :name => signer[:name],
13
- :email_address => signer[:email],
13
+ :email_address => signer[:email_address],
14
14
  :order => index
15
15
  }
16
16
  parameter[index] = signer
@@ -19,7 +19,7 @@ module HelloSign
19
19
  end
20
20
 
21
21
  def files
22
- @files.each_with_index.inject({}) do |parameter, (file, index)|
22
+ (@files || {}).each_with_index.inject({}) do |parameter, (file, index)|
23
23
  parameter[index + 1] = upload_io.new(file[:io], file[:mime], file[:name])
24
24
  parameter
25
25
  end
@@ -10,14 +10,8 @@ module HelloSign
10
10
  @client = client
11
11
  end
12
12
 
13
- def create(credentials)
14
- email = credentials.fetch(:email)
15
- password = credentials.fetch(:password)
16
-
17
- client.post('/account/create',
18
- :body => {:email_address => email, :password => password},
19
- :auth_not_required => true
20
- )
13
+ def create(params = {})
14
+ client.post('/account/create', :body => params, :auth_not_required => true)
21
15
  end
22
16
 
23
17
  def settings
@@ -8,7 +8,6 @@ module HelloSign
8
8
  end
9
9
 
10
10
  def list(params = {})
11
- params = {:page => 1}.merge(params)
12
11
  client.get('/reusable_form/list', :params => params)
13
12
  end
14
13
 
@@ -17,23 +16,11 @@ module HelloSign
17
16
  end
18
17
 
19
18
  def grant_access(form_id, params = {})
20
- client.post("/reusable_form/add_user/#{form_id}", :body => body(params))
19
+ client.post("/reusable_form/add_user/#{form_id}", :body => params)
21
20
  end
22
21
 
23
22
  def revoke_access(form_id, params = {})
24
- client.post("/reusable_form/remove_user/#{form_id}", :body => body(params))
25
- end
26
-
27
- private
28
-
29
- def body(params)
30
- if email = params[:email]
31
- {:email_address => email}
32
- elsif account_id = params[:account_id]
33
- {:account_id => account_id}
34
- else
35
- raise ArgumentError, 'An email address or account ID must be provided.'
36
- end
23
+ client.post("/reusable_form/remove_user/#{form_id}", :body => params)
37
24
  end
38
25
 
39
26
  end
@@ -13,8 +13,8 @@ module HelloSign
13
13
  client.get('/account')
14
14
  end
15
15
 
16
- def update(attributes)
17
- client.post('/account', :body => attributes)
16
+ def update(params = {})
17
+ client.post('/account', :body => params)
18
18
  end
19
19
 
20
20
  end
@@ -23,10 +23,7 @@ module HelloSign
23
23
  else
24
24
  yield request_parameters
25
25
 
26
- client.post(
27
- '/signature_request/send',
28
- :body => request_parameters.formatted
29
- )
26
+ client.post('/signature_request/send', :body => request_parameters.formatted)
30
27
  end
31
28
  end
32
29
 
@@ -41,12 +38,9 @@ module HelloSign
41
38
  end
42
39
 
43
40
  def remind(request_id, params = {})
44
- email = params.fetch(:email) { raise ArgumentError, 'An email address must be provided.' }
41
+ params = {:email_address => params.delete(:email)}.merge(params)
45
42
 
46
- client.post(
47
- "/signature_request/remind/#{request_id}",
48
- :body => {:email_address => email}
49
- )
43
+ client.post("/signature_request/remind/#{request_id}", :body => params)
50
44
  end
51
45
 
52
46
  def cancel(request_id)
@@ -7,41 +7,28 @@ module HelloSign
7
7
  @client = client
8
8
  end
9
9
 
10
- def create(params)
11
- name = params.fetch(:name)
12
- client.post('/team/create', :body => {:name => name})
10
+ def create(params = {})
11
+ client.post('/team/create', :body => params)
13
12
  end
14
13
 
15
14
  def show
16
15
  client.get('/team')
17
16
  end
18
17
 
19
- def update(attributes)
20
- client.post('/team', :body => attributes)
18
+ def update(params = {})
19
+ client.post('/team', :body => params)
21
20
  end
22
21
 
23
22
  def destroy
24
23
  client.post('/team/destroy')
25
24
  end
26
25
 
27
- def add_member(params)
28
- client.post("/team/add_member", :body => body_by_identifier(params))
26
+ def add_member(params = {})
27
+ client.post("/team/add_member", :body => params)
29
28
  end
30
29
 
31
- def remove_member(params)
32
- client.post("/team/remove_member", :body => body_by_identifier(params))
33
- end
34
-
35
- private
36
-
37
- def body_by_identifier(params)
38
- if email = params[:email]
39
- {:email_address => email}
40
- elsif account_id = params[:account_id]
41
- {:account_id => account_id}
42
- else
43
- raise ArgumentError, 'An email address or account ID must be provided.'
44
- end
30
+ def remove_member(params = {})
31
+ client.post("/team/remove_member", :body => params)
45
32
  end
46
33
 
47
34
  end
@@ -1,3 +1,3 @@
1
1
  module HelloSign
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
data/lib/hello_sign.rb CHANGED
@@ -7,13 +7,13 @@ module HelloSign
7
7
  class << self
8
8
  extend Forwardable
9
9
 
10
- attr_accessor :email, :password
10
+ attr_accessor :email_address, :password
11
11
 
12
12
  delegate [:account, :signature_request, :reusable_form, :team,
13
13
  :unclaimed_draft] => :client
14
14
 
15
15
  def client
16
- @client = Client.new(email, password) unless credentials_match?
16
+ @client = Client.new(email_address, password) unless credentials_match?
17
17
  @client
18
18
  end
19
19
 
@@ -24,7 +24,7 @@ module HelloSign
24
24
  private
25
25
 
26
26
  def credentials_match?
27
- @client && [@client.email, @client.password].hash == [email, password].hash
27
+ @client && [@client.email_address, @client.password].hash == [email_address, password].hash
28
28
  end
29
29
 
30
30
  end
@@ -2,12 +2,11 @@ require 'integration/helper'
2
2
 
3
3
  describe HelloSign do
4
4
  context "when creating an account" do
5
- before do
6
- stub_post('/account/create')
7
- HelloSign.account.create(:email => 'david@bowman.com', :password => 'foobar')
8
- end
5
+ before { stub_post('/account/create') }
9
6
 
10
7
  it "sends an account creation request to the HelloSign API" do
8
+ HelloSign.account.create(:email_address => 'david@bowman.com', :password => 'foobar')
9
+
11
10
  expect(a_post('/account/create')
12
11
  .with(:body => {:email_address => 'david@bowman.com', :password => 'foobar'}))
13
12
  .to have_been_made
@@ -15,23 +14,21 @@ describe HelloSign do
15
14
  end
16
15
 
17
16
  context "when accessing an account's settings" do
18
- before do
19
- stub_get_with_auth('/account')
20
- HelloSign.account.settings.show
21
- end
17
+ before { stub_get_with_auth('/account') }
22
18
 
23
19
  it "fetches the account's settings from the HelloSign API" do
20
+ HelloSign.account.settings.show
21
+
24
22
  expect(a_get_with_auth('/account')).to have_been_made
25
23
  end
26
24
  end
27
25
 
28
26
  context "when updating an account's settings" do
29
- before do
30
- stub_post_with_auth('/account')
31
- HelloSign.account.settings.update(:callback_url => 'http://callmemaybe.com')
32
- end
27
+ before { stub_post_with_auth('/account') }
33
28
 
34
29
  it "sends an update account request to the HelloSign API" do
30
+ HelloSign.account.settings.update(:callback_url => 'http://callmemaybe.com')
31
+
35
32
  expect(a_post_with_auth('/account')
36
33
  .with(:body => {:callback_url => 'http://callmemaybe.com'}))
37
34
  .to have_been_made
@@ -4,8 +4,8 @@ require 'webmock/rspec'
4
4
  require 'json'
5
5
 
6
6
  HelloSign.configure do |hs|
7
- hs.email = 'david@bowman.com'
8
- hs.password = 'foobar'
7
+ hs.email_address = 'david@bowman.com'
8
+ hs.password = 'foobar'
9
9
  end
10
10
 
11
11
  def stub_get(path)
@@ -3,12 +3,12 @@ require 'integration/helper'
3
3
  describe HelloSign do
4
4
  context "when getting a list of reusable forms" do
5
5
  before do
6
- stub_get_with_auth('/reusable_form/list?page=1')
6
+ stub_get_with_auth('/reusable_form/list')
7
7
  HelloSign.reusable_form.list
8
8
  end
9
9
 
10
10
  it "fetches a list of reusable forms from the HelloSign API" do
11
- expect(a_get_with_auth('/reusable_form/list?page=1')).to have_been_made
11
+ expect(a_get_with_auth('/reusable_form/list')).to have_been_made
12
12
  end
13
13
  end
14
14
 
@@ -26,7 +26,7 @@ describe HelloSign do
26
26
  context "when giving a user access to a reusable form" do
27
27
  before do
28
28
  stub_post_with_auth('/reusable_form/add_user/form_id')
29
- HelloSign.reusable_form.grant_access('form_id', :email => 'john@johnson.com')
29
+ HelloSign.reusable_form.grant_access('form_id', :email_address => 'john@johnson.com')
30
30
  end
31
31
 
32
32
  it "sends a request to grant form access to the HelloSign API" do
@@ -39,7 +39,7 @@ describe HelloSign do
39
39
  context "when taking away a user's access to a reusable form" do
40
40
  before do
41
41
  stub_post_with_auth('/reusable_form/remove_user/form_id')
42
- HelloSign.reusable_form.revoke_access('form_id', :email => 'john@johnson.com')
42
+ HelloSign.reusable_form.revoke_access('form_id', :email_address => 'john@johnson.com')
43
43
  end
44
44
 
45
45
  it "sends a request to grant form access to the HelloSign API" do
@@ -14,8 +14,8 @@ describe HelloSign do
14
14
  request.message = 'You must sign this.'
15
15
  request.ccs = ['lawyer@lawfirm.com', 'spouse@family.com']
16
16
  request.signers = [
17
- {:name => 'Jack', :email => 'jack@hill.com'},
18
- {:name => 'Jill', :email => 'jill@hill.com'}
17
+ {:name => 'Jack', :email_address => 'jack@hill.com'},
18
+ {:name => 'Jill', :email_address => 'jill@hill.com'}
19
19
  ]
20
20
  request.files = [
21
21
  {:name => 'test.txt', :io => text_file_io, :mime => 'text/plain'},
@@ -39,12 +39,12 @@ describe HelloSign do
39
39
  request.subject = 'Sign this'
40
40
  request.message = 'You must sign this.'
41
41
  request.ccs = [
42
- {:email => 'lawyer@lawfirm.com', :role => 'lawyer'},
43
- {:email => 'accountant@llc.com', :role => 'accountant'}
42
+ {:email_address => 'lawyer@lawfirm.com', :role => 'lawyer'},
43
+ {:email_address => 'accountant@llc.com', :role => 'accountant'}
44
44
  ]
45
45
  request.signers = [
46
- {:name => 'Jack', :email => 'jack@hill.com', :role => 'consultant'},
47
- {:name => 'Jill', :email => 'jill@hill.com', :role => 'client'}
46
+ {:name => 'Jack', :email_address => 'jack@hill.com', :role => 'consultant'},
47
+ {:name => 'Jill', :email_address => 'jill@hill.com', :role => 'client'}
48
48
  ]
49
49
  request.custom_fields = [
50
50
  {:name => 'cost', :value => '$20,000'},
@@ -5,8 +5,8 @@ require 'shared_examples/proxy'
5
5
  describe HelloSign::Client do
6
6
  subject(:hs_client) { HelloSign::Client.new('david@bowman.com', 'space') }
7
7
 
8
- its(:email) { should eq 'david@bowman.com' }
9
- its(:password) { should eq 'space' }
8
+ its(:email_address) { should eq 'david@bowman.com' }
9
+ its(:password) { should eq 'space' }
10
10
 
11
11
  it_behaves_like 'a proxy' do
12
12
  let(:client) { hs_client }
@@ -3,12 +3,12 @@ require 'hello_sign'
3
3
 
4
4
  describe HelloSign do
5
5
  before do
6
- HelloSign.email = 'hal@jupiter.com'
7
- HelloSign.password = 'human_domination'
6
+ HelloSign.email_address = 'hal@jupiter.com'
7
+ HelloSign.password = 'human_domination'
8
8
  end
9
9
 
10
- its(:email) { should eq 'hal@jupiter.com' }
11
- its(:password) { should eq 'human_domination' }
10
+ its(:email_address) { should eq 'hal@jupiter.com' }
11
+ its(:password) { should eq 'human_domination' }
12
12
 
13
13
  describe "::client" do
14
14
  context "when it has not previously been called" do
@@ -26,13 +26,13 @@ describe HelloSign do
26
26
 
27
27
  context "and the email and password changes" do
28
28
  before do
29
- HelloSign.email = 'bob@earth.com'
30
- HelloSign.password = 'being_human'
29
+ HelloSign.email_address = 'bob@earth.com'
30
+ HelloSign.password = 'being_human'
31
31
  end
32
32
 
33
33
  it "creates a new client with the new credentials" do
34
34
  expect(HelloSign.client).to_not be @client
35
- expect(HelloSign.client.email).to eq 'bob@earth.com'
35
+ expect(HelloSign.client.email_address).to eq 'bob@earth.com'
36
36
  expect(HelloSign.client.password).to eq 'being_human'
37
37
  end
38
38
  end
@@ -31,12 +31,12 @@ describe HelloSign::Parameters::ReusableFormSignatureRequest do
31
31
  request_parameters.subject = 'Sign this'
32
32
  request_parameters.message = 'You must sign this.'
33
33
  request_parameters.ccs = [
34
- {:email => 'lawyer@lawfirm.com', :role => 'lawyer'},
35
- {:email => 'accountant@llc.com', :role => 'accountant'}
34
+ {:email_address => 'lawyer@lawfirm.com', :role => 'lawyer'},
35
+ {:email_address => 'accountant@llc.com', :role => 'accountant'}
36
36
  ]
37
37
  request_parameters.signers = [
38
- {:name => 'Jack', :email => 'jack@hill.com', :role => 'consultant'},
39
- {:name => 'Jill', :email => 'jill@hill.com', :role => 'client'}
38
+ {:name => 'Jack', :email_address => 'jack@hill.com', :role => 'consultant'},
39
+ {:name => 'Jill', :email_address => 'jill@hill.com', :role => 'client'}
40
40
  ]
41
41
  request_parameters.custom_fields = [
42
42
  {:name => 'cost', :value => '$20,000'},
@@ -6,40 +6,59 @@ describe HelloSign::Parameters::SignatureRequest do
6
6
  let(:request_parameters) { HelloSign::Parameters::SignatureRequest.new }
7
7
  let(:text_file) { double('text file') }
8
8
  let(:image_file) { double('image file') }
9
- let(:expected) do
10
- {
11
- :title => 'Lease',
12
- :subject =>'Sign this',
13
- :message =>'You must sign this.',
14
- :cc_email_addresses => ['lawyer@lawfirm.com', 'spouse@family.com'], # BUGBUG: should have explicit indexes
15
- :signers => {
16
- 0 => {:name => 'Jack', :email_address => 'jack@hill.com', :order => 0},
17
- 1 => {:name => 'Jill', :email_address => 'jill@hill.com', :order => 1}
18
- },
19
- :file => {1 => text_file, 2 => image_file}
20
- }
21
- end
9
+ context "when all required arguments are set" do
10
+ let(:expected) do
11
+ {
12
+ :title => 'Lease',
13
+ :subject => 'Sign this',
14
+ :message => 'You must sign this.',
15
+ :cc_email_addresses => ['lawyer@lawfirm.com', 'spouse@family.com'], # BUGBUG: should have explicit indexes
16
+ :signers => {
17
+ 0 => {:name => 'Jack', :email_address => 'jack@hill.com', :order => 0},
18
+ 1 => {:name => 'Jill', :email_address => 'jill@hill.com', :order => 1}
19
+ },
20
+ :file => {1 => text_file, 2 => image_file}
21
+ }
22
+ end
23
+
24
+ before do
25
+ request_parameters.title = 'Lease'
26
+ request_parameters.subject = 'Sign this'
27
+ request_parameters.message = 'You must sign this.'
28
+ request_parameters.ccs = ['lawyer@lawfirm.com', 'spouse@family.com']
29
+ request_parameters.signers = [
30
+ {:name => 'Jack', :email_address => 'jack@hill.com'},
31
+ {:name => 'Jill', :email_address => 'jill@hill.com'}
32
+ ]
33
+ request_parameters.files = [
34
+ {:name => 'test.txt', :io => 'text file IO object', :mime => 'text/plain'},
35
+ {:name => 'test.jpg', :io => 'image file IO object', :mime => 'image/jpeg'}
36
+ ]
37
+ end
22
38
 
23
- before do
24
- Faraday::UploadIO.should_receive(:new).with('text file IO object', 'text/plain', 'test.txt').and_return(text_file)
25
- Faraday::UploadIO.should_receive(:new).with('image file IO object', 'image/jpeg', 'test.jpg').and_return(image_file)
39
+ it "returns formatted parameters" do
40
+ Faraday::UploadIO.should_receive(:new).with('text file IO object', 'text/plain', 'test.txt').and_return(text_file)
41
+ Faraday::UploadIO.should_receive(:new).with('image file IO object', 'image/jpeg', 'test.jpg').and_return(image_file)
26
42
 
27
- request_parameters.title = 'Lease'
28
- request_parameters.subject = 'Sign this'
29
- request_parameters.message = 'You must sign this.'
30
- request_parameters.ccs = ['lawyer@lawfirm.com', 'spouse@family.com']
31
- request_parameters.signers = [
32
- {:name => 'Jack', :email => 'jack@hill.com'},
33
- {:name => 'Jill', :email => 'jill@hill.com'}
34
- ]
35
- request_parameters.files = [
36
- {:name => 'test.txt', :io => 'text file IO object', :mime => 'text/plain'},
37
- {:name => 'test.jpg', :io => 'image file IO object', :mime => 'image/jpeg'}
38
- ]
43
+ expect(request_parameters.formatted).to eq expected
44
+ end
39
45
  end
40
46
 
41
- it "returns formatted parameters" do
42
- expect(request_parameters.formatted).to eq expected
47
+ context "when required parameters are omitted" do
48
+ let(:expected) do
49
+ {
50
+ :title => nil,
51
+ :subject => nil,
52
+ :message => nil,
53
+ :cc_email_addresses => nil,
54
+ :signers => {},
55
+ :file => {}
56
+ }
57
+ end
58
+
59
+ it "sets default parameters" do
60
+ expect(request_parameters.formatted).to eq expected
61
+ end
43
62
  end
44
63
  end
45
64
  end
@@ -3,49 +3,56 @@ require 'hello_sign/proxy/account'
3
3
 
4
4
  describe HelloSign::Proxy::Account do
5
5
  let(:client) { double('client') }
6
+ let(:api_response) { double('API response') }
6
7
  subject(:account_proxy) { HelloSign::Proxy::Account.new(client) }
7
8
 
8
9
  its(:client) { should eq client }
9
10
 
10
11
  describe "#create" do
11
- context "when passed the proper parameters" do
12
- let(:api_response) { double('API response') }
13
-
14
- before { client.stub(:post).and_return(api_response) }
15
-
16
- it "sends an account creation request" do
17
- client.should_receive(:post)
18
- .with(
19
- '/account/create',
20
- :body => {:email_address => 'david@bowman.com', :password => 'space'},
21
- :auth_not_required => true
22
- )
23
- account_proxy.create(:email => 'david@bowman.com', :password => 'space')
24
- end
25
-
26
- it "returns the API response" do
27
- expect(account_proxy.create(:email => 'david@bowman.com', :password => 'space')). to eq api_response
28
- end
12
+
13
+ let(:email_address) { 'david@bowman.com' }
14
+ let(:password) { 'password' }
15
+
16
+ before { client.stub(:post).and_return(api_response) }
17
+
18
+ it "sends a request to create an account" do
19
+ client.should_receive(:post).with(
20
+ '/account/create',
21
+ :body => {:email_address => 'david@bowman.com', :password => 'space'},
22
+ :auth_not_required => true
23
+ )
24
+ account_proxy.create(
25
+ :email_address => 'david@bowman.com',
26
+ :password => 'space'
27
+ )
29
28
  end
30
29
 
31
- context "when not passed the proper parameters" do
32
- it "raises an exception" do
33
- expect { account_proxy.create(:email => 'david@bowman.com') }.to raise_error
34
- end
30
+ it "returns the API response" do
31
+ expect(
32
+ account_proxy.create(
33
+ :email_address => 'david@bowman.com',
34
+ :password => 'space'
35
+ )
36
+ ). to eq api_response
35
37
  end
38
+
36
39
  end
37
40
 
38
41
  describe "#settings" do
42
+
39
43
  let(:settings_proxy_source) { double('settings proxy source') }
40
44
  let(:settings_proxy) { double('settings proxy') }
41
45
 
42
46
  before do
43
47
  account_proxy.settings_proxy_source = settings_proxy_source
44
- settings_proxy_source.should_receive(:new).with(client).and_return(settings_proxy)
45
48
  end
46
49
 
47
50
  it "returns a signature request proxy" do
51
+ settings_proxy_source.should_receive(:new)
52
+ .with(client)
53
+ .and_return(settings_proxy)
48
54
  expect(account_proxy.settings).to be settings_proxy
49
55
  end
56
+
50
57
  end
51
58
  end
@@ -2,110 +2,60 @@ require 'helper'
2
2
  require 'hello_sign/proxy/reusable_form'
3
3
 
4
4
  describe HelloSign::Proxy::ReusableForm do
5
- let(:client) { double('client') }
6
- let(:api_response) { double('API response') }
7
- let(:form_id) { 'form_id' }
8
- subject(:rf_proxy) { HelloSign::Proxy::ReusableForm.new(client) }
9
-
10
- describe "#client" do
11
- it "returns the client" do
12
- expect(rf_proxy.client).to be client
13
- end
5
+ let(:client) { double('client') }
6
+ let(:api_response) { double('API response') }
7
+ let(:form_id) { 'form_id' }
8
+ let(:email_address) { 'bob@example.com' }
9
+ subject(:rf_proxy) { HelloSign::Proxy::ReusableForm.new(client) }
10
+
11
+ before do
12
+ client.stub(:get).and_return(api_response)
13
+ client.stub(:post).and_return(api_response)
14
14
  end
15
15
 
16
- describe "#list" do
17
- context "when called without options" do
18
- before { client.should_receive(:get).with('/reusable_form/list', :params => {:page => 1}).and_return(api_response) }
16
+ its(:client) { should eq client }
19
17
 
20
- it "fetches the first page of reusable forms and returns the result" do
21
- expect(rf_proxy.list).to eq api_response
22
- end
18
+ describe "#list" do
19
+ it "sends a request to fetch the list of reusable forms" do
20
+ client.should_receive(:get).with('/reusable_form/list', :params => {:page => 10})
21
+ rf_proxy.list(:page => 10)
23
22
  end
24
23
 
25
- context "when called with a page number" do
26
- before { client.should_receive(:get).with('/reusable_form/list', :params => {:page => 10}).and_return(api_response) }
27
-
28
- it "fetches a list of reusable forms for the passed page number and returns the result" do
29
- expect(rf_proxy.list(:page => 10)).to eq api_response
30
- end
24
+ it "returns the API response" do
25
+ expect(rf_proxy.list).to eq api_response
31
26
  end
32
27
  end
33
28
 
34
29
  describe "#show" do
35
- before { client.should_receive(:get).with('/reusable_form/form_id').and_return(api_response) }
30
+ it "sends a request to fetch the details of a reusable form" do
31
+ client.should_receive(:get).with("/reusable_form/#{form_id}")
32
+ rf_proxy.show(form_id)
33
+ end
36
34
 
37
- it "fetches the reusable form details and returns the result" do
35
+ it "returns the API response" do
38
36
  expect(rf_proxy.show(form_id)).to eq api_response
39
37
  end
40
38
  end
41
39
 
42
40
  describe "#grant_access" do
43
- let(:email) { 'john@johnson.com' }
44
- let(:account_id) { '15' }
45
-
46
- before { client.stub(:post).and_return(api_response) }
47
-
48
- context "when called with an email address" do
49
- it "grants access to account tied to the email address" do
50
- client.should_receive(:post).with('/reusable_form/add_user/form_id', :body => {:email_address => email})
51
- rf_proxy.grant_access(form_id, :email => email)
52
- end
53
-
54
- it "returns the API response" do
55
- expect(rf_proxy.grant_access(form_id, :email => email)).to eq api_response
56
- end
41
+ it "sends a request to grant access" do
42
+ client.should_receive(:post).with("/reusable_form/add_user/#{form_id}", :body => {:email_address => email_address})
43
+ rf_proxy.grant_access(form_id, :email_address => email_address)
57
44
  end
58
45
 
59
- context "when called with an account ID" do
60
- it "grants access to account tied to the account ID" do
61
- client.should_receive(:post).with('/reusable_form/add_user/form_id', :body => {:account_id => account_id})
62
- rf_proxy.grant_access(form_id, :account_id => account_id)
63
- end
64
-
65
- it "returns the API response" do
66
- expect(rf_proxy.grant_access(form_id, :account_id => account_id)).to eq api_response
67
- end
68
- end
69
-
70
- context "when called without proper parameters" do
71
- it "raises an argument error exception" do
72
- expect { rf_proxy.grant_access(form_id) }.to raise_error ArgumentError
73
- end
46
+ it "returns the API response" do
47
+ expect(rf_proxy.grant_access(form_id, :email => email_address)).to eq api_response
74
48
  end
75
49
  end
76
50
 
77
51
  describe "#revoke_access" do
78
- let(:email) { 'john@johnson.com' }
79
- let(:account_id) { '15' }
80
-
81
- before { client.stub(:post).and_return(api_response) }
82
-
83
- context "when called with an email address" do
84
- it "revokes access to account tied to the email address" do
85
- client.should_receive(:post).with('/reusable_form/remove_user/form_id', :body => {:email_address => email})
86
- rf_proxy.revoke_access(form_id, :email => email)
87
- end
88
-
89
- it "returns the API response" do
90
- expect(rf_proxy.revoke_access(form_id, :email => email)).to eq api_response
91
- end
92
- end
93
-
94
- context "when called with an account ID" do
95
- it "revokes access to account tied to the account ID" do
96
- client.should_receive(:post).with('/reusable_form/remove_user/form_id', :body => {:account_id => account_id})
97
- rf_proxy.revoke_access(form_id, :account_id => account_id)
98
- end
99
-
100
- it "returns the API response" do
101
- expect(rf_proxy.revoke_access(form_id, :account_id => account_id)).to eq api_response
102
- end
52
+ it "sends a request to revoke access" do
53
+ client.should_receive(:post).with("/reusable_form/remove_user/#{form_id}", :body => {:email_address => email_address})
54
+ rf_proxy.revoke_access(form_id, :email_address => email_address)
103
55
  end
104
56
 
105
- context "when called without proper parameters" do
106
- it "raises an argument error exception" do
107
- expect { rf_proxy.revoke_access(form_id) }.to raise_error ArgumentError
108
- end
57
+ it "returns the API response" do
58
+ expect(rf_proxy.revoke_access(form_id, :email_address => email_address)).to eq api_response
109
59
  end
110
60
  end
111
61
  end
@@ -113,12 +113,6 @@ describe HelloSign::Proxy::SignatureRequest do
113
113
  client.stub(:post).and_return(api_response)
114
114
  expect(sr_proxy.remind(request_id, :email => email)).to eq api_response
115
115
  end
116
-
117
- context "when called without an email address" do
118
- it "raises an exception" do
119
- expect { sr_proxy.remind(request_id) }.to raise_error ArgumentError
120
- end
121
- end
122
116
  end
123
117
 
124
118
  describe "#cancel" do
@@ -11,35 +11,26 @@ describe HelloSign::Proxy::Team do
11
11
  client.stub(:post).and_return(api_response)
12
12
  end
13
13
 
14
- describe "#client" do
15
- it "returns the client" do
16
- expect(team_proxy.client).to be client
17
- end
18
- end
14
+ its(:client) { should eq client }
19
15
 
20
16
  describe "#create" do
21
- let(:name) { 'The Browncoats' }
22
17
 
23
- context "when called with the proper parameters" do
24
- it "sends a team creation request" do
25
- client.should_receive(:post).with('/team/create', :body => {:name => name})
26
- team_proxy.create(:name => name)
27
- end
18
+ let(:name) { 'The Browncoats' }
28
19
 
29
- it "returns the API response" do
30
- expect(team_proxy.create(:name => name)).to eq api_response
31
- end
20
+ it "sends a request to create a team" do
21
+ client.should_receive(:post).with('/team/create', :body => {:name => name})
22
+ team_proxy.create(:name => name)
32
23
  end
33
24
 
34
- context "when called without the proper parameters" do
35
- it "raises an exception" do
36
- expect { team_proxy.create }.to raise_error
37
- end
25
+ it "returns the API response" do
26
+ expect(team_proxy.create(:name => name)).to eq api_response
38
27
  end
28
+
39
29
  end
40
30
 
41
31
  describe "#show" do
42
- it "fetches the team information" do
32
+
33
+ it "sends a request to fetch the team information" do
43
34
  client.should_receive(:get).with('/team')
44
35
  team_proxy.show
45
36
  end
@@ -47,12 +38,14 @@ describe HelloSign::Proxy::Team do
47
38
  it "returns the API response" do
48
39
  expect(team_proxy.show).to eq api_response
49
40
  end
41
+
50
42
  end
51
43
 
52
44
  describe "#update" do
45
+
53
46
  let(:new_name) { 'The Bluecoats' }
54
47
 
55
- it "sends a team update request" do
48
+ it "sends a request to update the team information" do
56
49
  client.should_receive(:post).with('/team', :body => {:name => new_name})
57
50
  team_proxy.update(:name => new_name)
58
51
  end
@@ -60,10 +53,12 @@ describe HelloSign::Proxy::Team do
60
53
  it "returns the API response" do
61
54
  expect(team_proxy.update(:name => new_name)).to eq api_response
62
55
  end
56
+
63
57
  end
64
58
 
65
59
  describe "#destroy" do
66
- it "sends a team destroy request" do
60
+
61
+ it "sends a request to destroy the team" do
67
62
  client.should_receive(:post).with('/team/destroy')
68
63
  team_proxy.destroy
69
64
  end
@@ -71,71 +66,36 @@ describe HelloSign::Proxy::Team do
71
66
  it "returns the API response" do
72
67
  expect(team_proxy.destroy).to eq api_response
73
68
  end
69
+
74
70
  end
75
71
 
76
72
  describe "#add_member" do
77
- let(:email) { 'john@johnson.com' }
78
- let(:account_id) { '15' }
79
-
80
- context "when called with an email address" do
81
- it "adds the user with the email address to the team" do
82
- client.should_receive(:post).with('/team/add_member', :body => {:email_address => email})
83
- team_proxy.add_member(:email => email)
84
- end
85
-
86
- it "returns the API response" do
87
- expect(team_proxy.add_member(:email => email)).to eq api_response
88
- end
89
- end
90
73
 
91
- context "when called with an account ID" do
92
- it "adds the user with the account ID to the team" do
93
- client.should_receive(:post).with('/team/add_member', :body => {:account_id => account_id})
94
- team_proxy.add_member(:account_id => account_id)
95
- end
74
+ let(:email_address) { 'john@johnson.com' }
96
75
 
97
- it "returns the API response" do
98
- expect(team_proxy.add_member(:account_id => account_id)).to eq api_response
99
- end
76
+ it "sends a request to add the member to the team" do
77
+ client.should_receive(:post).with('/team/add_member', :body => {:email_address => email_address})
78
+ team_proxy.add_member(:email_address => email_address)
100
79
  end
101
80
 
102
- context "when called without proper parameters" do
103
- it "raises an argument error exception" do
104
- expect { team_proxy.add_member }.to raise_error ArgumentError
105
- end
81
+ it "returns the API response" do
82
+ expect(team_proxy.add_member(:email_address => email_address)).to eq api_response
106
83
  end
84
+
107
85
  end
108
86
 
109
87
  describe "#remove_member" do
110
- let(:email) { 'john@johnson.com' }
111
- let(:account_id) { '15' }
112
-
113
- context "when called with an email address" do
114
- it "removes the user with the email address from the team" do
115
- client.should_receive(:post).with('/team/remove_member', :body => {:email_address => email})
116
- team_proxy.remove_member(:email => email)
117
- end
118
-
119
- it "returns the API response" do
120
- expect(team_proxy.remove_member(:email => email)).to eq api_response
121
- end
122
- end
123
88
 
124
- context "when called with an account ID" do
125
- it "removes the user with the account ID from the team" do
126
- client.should_receive(:post).with('/team/remove_member', :body => {:account_id => account_id})
127
- team_proxy.remove_member(:account_id => account_id)
128
- end
89
+ let(:email_address) { 'john@johnson.com' }
129
90
 
130
- it "returns the API response" do
131
- expect(team_proxy.remove_member(:account_id => account_id)).to eq api_response
132
- end
91
+ it "sends a request to remove the member from the team" do
92
+ client.should_receive(:post).with('/team/remove_member', :body => {:email_address => email_address})
93
+ team_proxy.remove_member(:email_address => email_address)
133
94
  end
134
95
 
135
- context "when called without proper parameters" do
136
- it "raises an argument error exception" do
137
- expect { team_proxy.remove_member }.to raise_error ArgumentError
138
- end
96
+ it "returns the API response" do
97
+ expect(team_proxy.remove_member(:email_address => email_address)).to eq api_response
139
98
  end
99
+
140
100
  end
141
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hello_sign
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-05 00:00:00.000000000 Z
12
+ date: 2013-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.9.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 10.0.3
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 10.0.3
78
94
  description: A Ruby interface to the HelloSign API.
79
95
  email:
80
96
  - craiglttl@gmail.com
@@ -130,12 +146,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
146
  - - ! '>='
131
147
  - !ruby/object:Gem::Version
132
148
  version: '0'
149
+ segments:
150
+ - 0
151
+ hash: -3035616681847644249
133
152
  required_rubygems_version: !ruby/object:Gem::Requirement
134
153
  none: false
135
154
  requirements:
136
155
  - - ! '>='
137
156
  - !ruby/object:Gem::Version
138
157
  version: '0'
158
+ segments:
159
+ - 0
160
+ hash: -3035616681847644249
139
161
  requirements: []
140
162
  rubyforge_project:
141
163
  rubygems_version: 1.8.23