groupdocs 0.1.0
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/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/README.md +141 -0
- data/Rakefile +9 -0
- data/groupdocs.gemspec +28 -0
- data/lib/groupdocs.rb +53 -0
- data/lib/groupdocs/api.rb +3 -0
- data/lib/groupdocs/api/entity.rb +113 -0
- data/lib/groupdocs/api/helpers.rb +5 -0
- data/lib/groupdocs/api/helpers/access_helper.rb +56 -0
- data/lib/groupdocs/api/helpers/actions_helper.rb +48 -0
- data/lib/groupdocs/api/helpers/rest_helper.rb +89 -0
- data/lib/groupdocs/api/helpers/status_helper.rb +48 -0
- data/lib/groupdocs/api/helpers/url_helper.rb +89 -0
- data/lib/groupdocs/api/request.rb +73 -0
- data/lib/groupdocs/api/sugar/lookup.rb +48 -0
- data/lib/groupdocs/datasource.rb +162 -0
- data/lib/groupdocs/datasource/field.rb +44 -0
- data/lib/groupdocs/document.rb +513 -0
- data/lib/groupdocs/document/annotation.rb +215 -0
- data/lib/groupdocs/document/annotation/reply.rb +167 -0
- data/lib/groupdocs/document/change.rb +35 -0
- data/lib/groupdocs/document/field.rb +27 -0
- data/lib/groupdocs/document/metadata.rb +26 -0
- data/lib/groupdocs/document/rectangle.rb +24 -0
- data/lib/groupdocs/document/view.rb +36 -0
- data/lib/groupdocs/errors.rb +10 -0
- data/lib/groupdocs/job.rb +201 -0
- data/lib/groupdocs/questionnaire.rb +221 -0
- data/lib/groupdocs/questionnaire/execution.rb +120 -0
- data/lib/groupdocs/questionnaire/page.rb +43 -0
- data/lib/groupdocs/questionnaire/question.rb +75 -0
- data/lib/groupdocs/questionnaire/question/answer.rb +10 -0
- data/lib/groupdocs/storage.rb +37 -0
- data/lib/groupdocs/storage/file.rb +248 -0
- data/lib/groupdocs/storage/folder.rb +314 -0
- data/lib/groupdocs/storage/package.rb +42 -0
- data/lib/groupdocs/user.rb +50 -0
- data/lib/groupdocs/version.rb +3 -0
- data/spec/groupdocs/api/entity_spec.rb +54 -0
- data/spec/groupdocs/api/helpers/access_helper_spec.rb +89 -0
- data/spec/groupdocs/api/helpers/actions_helper_spec.rb +51 -0
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +187 -0
- data/spec/groupdocs/api/helpers/status_helper_spec.rb +85 -0
- data/spec/groupdocs/api/helpers/url_helper_spec.rb +93 -0
- data/spec/groupdocs/api/request_spec.rb +85 -0
- data/spec/groupdocs/datasource/field_spec.rb +50 -0
- data/spec/groupdocs/datasource_spec.rb +156 -0
- data/spec/groupdocs/document/annotation/reply_spec.rb +179 -0
- data/spec/groupdocs/document/annotation_spec.rb +226 -0
- data/spec/groupdocs/document/change_spec.rb +35 -0
- data/spec/groupdocs/document/field_spec.rb +31 -0
- data/spec/groupdocs/document/metadata_spec.rb +26 -0
- data/spec/groupdocs/document/rectangle_spec.rb +34 -0
- data/spec/groupdocs/document/view_spec.rb +36 -0
- data/spec/groupdocs/document_spec.rb +509 -0
- data/spec/groupdocs/errors_spec.rb +7 -0
- data/spec/groupdocs/job_spec.rb +196 -0
- data/spec/groupdocs/questionnaire/execution_spec.rb +136 -0
- data/spec/groupdocs/questionnaire/page_spec.rb +50 -0
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +11 -0
- data/spec/groupdocs/questionnaire/question_spec.rb +84 -0
- data/spec/groupdocs/questionnaire_spec.rb +217 -0
- data/spec/groupdocs/storage/file_spec.rb +242 -0
- data/spec/groupdocs/storage/folder_spec.rb +310 -0
- data/spec/groupdocs/storage/package_spec.rb +41 -0
- data/spec/groupdocs/storage_spec.rb +27 -0
- data/spec/groupdocs/user_spec.rb +53 -0
- data/spec/groupdocs_spec.rb +56 -0
- data/spec/spec_helper.rb +46 -0
- data/spec/support/files/resume.pdf +0 -0
- data/spec/support/json/annotation_collaborators_set.json +16 -0
- data/spec/support/json/annotation_create.json +12 -0
- data/spec/support/json/annotation_list.json +32 -0
- data/spec/support/json/annotation_remove.json +9 -0
- data/spec/support/json/annotation_replies_create.json +9 -0
- data/spec/support/json/annotation_replies_get.json +25 -0
- data/spec/support/json/comparison_changes.json +46 -0
- data/spec/support/json/comparison_compare.json +8 -0
- data/spec/support/json/comparison_document.json +10 -0
- data/spec/support/json/datasource_add.json +8 -0
- data/spec/support/json/datasource_get.json +22 -0
- data/spec/support/json/datasource_remove.json +8 -0
- data/spec/support/json/datasource_update.json +8 -0
- data/spec/support/json/document_access_info_get.json +14 -0
- data/spec/support/json/document_convert.json +8 -0
- data/spec/support/json/document_datasource.json +10 -0
- data/spec/support/json/document_fields.json +34 -0
- data/spec/support/json/document_formats.json +8 -0
- data/spec/support/json/document_metadata.json +15 -0
- data/spec/support/json/document_questionnaire_create.json +9 -0
- data/spec/support/json/document_questionnaires.json +23 -0
- data/spec/support/json/document_sharers_remove.json +8 -0
- data/spec/support/json/document_sharers_set.json +16 -0
- data/spec/support/json/document_views.json +32 -0
- data/spec/support/json/file_compress.json +8 -0
- data/spec/support/json/file_copy.json +14 -0
- data/spec/support/json/file_delete.json +5 -0
- data/spec/support/json/file_move.json +14 -0
- data/spec/support/json/file_upload.json +8 -0
- data/spec/support/json/folder_create.json +8 -0
- data/spec/support/json/folder_delete.json +5 -0
- data/spec/support/json/folder_list.json +21 -0
- data/spec/support/json/folder_move.json +8 -0
- data/spec/support/json/folder_sharers_get.json +16 -0
- data/spec/support/json/folder_sharers_remove.json +8 -0
- data/spec/support/json/folder_sharers_set.json +16 -0
- data/spec/support/json/job_add_url.json +8 -0
- data/spec/support/json/job_create.json +8 -0
- data/spec/support/json/job_documents.json +39 -0
- data/spec/support/json/job_file_add.json +8 -0
- data/spec/support/json/job_update.json +7 -0
- data/spec/support/json/jobs_get.json +52 -0
- data/spec/support/json/package_create.json +7 -0
- data/spec/support/json/questionnaire_create.json +8 -0
- data/spec/support/json/questionnaire_datasources.json +26 -0
- data/spec/support/json/questionnaire_execution_create.json +9 -0
- data/spec/support/json/questionnaire_execution_status_set.json +8 -0
- data/spec/support/json/questionnaire_execution_update.json +8 -0
- data/spec/support/json/questionnaire_executions.json +24 -0
- data/spec/support/json/questionnaire_get.json +14 -0
- data/spec/support/json/questionnaire_remove.json +8 -0
- data/spec/support/json/questionnaire_update.json +8 -0
- data/spec/support/json/questionnaires_get.json +22 -0
- data/spec/support/json/storage_info.json +10 -0
- data/spec/support/shared_examples/api/entity.rb +37 -0
- data/spec/support/shared_examples/api/helpers/status_helper.rb +12 -0
- data/spec/support/shared_examples/api/sugar/lookup.rb +57 -0
- metadata +356 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe GroupDocs::Job do
|
|
4
|
+
|
|
5
|
+
it_behaves_like GroupDocs::Api::Entity
|
|
6
|
+
include_examples GroupDocs::Api::Helpers::Status
|
|
7
|
+
|
|
8
|
+
describe '.all!' do
|
|
9
|
+
before(:each) do
|
|
10
|
+
mock_api_server(load_json('jobs_get'))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'accepts access credentials hash' do
|
|
14
|
+
lambda do
|
|
15
|
+
described_class.all!({}, client_id: 'client_id', private_key: 'private_key')
|
|
16
|
+
end.should_not raise_error(ArgumentError)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'accepts options hash' do
|
|
20
|
+
lambda do
|
|
21
|
+
described_class.all!(page: 1, count: 2)
|
|
22
|
+
end.should_not raise_error(ArgumentError)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'returns an array of GroupDocs::Job objects' do
|
|
26
|
+
jobs = described_class.all!
|
|
27
|
+
jobs.should be_an(Array)
|
|
28
|
+
jobs.each do |job|
|
|
29
|
+
job.should be_a(GroupDocs::Job)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe '.create!' do
|
|
35
|
+
before(:each) do
|
|
36
|
+
mock_api_server(load_json('job_create'))
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
let(:actions) { %w(convert compress_zip) }
|
|
40
|
+
|
|
41
|
+
it 'accepts access credentials hash' do
|
|
42
|
+
lambda do
|
|
43
|
+
described_class.create!({ actions: %w(convert) }, client_id: 'client_id', private_key: 'private_key')
|
|
44
|
+
end.should_not raise_error(ArgumentError)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'raises error if actions are passed' do
|
|
48
|
+
-> { described_class.create!({}) }.should raise_error(ArgumentError)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'convert actions to byte flag' do
|
|
52
|
+
described_class.should_receive(:convert_actions).with(actions).and_return(5)
|
|
53
|
+
described_class.create!(actions: actions)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'converts array of out formats to string' do
|
|
57
|
+
formats = %w(pdf txt)
|
|
58
|
+
formats.should_receive(:join).with(?;)
|
|
59
|
+
described_class.create!(actions: actions, out_formats: formats)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it 'returns GroupDocs::Job object' do
|
|
63
|
+
described_class.create!(actions: actions).should be_a(GroupDocs::Job)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it { should respond_to(:id) }
|
|
68
|
+
it { should respond_to(:id=) }
|
|
69
|
+
it { should respond_to(:documents) }
|
|
70
|
+
it { should respond_to(:documents=) }
|
|
71
|
+
|
|
72
|
+
describe '#documents=' do
|
|
73
|
+
let(:response) do
|
|
74
|
+
[{ id: 1, guid: 'fhy9yh94u238dgf', status: 0, outputs: [] },
|
|
75
|
+
{ id: 2, guid: 'ofh9rhy9rfohf9s', status: 2, outputs: [] }]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'saves documents as array of GroupDocs::Document objects' do
|
|
79
|
+
subject.documents = response
|
|
80
|
+
documents = subject.documents
|
|
81
|
+
documents.should be_an(Array)
|
|
82
|
+
documents.each do |document|
|
|
83
|
+
document.should be_a(GroupDocs::Document)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
describe '#documents!' do
|
|
89
|
+
before(:each) do
|
|
90
|
+
mock_api_server(load_json('job_documents'))
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'accepts access credentials hash' do
|
|
94
|
+
lambda do
|
|
95
|
+
subject.documents!(client_id: 'client_id', private_key: 'private_key')
|
|
96
|
+
end.should_not raise_error(ArgumentError)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it 'returns array of GroupDocs::Document objects' do
|
|
100
|
+
documents = subject.documents!
|
|
101
|
+
documents.should be_an(Array)
|
|
102
|
+
documents.each do |document|
|
|
103
|
+
document.should be_a(GroupDocs::Document)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe '#add_document!' do
|
|
109
|
+
before(:each) do
|
|
110
|
+
mock_api_server(load_json('job_file_add'))
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
let(:document) do
|
|
114
|
+
GroupDocs::Document.new(file: GroupDocs::Storage::File.new)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it 'accepts access credentials hash' do
|
|
118
|
+
lambda do
|
|
119
|
+
subject.add_document!(document, {}, client_id: 'client_id', private_key: 'private_key')
|
|
120
|
+
end.should_not raise_error(ArgumentError)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it 'accepts options hash' do
|
|
124
|
+
lambda do
|
|
125
|
+
subject.add_document!(document, output_formats: %w(pdf txt))
|
|
126
|
+
end.should_not raise_error(ArgumentError)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'raises error if document is not an instance of GroupDocs::Document' do
|
|
130
|
+
-> { subject.add_document!('Document') }.should raise_error(ArgumentError)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it 'returns document ID' do
|
|
134
|
+
subject.add_document!(document).should be_an(Integer)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe '#add_datasource!' do
|
|
139
|
+
let(:document) do
|
|
140
|
+
GroupDocs::Document.new(file: GroupDocs::Storage::File.new)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
let(:datasource) do
|
|
144
|
+
GroupDocs::DataSource.new
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it 'accepts access credentials hash' do
|
|
148
|
+
lambda do
|
|
149
|
+
subject.add_datasource!(document, datasource, client_id: 'client_id', private_key: 'private_key')
|
|
150
|
+
end.should_not raise_error(ArgumentError)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it 'raises error if document is not an instance of GroupDocs::Document' do
|
|
154
|
+
-> { subject.add_datasource!('Document') }.should raise_error(ArgumentError)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it 'raises error if datasource is not an instance of GroupDocs::DataSource' do
|
|
158
|
+
-> { subject.add_datasource!(document, 'DataSource') }.should raise_error(ArgumentError)
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
describe '#add_url!' do
|
|
163
|
+
before(:each) do
|
|
164
|
+
mock_api_server(load_json('job_add_url'))
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
let(:url) { 'http://www.google.com' }
|
|
168
|
+
|
|
169
|
+
it 'accepts access credentials hash' do
|
|
170
|
+
lambda do
|
|
171
|
+
subject.add_url!(url, {}, client_id: 'client_id', private_key: 'private_key')
|
|
172
|
+
end.should_not raise_error(ArgumentError)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it 'accepts options hash' do
|
|
176
|
+
lambda do
|
|
177
|
+
subject.add_url!(url, out_formats: %W(pdf txt))
|
|
178
|
+
end.should_not raise_error(ArgumentError)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it 'returns document ID' do
|
|
182
|
+
subject.add_url!(url).should be_an(Integer)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
describe '#update!' do
|
|
187
|
+
before(:each) do
|
|
188
|
+
mock_api_server(load_json('job_update'))
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it 'parses status' do
|
|
192
|
+
subject.should_receive(:parse_status).with(:draft).and_return(-1)
|
|
193
|
+
subject.update!(status: :draft)
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe GroupDocs::Questionnaire::Execution do
|
|
4
|
+
|
|
5
|
+
it_behaves_like GroupDocs::Api::Entity
|
|
6
|
+
|
|
7
|
+
describe 'STATUSES' do
|
|
8
|
+
it 'contains hash of execution statuses' do
|
|
9
|
+
described_class::STATUSES.should == {
|
|
10
|
+
draft: 0,
|
|
11
|
+
submitted: 1,
|
|
12
|
+
executed: 2,
|
|
13
|
+
approved: 3,
|
|
14
|
+
rejected: 4,
|
|
15
|
+
closed: 5,
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe '.all!' do
|
|
21
|
+
it 'accepts access credentials hash' do
|
|
22
|
+
lambda do
|
|
23
|
+
described_class.all!(client_id: 'client_id', private_key: 'private_key')
|
|
24
|
+
end.should_not raise_error(ArgumentError)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'just calls GroupDocs::Questionnaire.executions! method' do
|
|
28
|
+
GroupDocs::Questionnaire.should_receive(:executions!).with({})
|
|
29
|
+
described_class.all!
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it { should respond_to(:id) }
|
|
34
|
+
it { should respond_to(:id=) }
|
|
35
|
+
it { should respond_to(:ownerId) }
|
|
36
|
+
it { should respond_to(:ownerId=) }
|
|
37
|
+
it { should respond_to(:questionnaireId) }
|
|
38
|
+
it { should respond_to(:questionnaireId=) }
|
|
39
|
+
it { should respond_to(:executiveId) }
|
|
40
|
+
it { should respond_to(:executiveId=) }
|
|
41
|
+
it { should respond_to(:approverId) }
|
|
42
|
+
it { should respond_to(:approverId=) }
|
|
43
|
+
it { should respond_to(:datasourceId) }
|
|
44
|
+
it { should respond_to(:datasourceId=) }
|
|
45
|
+
it { should respond_to(:documentId) }
|
|
46
|
+
it { should respond_to(:documentId=) }
|
|
47
|
+
it { should respond_to(:status) }
|
|
48
|
+
it { should respond_to(:status=) }
|
|
49
|
+
it { should respond_to(:guid) }
|
|
50
|
+
it { should respond_to(:guid=) }
|
|
51
|
+
|
|
52
|
+
it 'has human-readable accessors' do
|
|
53
|
+
subject.should respond_to(:owner_id)
|
|
54
|
+
subject.should respond_to(:owner_id=)
|
|
55
|
+
subject.should respond_to(:questionnaire_id)
|
|
56
|
+
subject.should respond_to(:questionnaire_id=)
|
|
57
|
+
subject.should respond_to(:executive_id)
|
|
58
|
+
subject.should respond_to(:executive_id=)
|
|
59
|
+
subject.should respond_to(:approver_id)
|
|
60
|
+
subject.should respond_to(:approver_id=)
|
|
61
|
+
subject.should respond_to(:datasource_id)
|
|
62
|
+
subject.should respond_to(:datasource_id=)
|
|
63
|
+
subject.should respond_to(:document_id)
|
|
64
|
+
subject.should respond_to(:document_id=)
|
|
65
|
+
subject.method(:owner_id).should == subject.method(:ownerId)
|
|
66
|
+
subject.method(:owner_id=).should == subject.method(:ownerId=)
|
|
67
|
+
subject.method(:questionnaire_id).should == subject.method(:questionnaireId)
|
|
68
|
+
subject.method(:questionnaire_id=).should == subject.method(:questionnaireId=)
|
|
69
|
+
subject.method(:executive_id).should == subject.method(:executiveId)
|
|
70
|
+
subject.method(:executive_id=).should == subject.method(:executiveId=)
|
|
71
|
+
subject.method(:approver_id).should == subject.method(:approverId)
|
|
72
|
+
subject.method(:approver_id=).should == subject.method(:approverId=)
|
|
73
|
+
subject.method(:datasource_id).should == subject.method(:datasourceId)
|
|
74
|
+
subject.method(:datasource_id=).should == subject.method(:datasourceId=)
|
|
75
|
+
subject.method(:document_id).should == subject.method(:documentId)
|
|
76
|
+
subject.method(:document_id=).should == subject.method(:documentId=)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe '#status=' do
|
|
80
|
+
it 'saves status in machine readable format if symbol is passed' do
|
|
81
|
+
subject.status = :executed
|
|
82
|
+
subject.instance_variable_get(:@status).should == 2
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it 'does nothing if parameter is not symbol' do
|
|
86
|
+
subject.status = 2
|
|
87
|
+
subject.instance_variable_get(:@status).should == 2
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'raises error if status is unknown' do
|
|
91
|
+
-> { subject.status = :unknown }.should raise_error(ArgumentError)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
describe '#status' do
|
|
96
|
+
it 'returns status in human-readable format' do
|
|
97
|
+
subject.status = 2
|
|
98
|
+
subject.status.should == :executed
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
describe '#set_status!' do
|
|
103
|
+
before(:each) do
|
|
104
|
+
mock_api_server(load_json('questionnaire_execution_status_set'))
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'accepts access credentials hash' do
|
|
108
|
+
lambda do
|
|
109
|
+
subject.set_status!(:submitted, client_id: 'client_id', private_key: 'private_key')
|
|
110
|
+
end.should_not raise_error(ArgumentError)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it 'updates status of execution object' do
|
|
114
|
+
lambda do
|
|
115
|
+
subject.set_status!(:submitted)
|
|
116
|
+
end.should change(subject, :status).to(:submitted)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe '#update!' do
|
|
121
|
+
before(:each) do
|
|
122
|
+
mock_api_server(load_json('questionnaire_execution_update'))
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it 'accepts access credentials hash' do
|
|
126
|
+
lambda do
|
|
127
|
+
subject.update!(client_id: 'client_id', private_key: 'private_key')
|
|
128
|
+
end.should_not raise_error(ArgumentError)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it 'uses hashed version of self as request body' do
|
|
132
|
+
subject.should_receive(:to_hash).and_return({})
|
|
133
|
+
subject.update!
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe GroupDocs::Questionnaire::Page do
|
|
4
|
+
|
|
5
|
+
it_behaves_like GroupDocs::Api::Entity
|
|
6
|
+
|
|
7
|
+
it { should respond_to(:questions) }
|
|
8
|
+
it { should respond_to(:questions=) }
|
|
9
|
+
it { should respond_to(:number) }
|
|
10
|
+
it { should respond_to(:number=) }
|
|
11
|
+
it { should respond_to(:title) }
|
|
12
|
+
it { should respond_to(:title=) }
|
|
13
|
+
|
|
14
|
+
describe '#questions=' do
|
|
15
|
+
it 'converts each question to GroupDocs::Questionnaire::Question object if hash is passed' do
|
|
16
|
+
subject.questions = [{ field: 'Field1', text: 'Text1', def_answer: 'A1' }]
|
|
17
|
+
questions = subject.questions
|
|
18
|
+
questions.should be_an(Array)
|
|
19
|
+
questions.each do |question|
|
|
20
|
+
question.should be_a(GroupDocs::Questionnaire::Question)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'saves each question if it is GroupDocs::Questionnaire::Question object' do
|
|
25
|
+
question1 = GroupDocs::Questionnaire::Question.new(field: 'field1')
|
|
26
|
+
question2 = GroupDocs::Questionnaire::Question.new(field: 'field2')
|
|
27
|
+
subject.questions = [question1, question2]
|
|
28
|
+
subject.questions.should include(question1)
|
|
29
|
+
subject.questions.should include(question2)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'does nothing if nil is passed' do
|
|
33
|
+
lambda do
|
|
34
|
+
subject.questions = nil
|
|
35
|
+
end.should_not change(subject, :questions)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe '#add_question' do
|
|
40
|
+
it 'raises error if question is not GroupDocs::Questionnaire::Page object' do
|
|
41
|
+
-> { subject.add_question('Page') }.should raise_error(ArgumentError)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'saves question' do
|
|
45
|
+
question = GroupDocs::Questionnaire::Question.new
|
|
46
|
+
subject.add_question(question)
|
|
47
|
+
subject.questions.should == [question]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe GroupDocs::Questionnaire::Question::Answer do
|
|
4
|
+
|
|
5
|
+
it_behaves_like GroupDocs::Api::Entity
|
|
6
|
+
|
|
7
|
+
it { should respond_to(:text) }
|
|
8
|
+
it { should respond_to(:text=) }
|
|
9
|
+
it { should respond_to(:value) }
|
|
10
|
+
it { should respond_to(:value=) }
|
|
11
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe GroupDocs::Questionnaire::Question do
|
|
4
|
+
|
|
5
|
+
it_behaves_like GroupDocs::Api::Entity
|
|
6
|
+
|
|
7
|
+
describe 'TYPES' do
|
|
8
|
+
it 'contains hash of field types' do
|
|
9
|
+
described_class::TYPES.should == {
|
|
10
|
+
simple: 0,
|
|
11
|
+
multiple_choice: 1,
|
|
12
|
+
}
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it { should respond_to(:field) }
|
|
17
|
+
it { should respond_to(:field=) }
|
|
18
|
+
it { should respond_to(:text) }
|
|
19
|
+
it { should respond_to(:text=) }
|
|
20
|
+
it { should respond_to(:def_answer) }
|
|
21
|
+
it { should respond_to(:def_answer=) }
|
|
22
|
+
it { should respond_to(:required) }
|
|
23
|
+
it { should respond_to(:required=) }
|
|
24
|
+
it { should respond_to(:type) }
|
|
25
|
+
it { should respond_to(:type=) }
|
|
26
|
+
it { should respond_to(:answers) }
|
|
27
|
+
it { should respond_to(:answers=) }
|
|
28
|
+
|
|
29
|
+
describe '#answers=' do
|
|
30
|
+
it 'converts each answer to GroupDocs::Questionnaire::Question::Answer object' do
|
|
31
|
+
subject.answers = [{ text: 'Text1', value: 'Value1' }, { text: 'Text2', value: 'Value2' }]
|
|
32
|
+
answers = subject.answers
|
|
33
|
+
answers.should be_an(Array)
|
|
34
|
+
answers.each do |answer|
|
|
35
|
+
answer.should be_a(GroupDocs::Questionnaire::Question::Answer)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'saves each answer if it is GroupDocs::Questionnaire::Question::Answer object' do
|
|
40
|
+
answer1 = GroupDocs::Questionnaire::Question::Answer.new(text: 'text1')
|
|
41
|
+
answer2 = GroupDocs::Questionnaire::Question::Answer.new(text: 'text2')
|
|
42
|
+
subject.answers = [answer1, answer2]
|
|
43
|
+
subject.answers.should include(answer1)
|
|
44
|
+
subject.answers.should include(answer2)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it 'does nothing if nil is passed' do
|
|
48
|
+
lambda do
|
|
49
|
+
subject.answers = nil
|
|
50
|
+
end.should_not change(subject, :answers)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe '#add_answer' do
|
|
55
|
+
it 'raises error if answer is not GroupDocs::Questionnaire::Question::Answer object' do
|
|
56
|
+
-> { subject.add_answer('Answer') }.should raise_error(ArgumentError)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'saves answer' do
|
|
60
|
+
answer = GroupDocs::Questionnaire::Question::Answer.new(text: 'Text', value: 'Value')
|
|
61
|
+
subject.add_answer(answer)
|
|
62
|
+
subject.answers.should == [answer]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe '#type=' do
|
|
67
|
+
it 'saves type in machine readable format if symbol is passed' do
|
|
68
|
+
subject.type = :multiple_choice
|
|
69
|
+
subject.instance_variable_get(:@type).should == 1
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'does nothing if parameter is not symbol' do
|
|
73
|
+
subject.type = 1
|
|
74
|
+
subject.instance_variable_get(:@type).should == 1
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
describe '#type' do
|
|
79
|
+
it 'returns type in human-readable format' do
|
|
80
|
+
subject.type = 1
|
|
81
|
+
subject.type.should == :multiple_choice
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|