hello_sign 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hello_sign.rb +1 -5
- data/lib/hello_sign/client.rb +3 -1
- data/lib/hello_sign/file.rb +36 -0
- data/lib/hello_sign/{upload_io.rb → file/mime_types.rb} +1 -36
- data/lib/hello_sign/parameters/signature_request.rb +3 -9
- data/lib/hello_sign/parameters/unclaimed_draft.rb +3 -7
- data/lib/hello_sign/proxy.rb +5 -30
- data/lib/hello_sign/proxy/account.rb +1 -8
- data/lib/hello_sign/proxy/signature_request.rb +0 -1
- data/lib/hello_sign/proxy/unclaimed_draft.rb +0 -1
- data/lib/hello_sign/version.rb +1 -1
- data/spec/integration/hello_sign_spec.rb +6 -0
- data/spec/shared_examples/proxy.rb +7 -18
- data/spec/unit/client_spec.rb +0 -6
- data/spec/unit/hello_sign_spec.rb +6 -21
- data/spec/unit/parameters/signature_request_spec.rb +4 -7
- data/spec/unit/parameters/unclaimed_draft_spec.rb +3 -6
- data/spec/unit/proxy/account_spec.rb +1 -14
- data/spec/unit/proxy/reusable_form_spec.rb +0 -3
- data/spec/unit/proxy/signature_request_spec.rb +7 -15
- data/spec/unit/proxy/team_spec.rb +0 -14
- data/spec/unit/proxy/unclaimed_draft_spec.rb +2 -6
- data/spec/unit/upload_io_spec.rb +21 -24
- metadata +7 -6
data/lib/hello_sign.rb
CHANGED
@@ -13,7 +13,7 @@ module HelloSign
|
|
13
13
|
delegate [:account, :signature_request, :reusable_form, :team, :unclaimed_draft] => :client
|
14
14
|
|
15
15
|
def client
|
16
|
-
@client =
|
16
|
+
@client = HelloSign::Client.new(email_address, password) unless credentials_match?
|
17
17
|
@client
|
18
18
|
end
|
19
19
|
|
@@ -27,10 +27,6 @@ module HelloSign
|
|
27
27
|
@client && [@client.email_address, @client.password].hash == [email_address, password].hash
|
28
28
|
end
|
29
29
|
|
30
|
-
def client_source
|
31
|
-
@client_source || HelloSign::Client
|
32
|
-
end
|
33
|
-
|
34
30
|
Faraday.register_middleware :response, raise_error: HelloSign::Middleware::RaiseError
|
35
31
|
|
36
32
|
end
|
data/lib/hello_sign/client.rb
CHANGED
@@ -42,7 +42,9 @@ module HelloSign
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def base_connection
|
45
|
-
|
45
|
+
options = {url: API_ENDPOINT, headers: {user_agent: "hello_sign gem v#{HelloSign::VERSION}"}}
|
46
|
+
|
47
|
+
Faraday.new(options) do |connection|
|
46
48
|
yield connection
|
47
49
|
|
48
50
|
connection.request :multipart
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'hello_sign/file/mime_types'
|
2
|
+
require 'faraday/upload_io'
|
3
|
+
|
4
|
+
module HelloSign
|
5
|
+
class File
|
6
|
+
DEFAULT_MIME_TYPE = MIME_TYPES.fetch('txt')
|
7
|
+
|
8
|
+
attr_reader :filename, :io_object, :mime_type
|
9
|
+
|
10
|
+
def initialize(file_data)
|
11
|
+
@filename = file_data[:filename]
|
12
|
+
@io_object = file_data[:io]
|
13
|
+
@mime_type = file_data[:mime]
|
14
|
+
end
|
15
|
+
|
16
|
+
def attachment
|
17
|
+
Faraday::UploadIO.new(*parameters)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def parameters
|
23
|
+
begin
|
24
|
+
io_object ? [io_object, mime_type, filename] : [filename, mime_type]
|
25
|
+
end.compact
|
26
|
+
end
|
27
|
+
|
28
|
+
def mime_type
|
29
|
+
@mime_type or begin
|
30
|
+
extension = (filename || '').split('.').last
|
31
|
+
MIME_TYPES.fetch(extension) { DEFAULT_MIME_TYPE }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -1,8 +1,5 @@
|
|
1
|
-
require 'faraday/upload_io'
|
2
|
-
require 'hello_sign/error'
|
3
|
-
|
4
1
|
module HelloSign
|
5
|
-
class
|
2
|
+
class File
|
6
3
|
MIME_TYPES = {
|
7
4
|
'doc' => 'application/msword',
|
8
5
|
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
@@ -20,37 +17,5 @@ module HelloSign
|
|
20
17
|
'xls' => 'application/vnd.ms-excel',
|
21
18
|
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
22
19
|
}
|
23
|
-
|
24
|
-
attr_reader :filename, :io_object
|
25
|
-
|
26
|
-
def initialize(file_data)
|
27
|
-
@filename = file_data[:filename]
|
28
|
-
@io_object = file_data[:io]
|
29
|
-
@mime_type = file_data[:mime]
|
30
|
-
end
|
31
|
-
|
32
|
-
def upload
|
33
|
-
file_converter_source.new(*parameters)
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def parameters
|
39
|
-
begin
|
40
|
-
io_object ? [io_object, mime_type, filename] : [filename, mime_type]
|
41
|
-
end.compact
|
42
|
-
end
|
43
|
-
|
44
|
-
def mime_type
|
45
|
-
@mime_type or begin
|
46
|
-
extension = (filename || '').split('.').last
|
47
|
-
MIME_TYPES.fetch(extension) { 'text/plain' }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def file_converter_source
|
52
|
-
@file_converter_source || Faraday::UploadIO
|
53
|
-
end
|
54
|
-
|
55
20
|
end
|
56
21
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'hello_sign/
|
1
|
+
require 'hello_sign/file'
|
2
2
|
|
3
3
|
module HelloSign
|
4
4
|
module Parameters
|
5
5
|
class SignatureRequest
|
6
6
|
attr_accessor :title, :subject, :message, :ccs
|
7
|
-
attr_writer :signers, :files
|
7
|
+
attr_writer :signers, :files
|
8
8
|
|
9
9
|
def signers
|
10
10
|
(@signers || {}).each_with_index.inject({}) do |parameter, (signer, index)|
|
@@ -20,7 +20,7 @@ module HelloSign
|
|
20
20
|
|
21
21
|
def files
|
22
22
|
(@files || {}).each_with_index.inject({}) do |parameter, (file_data, index)|
|
23
|
-
parameter[index + 1] =
|
23
|
+
parameter[index + 1] = HelloSign::File.new(file_data).attachment
|
24
24
|
parameter
|
25
25
|
end
|
26
26
|
end
|
@@ -36,12 +36,6 @@ module HelloSign
|
|
36
36
|
}
|
37
37
|
end
|
38
38
|
|
39
|
-
private
|
40
|
-
|
41
|
-
def upload_io_source
|
42
|
-
@upload_io_source || HelloSign::UploadIO
|
43
|
-
end
|
44
|
-
|
45
39
|
end
|
46
40
|
end
|
47
41
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require 'hello_sign/
|
1
|
+
require 'hello_sign/file'
|
2
2
|
|
3
3
|
module HelloSign
|
4
4
|
module Parameters
|
5
5
|
class UnclaimedDraft
|
6
|
-
attr_writer :files
|
6
|
+
attr_writer :files
|
7
7
|
|
8
8
|
def formatted
|
9
9
|
{file: files}
|
@@ -13,15 +13,11 @@ module HelloSign
|
|
13
13
|
|
14
14
|
def files
|
15
15
|
@files.each_with_index.inject({}) do |parameter, (file_data, index)|
|
16
|
-
parameter[index] =
|
16
|
+
parameter[index] = HelloSign::File.new(file_data).attachment
|
17
17
|
parameter
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def upload_io_source
|
22
|
-
@upload_io_source || HelloSign::UploadIO
|
23
|
-
end
|
24
|
-
|
25
21
|
end
|
26
22
|
end
|
27
23
|
end
|
data/lib/hello_sign/proxy.rb
CHANGED
@@ -6,50 +6,25 @@ require 'hello_sign/proxy/unclaimed_draft'
|
|
6
6
|
|
7
7
|
module HelloSign
|
8
8
|
module Proxy
|
9
|
-
attr_writer :account_proxy_source, :signature_request_proxy_source,
|
10
|
-
:reusable_form_proxy_source, :team_proxy_source,
|
11
|
-
:unclaimed_draft_proxy_source
|
12
9
|
|
13
10
|
def account
|
14
|
-
|
11
|
+
HelloSign::Proxy::Account.new(self)
|
15
12
|
end
|
16
13
|
|
17
14
|
def signature_request(request_id = nil)
|
18
|
-
|
15
|
+
HelloSign::Proxy::SignatureRequest.new(self, request_id)
|
19
16
|
end
|
20
17
|
|
21
18
|
def reusable_form(form_id = nil)
|
22
|
-
|
19
|
+
HelloSign::Proxy::ReusableForm.new(self, form_id)
|
23
20
|
end
|
24
21
|
|
25
22
|
def team
|
26
|
-
|
23
|
+
HelloSign::Proxy::Team.new(self)
|
27
24
|
end
|
28
25
|
|
29
26
|
def unclaimed_draft
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def account_proxy_source
|
36
|
-
@account_proxy_source || HelloSign::Proxy::Account
|
37
|
-
end
|
38
|
-
|
39
|
-
def signature_request_proxy_source
|
40
|
-
@signature_request_proxy_source || HelloSign::Proxy::SignatureRequest
|
41
|
-
end
|
42
|
-
|
43
|
-
def reusable_form_proxy_source
|
44
|
-
@reusable_form_proxy_source || HelloSign::Proxy::ReusableForm
|
45
|
-
end
|
46
|
-
|
47
|
-
def team_proxy_source
|
48
|
-
@team_proxy_source || HelloSign::Proxy::Team
|
49
|
-
end
|
50
|
-
|
51
|
-
def unclaimed_draft_proxy_source
|
52
|
-
@unclaimed_draft_proxy_source || HelloSign::Proxy::UnclaimedDraft
|
27
|
+
HelloSign::Proxy::UnclaimedDraft.new(self)
|
53
28
|
end
|
54
29
|
|
55
30
|
end
|
@@ -4,7 +4,6 @@ module HelloSign
|
|
4
4
|
module Proxy
|
5
5
|
class Account
|
6
6
|
attr_reader :client
|
7
|
-
attr_writer :settings_proxy_source
|
8
7
|
|
9
8
|
def initialize(client)
|
10
9
|
@client = client
|
@@ -15,13 +14,7 @@ module HelloSign
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def settings
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def settings_proxy_source
|
24
|
-
@settings_proxy_source || HelloSign::Proxy::Settings
|
17
|
+
HelloSign::Proxy::Settings.new(client)
|
25
18
|
end
|
26
19
|
|
27
20
|
end
|
data/lib/hello_sign/version.rb
CHANGED
@@ -17,6 +17,12 @@ describe HelloSign do
|
|
17
17
|
HelloSign.client.get('/resource')
|
18
18
|
expect(a_get_with_auth('/resource')).to have_been_made
|
19
19
|
end
|
20
|
+
|
21
|
+
example do
|
22
|
+
HelloSign.client.get('/resource')
|
23
|
+
headers = {'User-Agent' => "hello_sign gem v#{HelloSign::VERSION}"}
|
24
|
+
expect(a_get_with_auth('/resource').with(headers: headers)).to have_been_made
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
28
|
describe "#post" do
|
@@ -1,58 +1,47 @@
|
|
1
1
|
shared_examples_for 'a proxy' do
|
2
|
-
let(:proxy_source) { double('proxy source') }
|
3
2
|
let(:proxy) { double('proxy') }
|
4
3
|
|
5
4
|
describe "#account" do
|
6
|
-
before { client.account_proxy_source = proxy_source }
|
7
|
-
|
8
5
|
it "returns an account proxy" do
|
9
|
-
|
6
|
+
HelloSign::Proxy::Account.should_receive(:new).with(client).and_return(proxy)
|
10
7
|
expect(client.account).to eq proxy
|
11
8
|
end
|
12
9
|
end
|
13
10
|
|
14
11
|
describe "#signature_request" do
|
15
|
-
before { client.signature_request_proxy_source = proxy_source }
|
16
|
-
|
17
12
|
it "returns a signature request proxy" do
|
18
|
-
|
13
|
+
HelloSign::Proxy::SignatureRequest.should_receive(:new).with(client, nil).and_return(proxy)
|
19
14
|
expect(client.signature_request).to eq proxy
|
20
15
|
end
|
21
16
|
|
22
17
|
it "passes on an optional signature request ID" do
|
23
|
-
|
18
|
+
HelloSign::Proxy::SignatureRequest.should_receive(:new).with(client, 'signature_request_id')
|
24
19
|
client.signature_request('signature_request_id')
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
28
23
|
describe "#reusable_form" do
|
29
|
-
before { client.reusable_form_proxy_source = proxy_source }
|
30
|
-
|
31
24
|
it "returns a reusable form proxy" do
|
32
|
-
|
25
|
+
HelloSign::Proxy::ReusableForm.should_receive(:new).with(client, nil).and_return(proxy)
|
33
26
|
expect(client.reusable_form).to eq proxy
|
34
27
|
end
|
35
28
|
|
36
29
|
it "passes on an optional reusable form ID" do
|
37
|
-
|
30
|
+
HelloSign::Proxy::ReusableForm.should_receive(:new).with(client, 'reusable_form_id')
|
38
31
|
client.reusable_form('reusable_form_id')
|
39
32
|
end
|
40
33
|
end
|
41
34
|
|
42
35
|
describe "#team" do
|
43
|
-
before { client.team_proxy_source = proxy_source }
|
44
|
-
|
45
36
|
it "returns a team proxy" do
|
46
|
-
|
37
|
+
HelloSign::Proxy::Team.should_receive(:new).with(client).and_return(proxy)
|
47
38
|
expect(client.team).to eq proxy
|
48
39
|
end
|
49
40
|
end
|
50
41
|
|
51
42
|
describe "#unclaimed_draft" do
|
52
|
-
before { client.unclaimed_draft_proxy_source = proxy_source }
|
53
|
-
|
54
43
|
it "returns an unclaimed draft proxy" do
|
55
|
-
|
44
|
+
HelloSign::Proxy::UnclaimedDraft.should_receive(:new).with(client).and_return(proxy)
|
56
45
|
expect(client.unclaimed_draft).to eq proxy
|
57
46
|
end
|
58
47
|
end
|
data/spec/unit/client_spec.rb
CHANGED
@@ -7,9 +7,6 @@ describe HelloSign::Client do
|
|
7
7
|
let(:password) { double('password') }
|
8
8
|
subject(:hs_client) { HelloSign::Client.new(email_address, password) }
|
9
9
|
|
10
|
-
its(:email_address) { should eq email_address }
|
11
|
-
its(:password) { should eq password }
|
12
|
-
|
13
10
|
it_behaves_like 'a proxy' do
|
14
11
|
let(:client) { hs_client }
|
15
12
|
end
|
@@ -47,9 +44,6 @@ describe HelloSign::Client do
|
|
47
44
|
context "when a hash is passed to the constructor" do
|
48
45
|
subject(:hs_client) { HelloSign::Client.new(email_address: email_address, password: password) }
|
49
46
|
|
50
|
-
its(:email_address) { should eq email_address }
|
51
|
-
its(:password) { should eq password }
|
52
|
-
|
53
47
|
it "raises an exception if an email address is not provided" do
|
54
48
|
expect { HelloSign::Client.new(password: 'space') }.to raise_error ArgumentError
|
55
49
|
end
|
@@ -10,24 +10,11 @@ describe HelloSign do
|
|
10
10
|
HelloSign.password = password
|
11
11
|
end
|
12
12
|
|
13
|
-
its(:email_address) { should eq email_address }
|
14
|
-
its(:password) { should eq password }
|
15
|
-
|
16
13
|
describe "::client" do
|
17
|
-
let(:
|
18
|
-
let(:client) { double('client') }
|
19
|
-
|
20
|
-
before do
|
21
|
-
HelloSign._set_internal_collaborator(:client_source, client_source)
|
22
|
-
client_source.stub(:new).and_return(client)
|
23
|
-
end
|
24
|
-
|
25
|
-
after { HelloSign.instance_variable_set(:@client, nil) }
|
26
|
-
|
27
|
-
its(:client) { should be client }
|
14
|
+
let(:client) { double('client') }
|
28
15
|
|
29
16
|
it "passes the credentials when creating the client" do
|
30
|
-
|
17
|
+
HelloSign::Client.should_receive(:new).with(email_address, password)
|
31
18
|
HelloSign.client
|
32
19
|
end
|
33
20
|
|
@@ -35,12 +22,14 @@ describe HelloSign do
|
|
35
22
|
let(:new_client) { double('new client') }
|
36
23
|
|
37
24
|
before do
|
38
|
-
|
25
|
+
HelloSign::Client.stub(:new).and_return(client, new_client)
|
39
26
|
client.stub(:email_address).and_return(email_address)
|
40
27
|
client.stub(:password).and_return(password)
|
41
28
|
HelloSign.client
|
42
29
|
end
|
43
30
|
|
31
|
+
after { HelloSign.instance_variable_set(:@client, nil) }
|
32
|
+
|
44
33
|
its(:client) { should be client }
|
45
34
|
|
46
35
|
context "and the credentials change" do
|
@@ -55,13 +44,9 @@ describe HelloSign do
|
|
55
44
|
end
|
56
45
|
|
57
46
|
context "when calling delegated methods" do
|
58
|
-
let(:client_source) { double('client_source') }
|
59
47
|
let(:client) { double('client') }
|
60
48
|
|
61
|
-
before
|
62
|
-
HelloSign._set_internal_collaborator(:client_source, client_source)
|
63
|
-
client_source.stub(:new).and_return(client)
|
64
|
-
end
|
49
|
+
before { HelloSign::Client.stub(:new).and_return(client) }
|
65
50
|
|
66
51
|
after { HelloSign.instance_variable_set(:@client, nil) }
|
67
52
|
|
@@ -4,19 +4,16 @@ require 'hello_sign/parameters/signature_request'
|
|
4
4
|
describe HelloSign::Parameters::SignatureRequest do
|
5
5
|
describe "#formatted" do
|
6
6
|
let(:request_parameters) { HelloSign::Parameters::SignatureRequest.new }
|
7
|
-
let(:upload_io_source) { double('upload IO source') }
|
8
7
|
let(:text_file) { double('text file') }
|
9
8
|
let(:image_file) { double('image file') }
|
10
9
|
|
11
|
-
before { request_parameters.upload_io_source = upload_io_source }
|
12
|
-
|
13
10
|
context "when all required arguments are set" do
|
14
11
|
let(:expected) do
|
15
12
|
{
|
16
13
|
title: 'Lease',
|
17
14
|
subject: 'Sign this',
|
18
15
|
message: 'You must sign this.',
|
19
|
-
cc_email_addresses: ['lawyer@lawfirm.com', 'spouse@family.com'],
|
16
|
+
cc_email_addresses: ['lawyer@lawfirm.com', 'spouse@family.com'],
|
20
17
|
signers: {
|
21
18
|
0 => {name: 'Jack', email_address: 'jack@hill.com', order: 0},
|
22
19
|
1 => {name: 'Jill', email_address: 'jill@hill.com', order: 1}
|
@@ -41,9 +38,9 @@ describe HelloSign::Parameters::SignatureRequest do
|
|
41
38
|
end
|
42
39
|
|
43
40
|
it "returns formatted parameters" do
|
44
|
-
|
45
|
-
|
46
|
-
[text_file, image_file].each { |file| file.should_receive(:
|
41
|
+
HelloSign::File.should_receive(:new).with(@file_data_1).and_return(text_file)
|
42
|
+
HelloSign::File.should_receive(:new).with(@file_data_2).and_return(image_file)
|
43
|
+
[text_file, image_file].each { |file| file.should_receive(:attachment).and_return(file) }
|
47
44
|
|
48
45
|
expect(request_parameters.formatted).to eq expected
|
49
46
|
end
|
@@ -4,11 +4,8 @@ require 'hello_sign/parameters/unclaimed_draft'
|
|
4
4
|
require 'stringio'
|
5
5
|
|
6
6
|
describe HelloSign::Parameters::UnclaimedDraft do
|
7
|
-
let(:upload_io_source) { double('upload IO source') }
|
8
7
|
subject(:draft_parameters) { HelloSign::Parameters::UnclaimedDraft.new }
|
9
8
|
|
10
|
-
before { draft_parameters.upload_io_source = upload_io_source }
|
11
|
-
|
12
9
|
describe "#formatted" do
|
13
10
|
let(:text_file) { double('text file') }
|
14
11
|
let(:image) { double('image') }
|
@@ -21,9 +18,9 @@ describe HelloSign::Parameters::UnclaimedDraft do
|
|
21
18
|
end
|
22
19
|
|
23
20
|
it "returns formatted parameters" do
|
24
|
-
|
25
|
-
|
26
|
-
[text_file, image].each { |file| file.should_receive(:
|
21
|
+
HelloSign::File.should_receive(:new).with(@file_data_1).and_return(text_file)
|
22
|
+
HelloSign::File.should_receive(:new).with(@file_data_2).and_return(image)
|
23
|
+
[text_file, image].each { |file| file.should_receive(:attachment).and_return(file) }
|
27
24
|
|
28
25
|
expect(draft_parameters.formatted).to eq({file: {0 => text_file, 1 => image}})
|
29
26
|
end
|
@@ -6,10 +6,7 @@ describe HelloSign::Proxy::Account do
|
|
6
6
|
let(:api_response) { double('API response') }
|
7
7
|
subject(:account_proxy) { HelloSign::Proxy::Account.new(client) }
|
8
8
|
|
9
|
-
its(:client) { should eq client }
|
10
|
-
|
11
9
|
describe "#create" do
|
12
|
-
|
13
10
|
let(:email_address) { 'david@bowman.com' }
|
14
11
|
let(:password) { 'password' }
|
15
12
|
|
@@ -35,24 +32,14 @@ describe HelloSign::Proxy::Account do
|
|
35
32
|
)
|
36
33
|
). to eq api_response
|
37
34
|
end
|
38
|
-
|
39
35
|
end
|
40
36
|
|
41
37
|
describe "#settings" do
|
42
|
-
|
43
|
-
let(:settings_proxy_source) { double('settings proxy source') }
|
44
38
|
let(:settings_proxy) { double('settings proxy') }
|
45
39
|
|
46
|
-
before do
|
47
|
-
account_proxy.settings_proxy_source = settings_proxy_source
|
48
|
-
end
|
49
|
-
|
50
40
|
it "returns a signature request proxy" do
|
51
|
-
|
52
|
-
.with(client)
|
53
|
-
.and_return(settings_proxy)
|
41
|
+
HelloSign::Proxy::Settings.should_receive(:new).with(client).and_return(settings_proxy)
|
54
42
|
expect(account_proxy.settings).to be settings_proxy
|
55
43
|
end
|
56
|
-
|
57
44
|
end
|
58
45
|
end
|
@@ -13,9 +13,6 @@ describe HelloSign::Proxy::ReusableForm do
|
|
13
13
|
client.stub(:post).and_return(api_response)
|
14
14
|
end
|
15
15
|
|
16
|
-
its(:client) { should eq client }
|
17
|
-
its(:form_id) { should eq form_id }
|
18
|
-
|
19
16
|
describe "#list" do
|
20
17
|
it "sends a request to fetch the list of reusable forms" do
|
21
18
|
client.should_receive(:get).with('/reusable_form/list', params: {page: 10})
|
@@ -12,9 +12,6 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
12
12
|
client.stub(:post).and_return(api_response)
|
13
13
|
end
|
14
14
|
|
15
|
-
its(:client) { should eq client }
|
16
|
-
its(:request_id) { should eq request_id }
|
17
|
-
|
18
15
|
describe "#deliver" do
|
19
16
|
let(:formatted_request_body) { double('formatted request body') }
|
20
17
|
let(:request_parameters) { double('request parameters') }
|
@@ -22,7 +19,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
22
19
|
before do
|
23
20
|
request_parameters.stub(:foo=)
|
24
21
|
request_parameters.stub(:formatted).and_return(formatted_request_body)
|
25
|
-
|
22
|
+
HelloSign::Parameters::SignatureRequest.stub(:new).and_return(request_parameters)
|
26
23
|
end
|
27
24
|
|
28
25
|
it "yields the request parameters to the block" do
|
@@ -31,8 +28,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
31
28
|
end
|
32
29
|
|
33
30
|
it "sends a signature request" do
|
34
|
-
client.should_receive(:post)
|
35
|
-
.with('/signature_request/send', body: formatted_request_body)
|
31
|
+
client.should_receive(:post).with('/signature_request/send', body: formatted_request_body)
|
36
32
|
sr_proxy.deliver { |params| params.foo = 'bar' }
|
37
33
|
end
|
38
34
|
|
@@ -43,7 +39,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
43
39
|
context "when a reusable form is specified" do
|
44
40
|
before do
|
45
41
|
request_parameters.stub(:reusable_form_id=)
|
46
|
-
|
42
|
+
HelloSign::Parameters::ReusableFormSignatureRequest.stub(:new).and_return(request_parameters)
|
47
43
|
end
|
48
44
|
|
49
45
|
it "sets the reusable form ID in the request parameters" do
|
@@ -52,8 +48,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
52
48
|
end
|
53
49
|
|
54
50
|
it "sends a reusable form signature request" do
|
55
|
-
client.should_receive(:post)
|
56
|
-
.with('/signature_request/send_with_reusable_form', body: formatted_request_body)
|
51
|
+
client.should_receive(:post).with('/signature_request/send_with_reusable_form', body: formatted_request_body)
|
57
52
|
sr_proxy.deliver(form: 'form_id') {}
|
58
53
|
end
|
59
54
|
|
@@ -77,8 +72,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
77
72
|
describe "#list" do
|
78
73
|
context "when called without a page number" do
|
79
74
|
it "fetches the first page of signature requests" do
|
80
|
-
client.should_receive(:get)
|
81
|
-
.with('/signature_request/list', params: {page: 1})
|
75
|
+
client.should_receive(:get).with('/signature_request/list', params: {page: 1})
|
82
76
|
sr_proxy.list
|
83
77
|
end
|
84
78
|
|
@@ -90,8 +84,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
90
84
|
|
91
85
|
context "when called with a page number" do
|
92
86
|
it "fetches a list of signature requests from the specified page" do
|
93
|
-
client.should_receive(:get)
|
94
|
-
.with('/signature_request/list', params: {page: 10})
|
87
|
+
client.should_receive(:get).with('/signature_request/list', params: {page: 10})
|
95
88
|
sr_proxy.list(page: 10)
|
96
89
|
end
|
97
90
|
|
@@ -106,8 +99,7 @@ describe HelloSign::Proxy::SignatureRequest do
|
|
106
99
|
let(:email) { 'john@johnson.com' }
|
107
100
|
|
108
101
|
it "sends a signature request reminder" do
|
109
|
-
client.should_receive(:post)
|
110
|
-
.with("/signature_request/remind/#{request_id}", body: {email_address: email})
|
102
|
+
client.should_receive(:post).with("/signature_request/remind/#{request_id}", body: {email_address: email})
|
111
103
|
sr_proxy.remind(email: email)
|
112
104
|
end
|
113
105
|
|
@@ -11,10 +11,7 @@ describe HelloSign::Proxy::Team do
|
|
11
11
|
client.stub(:post).and_return(api_response)
|
12
12
|
end
|
13
13
|
|
14
|
-
its(:client) { should eq client }
|
15
|
-
|
16
14
|
describe "#create" do
|
17
|
-
|
18
15
|
let(:name) { 'The Browncoats' }
|
19
16
|
|
20
17
|
it "sends a request to create a team" do
|
@@ -25,11 +22,9 @@ describe HelloSign::Proxy::Team do
|
|
25
22
|
it "returns the API response" do
|
26
23
|
expect(team_proxy.create(name: name)).to eq api_response
|
27
24
|
end
|
28
|
-
|
29
25
|
end
|
30
26
|
|
31
27
|
describe "#show" do
|
32
|
-
|
33
28
|
it "sends a request to fetch the team information" do
|
34
29
|
client.should_receive(:get).with('/team')
|
35
30
|
team_proxy.show
|
@@ -38,11 +33,9 @@ describe HelloSign::Proxy::Team do
|
|
38
33
|
it "returns the API response" do
|
39
34
|
expect(team_proxy.show).to eq api_response
|
40
35
|
end
|
41
|
-
|
42
36
|
end
|
43
37
|
|
44
38
|
describe "#update" do
|
45
|
-
|
46
39
|
let(:new_name) { 'The Bluecoats' }
|
47
40
|
|
48
41
|
it "sends a request to update the team information" do
|
@@ -53,11 +46,9 @@ describe HelloSign::Proxy::Team do
|
|
53
46
|
it "returns the API response" do
|
54
47
|
expect(team_proxy.update(name: new_name)).to eq api_response
|
55
48
|
end
|
56
|
-
|
57
49
|
end
|
58
50
|
|
59
51
|
describe "#destroy" do
|
60
|
-
|
61
52
|
it "sends a request to destroy the team" do
|
62
53
|
client.should_receive(:post).with('/team/destroy')
|
63
54
|
team_proxy.destroy
|
@@ -66,11 +57,9 @@ describe HelloSign::Proxy::Team do
|
|
66
57
|
it "returns the API response" do
|
67
58
|
expect(team_proxy.destroy).to eq api_response
|
68
59
|
end
|
69
|
-
|
70
60
|
end
|
71
61
|
|
72
62
|
describe "#add_member" do
|
73
|
-
|
74
63
|
let(:email_address) { 'john@johnson.com' }
|
75
64
|
|
76
65
|
it "sends a request to add the member to the team" do
|
@@ -81,11 +70,9 @@ describe HelloSign::Proxy::Team do
|
|
81
70
|
it "returns the API response" do
|
82
71
|
expect(team_proxy.add_member(email_address: email_address)).to eq api_response
|
83
72
|
end
|
84
|
-
|
85
73
|
end
|
86
74
|
|
87
75
|
describe "#remove_member" do
|
88
|
-
|
89
76
|
let(:email_address) { 'john@johnson.com' }
|
90
77
|
|
91
78
|
it "sends a request to remove the member from the team" do
|
@@ -96,6 +83,5 @@ describe HelloSign::Proxy::Team do
|
|
96
83
|
it "returns the API response" do
|
97
84
|
expect(team_proxy.remove_member(email_address: email_address)).to eq api_response
|
98
85
|
end
|
99
|
-
|
100
86
|
end
|
101
87
|
end
|
@@ -6,19 +6,15 @@ describe HelloSign::Proxy::UnclaimedDraft do
|
|
6
6
|
let(:api_response) { double('API response') }
|
7
7
|
subject(:ud_proxy) { HelloSign::Proxy::UnclaimedDraft.new(client) }
|
8
8
|
|
9
|
-
its(:client) { should eq client }
|
10
|
-
|
11
9
|
describe "#create" do
|
12
10
|
let(:formatted_request_body) { double('formatted request body') }
|
13
11
|
let(:draft_parameters) { double('draft parameters') }
|
14
12
|
|
15
13
|
before do
|
16
|
-
|
14
|
+
HelloSign::Parameters::UnclaimedDraft.stub(:new).and_return(draft_parameters)
|
17
15
|
draft_parameters.stub(:formatted).and_return(formatted_request_body)
|
18
16
|
draft_parameters.should_receive(:foo=).with('bar')
|
19
|
-
client.should_receive(:post)
|
20
|
-
.with('/unclaimed_draft/create', body: formatted_request_body)
|
21
|
-
.and_return(api_response)
|
17
|
+
client.should_receive(:post).with('/unclaimed_draft/create', body: formatted_request_body).and_return(api_response)
|
22
18
|
end
|
23
19
|
|
24
20
|
it "sends a unclaimed draft creation request and returns the result" do
|
data/spec/unit/upload_io_spec.rb
CHANGED
@@ -1,60 +1,57 @@
|
|
1
1
|
require 'helper'
|
2
|
-
require 'hello_sign/
|
2
|
+
require 'hello_sign/file'
|
3
3
|
|
4
|
-
describe HelloSign::
|
5
|
-
let(:
|
6
|
-
let(:io_object)
|
7
|
-
let(:file_converter_source) { double('file converter source') }
|
4
|
+
describe HelloSign::File do
|
5
|
+
let(:attachment) { double('attachment') }
|
6
|
+
let(:io_object) { double('IO object') }
|
8
7
|
|
9
|
-
|
8
|
+
it "returns the attachment" do
|
9
|
+
Faraday::UploadIO.stub(:new).and_return(attachment)
|
10
10
|
|
11
|
-
|
12
|
-
file_converter_source.stub(:new).and_return(upload_file)
|
13
|
-
|
14
|
-
expect(HelloSign::UploadIO.new(filename: 'test.txt').upload).to eq upload_file
|
11
|
+
expect(HelloSign::File.new(filename: 'test.txt').attachment).to eq attachment
|
15
12
|
end
|
16
13
|
|
17
14
|
context "#upload" do
|
18
15
|
specify do
|
19
|
-
|
16
|
+
Faraday::UploadIO.should_receive(:new).with('test.txt', 'text/plain')
|
20
17
|
|
21
|
-
HelloSign::
|
18
|
+
HelloSign::File.new(filename: 'test.txt').attachment
|
22
19
|
end
|
23
20
|
|
24
21
|
specify do
|
25
|
-
|
22
|
+
Faraday::UploadIO.should_receive(:new).with('test.foo', 'text/plain')
|
26
23
|
|
27
|
-
HelloSign::
|
24
|
+
HelloSign::File.new(filename: 'test.foo').attachment
|
28
25
|
end
|
29
26
|
|
30
27
|
specify do
|
31
|
-
|
28
|
+
Faraday::UploadIO.should_receive(:new).with('test.baz', 'fake/mime')
|
32
29
|
|
33
|
-
HelloSign::
|
30
|
+
HelloSign::File.new(filename: 'test.baz', mime: 'fake/mime').attachment
|
34
31
|
end
|
35
32
|
|
36
33
|
specify do
|
37
|
-
|
34
|
+
Faraday::UploadIO.should_receive(:new).with(io_object, 'text/plain')
|
38
35
|
|
39
|
-
HelloSign::
|
36
|
+
HelloSign::File.new(io: io_object).attachment
|
40
37
|
end
|
41
38
|
|
42
39
|
specify do
|
43
|
-
|
40
|
+
Faraday::UploadIO.should_receive(:new).with(io_object, 'fake/mime')
|
44
41
|
|
45
|
-
HelloSign::
|
42
|
+
HelloSign::File.new(io: io_object, mime: 'fake/mime').attachment
|
46
43
|
end
|
47
44
|
|
48
45
|
specify do
|
49
|
-
|
46
|
+
Faraday::UploadIO.should_receive(:new).with(io_object, 'fake/mime', 'test.foo')
|
50
47
|
|
51
|
-
HelloSign::
|
48
|
+
HelloSign::File.new(filename: 'test.foo', io: io_object, mime: 'fake/mime').attachment
|
52
49
|
end
|
53
50
|
|
54
51
|
specify do
|
55
|
-
|
52
|
+
Faraday::UploadIO.should_receive(:new).with(io_object, 'text/plain', 'test.foo')
|
56
53
|
|
57
|
-
HelloSign::
|
54
|
+
HelloSign::File.new(filename: 'test.foo', io: io_object).attachment
|
58
55
|
end
|
59
56
|
end
|
60
57
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
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-03-
|
12
|
+
date: 2013-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
- - ~>
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0.6'
|
110
|
-
description: A Ruby interface to the HelloSign API
|
110
|
+
description: A Ruby interface to the HelloSign API
|
111
111
|
email:
|
112
112
|
- craiglttl@gmail.com
|
113
113
|
executables: []
|
@@ -116,6 +116,8 @@ extra_rdoc_files: []
|
|
116
116
|
files:
|
117
117
|
- lib/hello_sign/client.rb
|
118
118
|
- lib/hello_sign/error.rb
|
119
|
+
- lib/hello_sign/file/mime_types.rb
|
120
|
+
- lib/hello_sign/file.rb
|
119
121
|
- lib/hello_sign/middleware/raise_error.rb
|
120
122
|
- lib/hello_sign/parameters/reusable_form_signature_request.rb
|
121
123
|
- lib/hello_sign/parameters/signature_request.rb
|
@@ -127,7 +129,6 @@ files:
|
|
127
129
|
- lib/hello_sign/proxy/team.rb
|
128
130
|
- lib/hello_sign/proxy/unclaimed_draft.rb
|
129
131
|
- lib/hello_sign/proxy.rb
|
130
|
-
- lib/hello_sign/upload_io.rb
|
131
132
|
- lib/hello_sign/version.rb
|
132
133
|
- lib/hello_sign.rb
|
133
134
|
- spec/fixtures/test.jpg
|
@@ -178,10 +179,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
179
|
version: '0'
|
179
180
|
requirements: []
|
180
181
|
rubyforge_project:
|
181
|
-
rubygems_version: 1.8.
|
182
|
+
rubygems_version: 1.8.23
|
182
183
|
signing_key:
|
183
184
|
specification_version: 3
|
184
|
-
summary: A Ruby interface to the HelloSign API
|
185
|
+
summary: A Ruby interface to the HelloSign API
|
185
186
|
test_files:
|
186
187
|
- spec/fixtures/test.jpg
|
187
188
|
- spec/fixtures/test.pdf
|