groupdocs 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -0
- data/CHANGELOG.md +32 -0
- data/examples/api-samples/public/css/style.css +123 -67
- data/examples/api-samples/public/images/help.png +0 -0
- data/examples/api-samples/public/images/info.png +0 -0
- data/examples/api-samples/public/templates/base-simple_source.html +192 -0
- data/examples/api-samples/public/templates/testdocument.html +101 -0
- data/examples/api-samples/public/templates/welcome.htm +137 -0
- data/examples/api-samples/samples/sample18.rb +134 -31
- data/examples/api-samples/views/sample18.haml +127 -9
- data/lib/groupdocs/api/request.rb +1 -1
- data/lib/groupdocs/document.rb +6 -3
- data/lib/groupdocs/signature.rb +6 -0
- data/lib/groupdocs/signature/contact.rb +42 -0
- data/lib/groupdocs/signature/envelope.rb +71 -0
- data/lib/groupdocs/signature/field.rb +21 -2
- data/lib/groupdocs/signature/form.rb +162 -9
- data/lib/groupdocs/signature/role.rb +5 -31
- data/lib/groupdocs/signature/shared/document_methods.rb +2 -1
- data/lib/groupdocs/signature/shared/entity_fields.rb +6 -16
- data/lib/groupdocs/signature/shared/entity_methods.rb +2 -2
- data/lib/groupdocs/signature/shared/field_methods.rb +56 -2
- data/lib/groupdocs/storage.rb +1 -0
- data/lib/groupdocs/storage/provider.rb +32 -0
- data/lib/groupdocs/user.rb +66 -0
- data/lib/groupdocs/version.rb +1 -1
- data/spec/groupdocs/signature/contact_spec.rb +21 -0
- data/spec/groupdocs/signature/envelope_spec.rb +53 -1
- data/spec/groupdocs/signature/field_spec.rb +19 -1
- data/spec/groupdocs/signature/form_spec.rb +47 -11
- data/spec/groupdocs/signature/role_spec.rb +4 -47
- data/spec/groupdocs/signature_spec.rb +4 -0
- data/spec/groupdocs/storage/provider_spec.rb +22 -0
- data/spec/groupdocs/user_spec.rb +54 -0
- data/spec/support/json/user_embed_key.json +39 -0
- data/spec/support/json/user_providers.json +31 -0
- data/spec/support/json/user_roles.json +25 -0
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +14 -26
- data/spec/support/shared_examples/signature/shared/field_methods.rb +58 -34
- metadata +18 -4
@@ -44,37 +44,11 @@ module GroupDocs
|
|
44
44
|
alias_accessor :can_annotate, :canAnnotate
|
45
45
|
alias_accessor :can_delegate, :canDelegate
|
46
46
|
|
47
|
-
#
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
can_edit == 1
|
53
|
-
end
|
54
|
-
|
55
|
-
#
|
56
|
-
# Returns true if role can sign.
|
57
|
-
# @return [Boolean]
|
58
|
-
#
|
59
|
-
def can_sign?
|
60
|
-
can_sign == 1
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
# Returns true if role can annotate.
|
65
|
-
# @return [Boolean]
|
66
|
-
#
|
67
|
-
def can_annotate?
|
68
|
-
can_annotate == 1
|
69
|
-
end
|
70
|
-
|
71
|
-
#
|
72
|
-
# Returns true if role can delegate.
|
73
|
-
# @return [Boolean]
|
74
|
-
#
|
75
|
-
def can_delegate?
|
76
|
-
can_delegate == 1
|
77
|
-
end
|
47
|
+
# Boolean methods for Ruby DSL
|
48
|
+
alias_method :can_edit?, :can_edit
|
49
|
+
alias_method :can_sign?, :can_sign
|
50
|
+
alias_method :can_annotate?, :can_annotate
|
51
|
+
alias_method :can_delegate?, :can_delegate
|
78
52
|
|
79
53
|
end # Signature::Role
|
80
54
|
end # GroupDocs
|
@@ -24,7 +24,8 @@ module GroupDocs
|
|
24
24
|
end.execute!
|
25
25
|
|
26
26
|
json[:documents].map do |document|
|
27
|
-
|
27
|
+
id = document[:documentId] || document[:id]
|
28
|
+
file = Storage::File.new(:guid => id, :name => document[:name])
|
28
29
|
Document.new(document.merge(:file => file))
|
29
30
|
end
|
30
31
|
end
|
@@ -36,6 +36,10 @@ module GroupDocs
|
|
36
36
|
attr_accessor :documentsPages
|
37
37
|
# @attr [Array<GroupDocs::Signature::Contact>] recipients
|
38
38
|
attr_accessor :recipients
|
39
|
+
# @attr [String] watermarkText
|
40
|
+
attr_accessor :watermarkText
|
41
|
+
# @attr [String] watermarkImage
|
42
|
+
attr_accessor :watermarkImage
|
39
43
|
|
40
44
|
# Human-readable accessors
|
41
45
|
alias_accessor :owner_id, :ownerId
|
@@ -48,6 +52,8 @@ module GroupDocs
|
|
48
52
|
alias_accessor :email_body, :emailBody
|
49
53
|
alias_accessor :documents_count, :documentsCount
|
50
54
|
alias_accessor :documents_pages, :documentsPages
|
55
|
+
alias_accessor :watermark_text, :watermarkText
|
56
|
+
alias_accessor :watermark_image, :watermarkImage
|
51
57
|
|
52
58
|
#
|
53
59
|
# Converts each recipient to GroupDocs::Signature::Recipient object.
|
@@ -65,22 +71,6 @@ module GroupDocs
|
|
65
71
|
end
|
66
72
|
end
|
67
73
|
|
68
|
-
#
|
69
|
-
# Returns true if owner should sign.
|
70
|
-
# @return [Boolean]
|
71
|
-
#
|
72
|
-
def owner_should_sign
|
73
|
-
@ownerShouldSign == 1 ? true : false
|
74
|
-
end
|
75
|
-
|
76
|
-
#
|
77
|
-
# Returns ordered signature type.
|
78
|
-
# @return [Symbol]
|
79
|
-
#
|
80
|
-
def ordered_signature
|
81
|
-
@orderedSignature == 1 ? :parallel : :ordered
|
82
|
-
end
|
83
|
-
|
84
74
|
end # EntityFields
|
85
75
|
end # Signature
|
86
76
|
end # GroupDocs
|
@@ -52,8 +52,8 @@ module GroupDocs
|
|
52
52
|
# envelope.create!
|
53
53
|
#
|
54
54
|
# @param [Hash] options Hash of options
|
55
|
-
# @option options [
|
56
|
-
# @option options [
|
55
|
+
# @option options [String] :template_id Template GUID to use
|
56
|
+
# @option options [String] :envelope_id Envelope GUID to use
|
57
57
|
# @param [Hash] access Access credentials
|
58
58
|
# @option access [String] :client_id
|
59
59
|
# @option access [String] :private_key
|
@@ -55,7 +55,7 @@ module GroupDocs
|
|
55
55
|
#
|
56
56
|
# @example Add field to template
|
57
57
|
# template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
|
58
|
-
# field = GroupDocs::Signature::Field.get!.detect { |f| f.
|
58
|
+
# field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
59
59
|
# field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
|
60
60
|
# document = template.documents!.first
|
61
61
|
# recipient = template.recipients!.first
|
@@ -63,7 +63,7 @@ module GroupDocs
|
|
63
63
|
#
|
64
64
|
# @example Add field to envelope
|
65
65
|
# envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
|
66
|
-
# field = GroupDocs::Signature::Field.get!.detect { |f| f.
|
66
|
+
# field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
67
67
|
# field.location = { location_x: 0.1, location_y: 0.1, page: 1 }
|
68
68
|
# document = envelope.documents!.first
|
69
69
|
# recipient = envelope.recipients!.first
|
@@ -151,6 +151,53 @@ module GroupDocs
|
|
151
151
|
end.execute!
|
152
152
|
end
|
153
153
|
|
154
|
+
#
|
155
|
+
# Assigns document field to new recipient.
|
156
|
+
#
|
157
|
+
# @example Assign template field
|
158
|
+
# template = GroupDocs::Signature::Template.get!("g94h5g84hj9g4gf23i40j")
|
159
|
+
# document = template.documents!.first
|
160
|
+
# recipient_one = template.recipients![0]
|
161
|
+
# recipient_two = template.recipients![1]
|
162
|
+
# field = template.fields!(document, recipient).first
|
163
|
+
# template.assign_field! field, document, recipient_one, recipient_two
|
164
|
+
#
|
165
|
+
# @example Assign envelope field
|
166
|
+
# envelope = GroupDocs::Signature::Envelope.get!("g94h5g84hj9g4gf23i40j")
|
167
|
+
# document = envelope.documents!.first
|
168
|
+
# recipient_one = envelope.recipients![0]
|
169
|
+
# recipient_two = envelope.recipients![1]
|
170
|
+
# field = envelope.fields!(document, recipient).first
|
171
|
+
# envelope.assign_field! field, document, recipient_one, recipient_two
|
172
|
+
#
|
173
|
+
# @param [GroupDocs::Signature::Field] field
|
174
|
+
# @param [GroupDocs::Document] document
|
175
|
+
# @param [GroupDocs::Signature::Recipient] assign_from
|
176
|
+
# @param [GroupDocs::Signature::Recipient] assign_to
|
177
|
+
# @param [Hash] access Access credentials
|
178
|
+
# @option access [String] :client_id
|
179
|
+
# @option access [String] :private_key
|
180
|
+
# @raise [ArgumentError] if field is not GroupDocs::Signature::Field
|
181
|
+
# @raise [ArgumentError] if document is not GroupDocs::Document
|
182
|
+
#
|
183
|
+
def assign_field!(field, document, assign_from, assign_to, access = {})
|
184
|
+
field.is_a?(GroupDocs::Signature::Field) or raise ArgumentError,
|
185
|
+
"Field should be GroupDocs::Signature::Field object, received: #{field.inspect}"
|
186
|
+
document.is_a?(GroupDocs::Document) or raise ArgumentError,
|
187
|
+
"Document should be GroupDocs::Document object, received: #{document.inspect}"
|
188
|
+
assign_from.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
|
189
|
+
"Assign from should be GroupDocs::Signature::Recipient object, received: #{assign_from.inspect}"
|
190
|
+
assign_to.is_a?(GroupDocs::Signature::Recipient) or raise ArgumentError,
|
191
|
+
"Assign to should be GroupDocs::Signature::Recipient object, received: #{assign_to.inspect}"
|
192
|
+
|
193
|
+
Api::Request.new do |request|
|
194
|
+
request[:access] = access
|
195
|
+
request[:method] = :POST
|
196
|
+
request[:path] = "/signature/{{client_id}}/#{class_name.pluralize}/#{id}/documents/#{document.file.guid}/field/#{field.id}",
|
197
|
+
request[:request_body] = { :currentRecipientId => assign_from.id, :newRecipientId => assign_to.id }
|
198
|
+
end.execute!
|
199
|
+
end
|
200
|
+
|
154
201
|
#
|
155
202
|
# Deletes field.
|
156
203
|
#
|
@@ -259,6 +306,13 @@ module GroupDocs
|
|
259
306
|
# location = field.locations.first
|
260
307
|
# envelope.delete_field_location! location, field
|
261
308
|
#
|
309
|
+
# @example Delete field location in form
|
310
|
+
# form = GroupDocs::Signature::Form.get!("g94h5g84hj9g4gf23i40j")
|
311
|
+
# document = form.documents!.first
|
312
|
+
# field = form.fields!(document).first
|
313
|
+
# location = field.locations.first
|
314
|
+
# form.delete_field_location! location, field
|
315
|
+
#
|
262
316
|
# @param [GroupDocs::Signature::Field::Location] location
|
263
317
|
# @param [GroupDocs::Signature::Field] field
|
264
318
|
# @param [Hash] access Access credentials
|
data/lib/groupdocs/storage.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
module GroupDocs
|
2
|
+
module Storage
|
3
|
+
class Provider < Api::Entity
|
4
|
+
|
5
|
+
# @attr [Integer] id
|
6
|
+
attr_accessor :id
|
7
|
+
# @attr [String] provider
|
8
|
+
attr_accessor :provider
|
9
|
+
# @attr [String] type
|
10
|
+
attr_accessor :type
|
11
|
+
# @attr [String] token
|
12
|
+
attr_accessor :token
|
13
|
+
# @attr [String] publicKey
|
14
|
+
attr_accessor :publicKey
|
15
|
+
# @attr [String] privateKey
|
16
|
+
attr_accessor :privateKey
|
17
|
+
# @attr [String] rootFolder
|
18
|
+
attr_accessor :rootFolder
|
19
|
+
# @attr [Boolean] isPrimary
|
20
|
+
attr_accessor :isPrimary
|
21
|
+
# @attr [String] serviceHost
|
22
|
+
attr_accessor :serviceHost
|
23
|
+
|
24
|
+
alias_accessor :public_key, :publicKey
|
25
|
+
alias_accessor :private_key, :privateKey
|
26
|
+
alias_accessor :root_folder, :rootFolder
|
27
|
+
alias_accessor :is_primary, :isPrimary
|
28
|
+
alias_accessor :service_host, :serviceHost
|
29
|
+
|
30
|
+
end # Provider
|
31
|
+
end # Storage
|
32
|
+
end # GroupDocs
|
data/lib/groupdocs/user.rb
CHANGED
@@ -59,6 +59,54 @@ module GroupDocs
|
|
59
59
|
GroupDocs::User.new data.merge(json)
|
60
60
|
end
|
61
61
|
|
62
|
+
#
|
63
|
+
# Generates new active user embed key.
|
64
|
+
#
|
65
|
+
# @example
|
66
|
+
# GroupDocs::User.embed_key!('test-area')
|
67
|
+
# #=> "60a06ef8f23a49cf807977f1444fbdd8"
|
68
|
+
#
|
69
|
+
# @param [String] area
|
70
|
+
# @param [Hash] access Access credentials
|
71
|
+
# @option access [String] :client_id
|
72
|
+
# @option access [String] :private_key
|
73
|
+
# @return [String]
|
74
|
+
#
|
75
|
+
def self.embed_key!(area, access = {})
|
76
|
+
json = Api::Request.new do |request|
|
77
|
+
request[:access] = access
|
78
|
+
request[:method] = :GET
|
79
|
+
request[:path] = "/mgmt/{{client_id}}/embedkey/new/#{area}"
|
80
|
+
end.execute!
|
81
|
+
|
82
|
+
json[:key][:guid]
|
83
|
+
end
|
84
|
+
|
85
|
+
#
|
86
|
+
# Returns an array of storage providers.
|
87
|
+
#
|
88
|
+
# @example
|
89
|
+
# providers = GroupDocs::User.providers!
|
90
|
+
# providers.first.provider
|
91
|
+
# #=> "Dropbox"
|
92
|
+
#
|
93
|
+
# @param [Hash] access Access credentials
|
94
|
+
# @option access [String] :client_id
|
95
|
+
# @option access [String] :private_key
|
96
|
+
# @return [Array<GroupDocs::Storage::Provider>]
|
97
|
+
#
|
98
|
+
def self.providers!(access = {})
|
99
|
+
json = Api::Request.new do |request|
|
100
|
+
request[:access] = access
|
101
|
+
request[:method] = :GET
|
102
|
+
request[:path] = '/mgmt/{{client_id}}/storages'
|
103
|
+
end.execute!
|
104
|
+
|
105
|
+
json[:providers].map do |provider|
|
106
|
+
Storage::Provider.new(provider)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
62
110
|
# @attr [Integer] id
|
63
111
|
attr_accessor :id
|
64
112
|
# @attr [String] guid
|
@@ -174,5 +222,23 @@ module GroupDocs
|
|
174
222
|
end
|
175
223
|
end
|
176
224
|
|
225
|
+
#
|
226
|
+
# Returns an array of roles.
|
227
|
+
#
|
228
|
+
# @param [Hash] access Access credentials
|
229
|
+
# @option access [String] :client_id
|
230
|
+
# @option access [String] :private_key
|
231
|
+
# @return [Array]
|
232
|
+
#
|
233
|
+
def roles!(access = {})
|
234
|
+
json = Api::Request.new do |request|
|
235
|
+
request[:access] = access
|
236
|
+
request[:method] = :GET
|
237
|
+
request[:path] = '/mgmt/{{client_id}}/roles'
|
238
|
+
end.execute!
|
239
|
+
|
240
|
+
json[:roles]
|
241
|
+
end
|
242
|
+
|
177
243
|
end # User
|
178
244
|
end # GroupDocs
|
data/lib/groupdocs/version.rb
CHANGED
@@ -57,6 +57,27 @@ describe GroupDocs::Signature::Contact do
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
+
describe '.add_integration!' do
|
61
|
+
before(:each) do
|
62
|
+
mock_api_server('{ "status": "Ok", "result": { "contact": null }}')
|
63
|
+
end
|
64
|
+
|
65
|
+
let(:integration) do
|
66
|
+
{
|
67
|
+
:provider => :google,
|
68
|
+
:refresh_token => 'token',
|
69
|
+
:access_token => 'token',
|
70
|
+
:access_token_expiration => '2014-12-12'
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'accepts access credentials hash' do
|
75
|
+
lambda do
|
76
|
+
described_class.add_integration!(integration, :client_id => 'client_id', :private_key => 'private_key')
|
77
|
+
end.should_not raise_error(ArgumentError)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
60
81
|
it { should have_accessor(:id) }
|
61
82
|
it { should have_accessor(:firstName) }
|
62
83
|
it { should have_accessor(:lastName) }
|
@@ -62,11 +62,13 @@ describe GroupDocs::Signature::Envelope do
|
|
62
62
|
it { should have_accessor(:status) }
|
63
63
|
it { should have_accessor(:statusDateTime) }
|
64
64
|
it { should have_accessor(:envelopeExpireTime) }
|
65
|
+
it { should have_accessor(:isDemo) }
|
65
66
|
it { should have_accessor(:status) }
|
66
67
|
|
67
68
|
it { should alias_accessor(:creation_date_time, :creationDateTime) }
|
68
69
|
it { should alias_accessor(:status_date_time, :statusDateTime) }
|
69
70
|
it { should alias_accessor(:envelope_expire_time, :envelopeExpireTime) }
|
71
|
+
it { should alias_accessor(:is_demo, :isDemo) }
|
70
72
|
|
71
73
|
describe '#status' do
|
72
74
|
it 'converts status to human-readable format' do
|
@@ -115,6 +117,29 @@ describe GroupDocs::Signature::Envelope do
|
|
115
117
|
end
|
116
118
|
end
|
117
119
|
|
120
|
+
describe '#delegate_recipient!' do
|
121
|
+
let(:old) { GroupDocs::Signature::Recipient.new }
|
122
|
+
let(:new) { GroupDocs::Signature::Recipient.new }
|
123
|
+
|
124
|
+
before(:each) do
|
125
|
+
mock_api_server('{ "status": "Ok", "result": {}}')
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'accepts access credentials hash' do
|
129
|
+
lambda do
|
130
|
+
subject.delegate_recipient!(old, new, :client_id => 'client_id', :private_key => 'private_key')
|
131
|
+
end.should_not raise_error(ArgumentError)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'raises error if old recipient is not GroupDocs::Signature::Recipient object' do
|
135
|
+
lambda { subject.delegate_recipient!('Recipient', new) }.should raise_error(ArgumentError)
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'raises error if new recipient is not GroupDocs::Signature::Recipient object' do
|
139
|
+
lambda { subject.delegate_recipient!(old, 'Recipient') }.should raise_error(ArgumentError)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
118
143
|
describe '#fill_field!' do
|
119
144
|
let(:field) { GroupDocs::Signature::Field.new(:location => { :location_x => 0.1, :page => 1 }) }
|
120
145
|
let(:document) { GroupDocs::Document.new(:file => GroupDocs::Storage::File.new) }
|
@@ -242,7 +267,7 @@ describe GroupDocs::Signature::Envelope do
|
|
242
267
|
mock_api_server(File.read('spec/support/files/resume.pdf'))
|
243
268
|
end
|
244
269
|
|
245
|
-
it 'downloads
|
270
|
+
it 'downloads PDF file' do
|
246
271
|
file = stub('file')
|
247
272
|
subject.stub(:documents! => [1])
|
248
273
|
Object::File.should_receive(:open).with("#{path}/#{subject.name}.pdf", 'wb').and_yield(file)
|
@@ -266,6 +291,33 @@ describe GroupDocs::Signature::Envelope do
|
|
266
291
|
end
|
267
292
|
end
|
268
293
|
|
294
|
+
describe '#signed_document!' do
|
295
|
+
before(:each) do
|
296
|
+
mock_api_server(File.read('spec/support/files/resume.pdf'))
|
297
|
+
subject.name = 'envelope'
|
298
|
+
end
|
299
|
+
|
300
|
+
let(:path) { Dir.tmpdir }
|
301
|
+
let(:document) { GroupDocs::Document.new(:file => GroupDocs::Storage::File.new) }
|
302
|
+
|
303
|
+
it 'accepts access credentials hash' do
|
304
|
+
lambda do
|
305
|
+
subject.signed_document!(document, path, :client_id => 'client_id', :private_key => 'private_key')
|
306
|
+
end.should_not raise_error(ArgumentError)
|
307
|
+
end
|
308
|
+
|
309
|
+
it 'returns saved file path' do
|
310
|
+
subject.signed_document!(document, path).should == "#{path}/#{subject.name}.pdf"
|
311
|
+
end
|
312
|
+
|
313
|
+
it 'downloads PDF file' do
|
314
|
+
file = stub('file')
|
315
|
+
Object::File.should_receive(:open).with("#{path}/#{subject.name}.pdf", 'wb').and_yield(file)
|
316
|
+
file.should_receive(:write).with(File.read('spec/support/files/resume.pdf'))
|
317
|
+
subject.signed_document!(document, path)
|
318
|
+
end
|
319
|
+
end
|
320
|
+
|
269
321
|
describe '#logs!' do
|
270
322
|
before(:each) do
|
271
323
|
mock_api_server(load_json('envelope_logs'))
|
@@ -72,7 +72,6 @@ describe GroupDocs::Signature::Field do
|
|
72
72
|
it { should alias_accessor(:font_italic, :fontItalic) }
|
73
73
|
it { should alias_accessor(:font_underline, :fontUnderline) }
|
74
74
|
it { should alias_accessor(:is_system, :isSystem) }
|
75
|
-
it { should alias_accessor(:acceptable_values, :acceptableValues) }
|
76
75
|
it { should alias_accessor(:default_value, :defaultValue) }
|
77
76
|
it { should alias_accessor(:text_rows, :textRows) }
|
78
77
|
it { should alias_accessor(:text_columns, :textColumns) }
|
@@ -163,6 +162,25 @@ describe GroupDocs::Signature::Field do
|
|
163
162
|
end
|
164
163
|
end
|
165
164
|
|
165
|
+
describe '#acceptable_values=' do
|
166
|
+
it 'converts values in machine-readable format if array is passed' do
|
167
|
+
subject.acceptable_values = %w(on off)
|
168
|
+
subject.instance_variable_get(:@acceptableValues).should == 'on;off'
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'saves values as is if not an array is passed' do
|
172
|
+
subject.acceptable_values = 'on;off'
|
173
|
+
subject.instance_variable_get(:@acceptableValues).should == 'on;off'
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
describe '#acceptable_values' do
|
178
|
+
it 'returns values in human-readable format' do
|
179
|
+
subject.acceptable_values = %w(on off)
|
180
|
+
subject.acceptable_values.should == %w(on off)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
166
184
|
describe '#create!' do
|
167
185
|
before(:each) do
|
168
186
|
mock_api_server(load_json('signature_field_add'))
|