abbyy-cloud 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +7 -13
- data/.travis.yml +1 -1
- data/CHANGELOG.md +11 -0
- data/README.md +29 -0
- data/abbyy-cloud.gemspec +4 -2
- data/lib/abbyy/cloud.rb +14 -26
- data/lib/abbyy/cloud/connection.rb +3 -10
- data/lib/abbyy/cloud/exceptions/response_error.rb +1 -1
- data/lib/abbyy/cloud/models/cost_type.rb +14 -0
- data/lib/abbyy/cloud/models/currency.rb +14 -0
- data/lib/abbyy/cloud/models/direction.rb +0 -1
- data/lib/abbyy/cloud/models/discount.rb +2 -1
- data/lib/abbyy/cloud/models/discount_type.rb +19 -0
- data/lib/abbyy/cloud/models/engine.rb +0 -2
- data/lib/abbyy/cloud/models/error.rb +0 -1
- data/lib/abbyy/cloud/models/file_format.rb +19 -0
- data/lib/abbyy/cloud/models/file_info.rb +33 -0
- data/lib/abbyy/cloud/models/file_link.rb +18 -0
- data/lib/abbyy/cloud/models/file_read_error.rb +20 -0
- data/lib/abbyy/cloud/models/file_read_status.rb +14 -0
- data/lib/abbyy/cloud/models/file_reference.rb +11 -0
- data/lib/abbyy/cloud/models/full_order.rb +46 -0
- data/lib/abbyy/cloud/models/label.rb +14 -0
- data/lib/abbyy/cloud/models/ocr_mode.rb +19 -0
- data/lib/abbyy/cloud/models/ocr_quality.rb +18 -0
- data/lib/abbyy/cloud/models/ocr_settings.rb +16 -0
- data/lib/abbyy/cloud/models/ocr_statistics.rb +13 -0
- data/lib/abbyy/cloud/models/ocr_warning.rb +16 -0
- data/lib/abbyy/cloud/models/ocr_warning_type.rb +29 -0
- data/lib/abbyy/cloud/models/order_statistics.rb +15 -0
- data/lib/abbyy/cloud/models/payment_type.rb +14 -0
- data/lib/abbyy/cloud/models/price.rb +1 -1
- data/lib/abbyy/cloud/models/reading_status.rb +20 -0
- data/lib/abbyy/cloud/models/source_segment.rb +0 -1
- data/lib/abbyy/cloud/models/source_tag.rb +0 -1
- data/lib/abbyy/cloud/models/status.rb +25 -0
- data/lib/abbyy/cloud/models/text_statistics.rb +15 -0
- data/lib/abbyy/cloud/models/transfer_data.rb +0 -3
- data/lib/abbyy/cloud/models/translation.rb +0 -2
- data/lib/abbyy/cloud/models/translation_link.rb +18 -0
- data/lib/abbyy/cloud/models/translation_segment.rb +0 -1
- data/lib/abbyy/cloud/models/translation_type.rb +14 -0
- data/lib/abbyy/cloud/models/unit_price.rb +3 -0
- data/lib/abbyy/cloud/models/unit_type.rb +14 -0
- data/lib/abbyy/cloud/namespaces/files.rb +19 -0
- data/lib/abbyy/cloud/namespaces/orders.rb +17 -0
- data/lib/abbyy/cloud/namespaces/prices.rb +1 -1
- data/lib/abbyy/cloud/operations/base.rb +56 -19
- data/lib/abbyy/cloud/operations/download_file.rb +12 -0
- data/lib/abbyy/cloud/operations/engines.rb +1 -1
- data/lib/abbyy/cloud/operations/find_order.rb +13 -0
- data/lib/abbyy/cloud/operations/prices.rb +1 -1
- data/lib/abbyy/cloud/operations/submit_order.rb +32 -0
- data/lib/abbyy/cloud/operations/translate.rb +1 -1
- data/lib/abbyy/cloud/operations/translate_segments.rb +1 -1
- data/lib/abbyy/cloud/operations/upload_file.rb +22 -0
- data/lib/abbyy/cloud/types.rb +8 -17
- data/spec/feature/abbyy/files_download_spec.rb +57 -0
- data/spec/feature/abbyy/files_upload_spec.rb +129 -0
- data/spec/feature/abbyy/orders_create_spec.rb +245 -0
- data/spec/feature/abbyy/orders_find_spec.rb +116 -0
- data/spec/{abbyy → unit/abbyy}/cloud/connection_spec.rb +1 -1
- data/spec/{abbyy → unit/abbyy}/cloud/models/direction_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/discount_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/engine_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/error_spec.rb +0 -0
- data/spec/unit/abbyy/cloud/models/file_link_spec.rb +51 -0
- data/spec/unit/abbyy/cloud/models/file_reference_spec.rb +24 -0
- data/spec/unit/abbyy/cloud/models/full_order_spec.rb +192 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/locale_spec.rb +0 -0
- data/spec/unit/abbyy/cloud/models/order_statistics_spec.rb +15 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/price_spec.rb +0 -8
- data/spec/{abbyy → unit/abbyy}/cloud/models/source_segment_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/source_tag_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/transfer_data_spec.rb +0 -0
- data/spec/unit/abbyy/cloud/models/translation_link_spec.rb +66 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/translation_segment_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/translation_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/models/unit_price_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/response_error_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud/settings_spec.rb +0 -0
- data/spec/{abbyy → unit/abbyy}/cloud_spec.rb +0 -0
- metadata +114 -37
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
RSpec.describe "orders.create" do
|
|
2
|
+
let(:client) { ABBYY::Cloud.new settings }
|
|
3
|
+
let(:settings) { { id: "foo", token: "bar" } }
|
|
4
|
+
let(:path) { "https://api.abbyy.cloud/v0/order" }
|
|
5
|
+
|
|
6
|
+
let(:request) do
|
|
7
|
+
{
|
|
8
|
+
type: "ht_professional",
|
|
9
|
+
email: "user@example.com",
|
|
10
|
+
contact_culture: "ru",
|
|
11
|
+
contact_utc_offset: "+04:00Z",
|
|
12
|
+
label: "baz",
|
|
13
|
+
mt_engine: "Bing",
|
|
14
|
+
approval_required: true,
|
|
15
|
+
is_manual_estimation: true,
|
|
16
|
+
cost_type: "SomeDiscounts",
|
|
17
|
+
unit_type: "Words",
|
|
18
|
+
currency: "RUB",
|
|
19
|
+
from: "ru",
|
|
20
|
+
to: ["de"],
|
|
21
|
+
files: [{ id: "foo", token: "bar" }]
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
let(:response) do
|
|
26
|
+
{
|
|
27
|
+
translations: [
|
|
28
|
+
{
|
|
29
|
+
source_file: {
|
|
30
|
+
id: "foo",
|
|
31
|
+
token: "bar",
|
|
32
|
+
name: "ru.xml",
|
|
33
|
+
language: "ru",
|
|
34
|
+
chars_count: 107,
|
|
35
|
+
words_count: 32,
|
|
36
|
+
pages_count: 1,
|
|
37
|
+
is_deleted: false
|
|
38
|
+
},
|
|
39
|
+
target_file: {
|
|
40
|
+
id: "rab",
|
|
41
|
+
token: "oof",
|
|
42
|
+
name: "de.xml",
|
|
43
|
+
language: "de",
|
|
44
|
+
chars_count: 87,
|
|
45
|
+
words_count: 22,
|
|
46
|
+
pages_count: 1,
|
|
47
|
+
is_deleted: false
|
|
48
|
+
},
|
|
49
|
+
started: "2016-03-13T10:00:00Z",
|
|
50
|
+
delivered: "2019-03-14T11:00:00Z",
|
|
51
|
+
progress: 10,
|
|
52
|
+
status: "InProgress"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
id: "qux",
|
|
56
|
+
number: 1924,
|
|
57
|
+
email: "user@example.com",
|
|
58
|
+
type: "ht_professional",
|
|
59
|
+
from: "ru",
|
|
60
|
+
to: ["de"],
|
|
61
|
+
is_layout_required: true,
|
|
62
|
+
label: "baz",
|
|
63
|
+
payment_type: "External",
|
|
64
|
+
unit_type: "Words",
|
|
65
|
+
unit_count: 32,
|
|
66
|
+
units_count: 32,
|
|
67
|
+
currency: "RUB",
|
|
68
|
+
amount: 100.0,
|
|
69
|
+
deadline: "2019-01-23T10:00:00Z",
|
|
70
|
+
payment_provider: "CloudPayments",
|
|
71
|
+
is_manual_estimation: true,
|
|
72
|
+
created: "2019-02-10T12:00:00Z",
|
|
73
|
+
started: "2016-03-13T10:00:00Z",
|
|
74
|
+
delivered: "2019-03-14T11:00:00Z",
|
|
75
|
+
progress: 10,
|
|
76
|
+
status: "InProgress",
|
|
77
|
+
approval_required: true,
|
|
78
|
+
deleted: nil,
|
|
79
|
+
is_deleted: false,
|
|
80
|
+
statistics: {
|
|
81
|
+
documents_count: 1,
|
|
82
|
+
pages_count: 1,
|
|
83
|
+
words_count: 32,
|
|
84
|
+
chars_count: 103
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
before do
|
|
90
|
+
stub_request(:post, path)
|
|
91
|
+
.with(basic_auth: %w(foo bar))
|
|
92
|
+
.to_return status: 200,
|
|
93
|
+
headers: { "Content-Type" => "application/json" },
|
|
94
|
+
body: JSON(response)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
subject { client.orders.create request }
|
|
98
|
+
|
|
99
|
+
context "with valid params" do
|
|
100
|
+
it "sends a request to ABBYY Cloud API" do
|
|
101
|
+
subject
|
|
102
|
+
expect(a_request(:post, path)).to have_been_made
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "returns full order data" do
|
|
106
|
+
expect(subject).to be_kind_of ABBYY::Cloud::Models::FullOrder
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context "without type:" do
|
|
111
|
+
before { request.delete :type }
|
|
112
|
+
|
|
113
|
+
it "raises ArgumentError without sending a request" do
|
|
114
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
115
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
context "without cost_type:" do
|
|
120
|
+
before { request.delete :cost_type }
|
|
121
|
+
|
|
122
|
+
it "raises ArgumentError without sending a request" do
|
|
123
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
124
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
context "without unit_type:" do
|
|
129
|
+
before { request.delete :unit_type }
|
|
130
|
+
|
|
131
|
+
it "raises ArgumentError without sending a request" do
|
|
132
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
133
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
context "without currency:" do
|
|
138
|
+
before { request.delete :currency }
|
|
139
|
+
|
|
140
|
+
it "raises ArgumentError without sending a request" do
|
|
141
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
142
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
context "without source language:" do
|
|
147
|
+
before { request.delete :from }
|
|
148
|
+
|
|
149
|
+
it "raises ArgumentError without sending a request" do
|
|
150
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
151
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
context "when label is too long:" do
|
|
156
|
+
before { request[:label] = "a" * 81 }
|
|
157
|
+
|
|
158
|
+
it "raises ArgumentError without sending a request" do
|
|
159
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
160
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
context "without target language:" do
|
|
165
|
+
before { request[:to] = [] }
|
|
166
|
+
|
|
167
|
+
it "raises ArgumentError without sending a request" do
|
|
168
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
169
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
context "with wrong translation type:" do
|
|
174
|
+
before { request[:type] = "unknown" }
|
|
175
|
+
|
|
176
|
+
it "raises ArgumentError without sending a request" do
|
|
177
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
178
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
context "with wrong cost type:" do
|
|
183
|
+
before { request[:cost_type] = "Unknown" }
|
|
184
|
+
|
|
185
|
+
it "raises ArgumentError without sending a request" do
|
|
186
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
187
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
context "with wrong unit type:" do
|
|
192
|
+
before { request[:unit_type] = "Unknown" }
|
|
193
|
+
|
|
194
|
+
it "raises ArgumentError without sending a request" do
|
|
195
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
196
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
context "without files:" do
|
|
201
|
+
before { request[:files] = [] }
|
|
202
|
+
|
|
203
|
+
it "raises ArgumentError without sending a request" do
|
|
204
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
205
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
context "with wrong file:" do
|
|
210
|
+
before { request[:files] = [{ foo: "bar" }] }
|
|
211
|
+
|
|
212
|
+
it "raises ArgumentError without sending a request" do
|
|
213
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ArgumentError)
|
|
214
|
+
expect(a_request(:any, //)).not_to have_been_made
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
context "when API returned invalid order:" do
|
|
219
|
+
before do
|
|
220
|
+
stub_request(:post, path)
|
|
221
|
+
.with(basic_auth: %w(foo bar))
|
|
222
|
+
.to_return status: 200,
|
|
223
|
+
headers: { "Content-Type" => "application/json" },
|
|
224
|
+
body: JSON(response.update(currency: nil))
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
it "raises TypeError" do
|
|
228
|
+
expect { subject }.to raise_error(ABBYY::Cloud::TypeError)
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
context "when API responded with error:" do
|
|
233
|
+
before do
|
|
234
|
+
stub_request(:post, path)
|
|
235
|
+
.with(basic_auth: %w(foo bar))
|
|
236
|
+
.to_return status: 500,
|
|
237
|
+
headers: { "Content-Type" => "application/json" },
|
|
238
|
+
body: "Server error"
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
it "raises ResponseError" do
|
|
242
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ResponseError)
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
RSpec.describe "orders.find" do
|
|
2
|
+
let(:client) { ABBYY::Cloud.new id: "foo", token: "bar" }
|
|
3
|
+
let(:path) { "https://api.abbyy.cloud/v0/order/45" }
|
|
4
|
+
let(:response) do
|
|
5
|
+
{
|
|
6
|
+
translations: [
|
|
7
|
+
{
|
|
8
|
+
source_file: {
|
|
9
|
+
id: "foo",
|
|
10
|
+
token: "bar",
|
|
11
|
+
name: "ru.xml",
|
|
12
|
+
language: "ru",
|
|
13
|
+
chars_count: 107,
|
|
14
|
+
words_count: 32,
|
|
15
|
+
pages_count: 1,
|
|
16
|
+
is_deleted: false
|
|
17
|
+
},
|
|
18
|
+
target_file: {
|
|
19
|
+
id: "rab",
|
|
20
|
+
token: "oof",
|
|
21
|
+
name: "de.xml",
|
|
22
|
+
language: "de",
|
|
23
|
+
chars_count: 87,
|
|
24
|
+
words_count: 22,
|
|
25
|
+
pages_count: 1,
|
|
26
|
+
is_deleted: false
|
|
27
|
+
},
|
|
28
|
+
started: "2016-03-13T10:00:00Z",
|
|
29
|
+
delivered: "2019-03-14T11:00:00Z",
|
|
30
|
+
progress: 10,
|
|
31
|
+
status: "InProgress"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
id: "qux",
|
|
35
|
+
number: 1924,
|
|
36
|
+
email: "user@example.com",
|
|
37
|
+
type: "ht_professional",
|
|
38
|
+
from: "ru",
|
|
39
|
+
to: ["de"],
|
|
40
|
+
is_layout_required: true,
|
|
41
|
+
label: "baz",
|
|
42
|
+
payment_type: "External",
|
|
43
|
+
unit_type: "Words",
|
|
44
|
+
unit_count: 32,
|
|
45
|
+
units_count: 32,
|
|
46
|
+
currency: "RUB",
|
|
47
|
+
amount: 100.0,
|
|
48
|
+
deadline: "2019-01-23T10:00:00Z",
|
|
49
|
+
payment_provider: "CloudPayments",
|
|
50
|
+
is_manual_estimation: true,
|
|
51
|
+
created: "2019-02-10T12:00:00Z",
|
|
52
|
+
started: "2016-03-13T10:00:00Z",
|
|
53
|
+
delivered: "2019-03-14T11:00:00Z",
|
|
54
|
+
progress: 10,
|
|
55
|
+
status: "InProgress",
|
|
56
|
+
approval_required: true,
|
|
57
|
+
deleted: nil,
|
|
58
|
+
is_deleted: false,
|
|
59
|
+
statistics: {
|
|
60
|
+
documents_count: 1,
|
|
61
|
+
pages_count: 1,
|
|
62
|
+
words_count: 32,
|
|
63
|
+
chars_count: 103
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
subject { client.orders.find(45) }
|
|
69
|
+
|
|
70
|
+
context "when API returned valid data:" do
|
|
71
|
+
before do
|
|
72
|
+
stub_request(:get, path)
|
|
73
|
+
.with(basic_auth: %w(foo bar))
|
|
74
|
+
.to_return status: 200,
|
|
75
|
+
headers: { "Content-Type" => "application/json" },
|
|
76
|
+
body: JSON(response)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "sends a request to ABBYY Cloud API" do
|
|
80
|
+
subject
|
|
81
|
+
expect(a_request(:get, path)).to have_been_made
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "returns full order data" do
|
|
85
|
+
expect(subject).to be_kind_of ABBYY::Cloud::Models::FullOrder
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
context "when API returned invalid order:" do
|
|
90
|
+
before do
|
|
91
|
+
stub_request(:get, path)
|
|
92
|
+
.with(basic_auth: %w(foo bar))
|
|
93
|
+
.to_return status: 200,
|
|
94
|
+
headers: { "Content-Type" => "application/json" },
|
|
95
|
+
body: JSON(response.update(currency: nil))
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "raises TypeError" do
|
|
99
|
+
expect { subject }.to raise_error(ABBYY::Cloud::TypeError)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
context "when API responded with error:" do
|
|
104
|
+
before do
|
|
105
|
+
stub_request(:get, path)
|
|
106
|
+
.with(basic_auth: %w(foo bar))
|
|
107
|
+
.to_return status: 500,
|
|
108
|
+
headers: { "Content-Type" => "application/json" },
|
|
109
|
+
body: "Server error"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "raises ResponseError" do
|
|
113
|
+
expect { subject }.to raise_error(ABBYY::Cloud::ResponseError)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
RSpec.describe ABBYY::Cloud::Models::FileLink do
|
|
2
|
+
let(:data) do
|
|
3
|
+
{
|
|
4
|
+
id: "foo",
|
|
5
|
+
token: "bar",
|
|
6
|
+
name: "baz.txt",
|
|
7
|
+
language: "fr",
|
|
8
|
+
is_deleted: true,
|
|
9
|
+
chars_count: 3204,
|
|
10
|
+
words_count: 132,
|
|
11
|
+
pages_count: 3
|
|
12
|
+
}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
subject { described_class.new(data) }
|
|
16
|
+
|
|
17
|
+
it { is_expected.to be_kind_of ABBYY::Cloud::Struct }
|
|
18
|
+
its(:to_h) { is_expected.to eq data }
|
|
19
|
+
|
|
20
|
+
context "without id:" do
|
|
21
|
+
before { data.delete :id }
|
|
22
|
+
|
|
23
|
+
it "fails" do
|
|
24
|
+
expect { subject }.to raise_error(StandardError)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "without token:" do
|
|
29
|
+
before { data.delete :token }
|
|
30
|
+
|
|
31
|
+
it "fails" do
|
|
32
|
+
expect { subject }.to raise_error(StandardError)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "without name:" do
|
|
37
|
+
before { data.delete :name }
|
|
38
|
+
|
|
39
|
+
it "fails" do
|
|
40
|
+
expect { subject }.to raise_error(StandardError)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context "without language:" do
|
|
45
|
+
before { data.delete :language }
|
|
46
|
+
|
|
47
|
+
it "fails" do
|
|
48
|
+
expect { subject }.to raise_error(StandardError)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
RSpec.describe ABBYY::Cloud::Models::FileReference do
|
|
2
|
+
let(:data) { { id: "foo", token: "bar" } }
|
|
3
|
+
|
|
4
|
+
subject { described_class.new(data) }
|
|
5
|
+
|
|
6
|
+
it { is_expected.to be_kind_of ABBYY::Cloud::Struct }
|
|
7
|
+
its(:to_h) { is_expected.to eq data }
|
|
8
|
+
|
|
9
|
+
context "without id:" do
|
|
10
|
+
before { data.delete :id }
|
|
11
|
+
|
|
12
|
+
it "fails" do
|
|
13
|
+
expect { subject }.to raise_error(StandardError)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
context "without token:" do
|
|
18
|
+
before { data.delete :token }
|
|
19
|
+
|
|
20
|
+
it "fails" do
|
|
21
|
+
expect { subject }.to raise_error(StandardError)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|