kintone 0.1.4 → 0.1.5

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.rubocop.yml +11 -1
  4. data/.travis.yml +15 -1
  5. data/Guardfile +2 -2
  6. data/README.md +4 -0
  7. data/kintone.gemspec +3 -5
  8. data/lib/kintone/api.rb +18 -24
  9. data/lib/kintone/api/guest.rb +6 -2
  10. data/lib/kintone/command/accessor.rb +1 -1
  11. data/lib/kintone/command/guests.rb +1 -1
  12. data/lib/kintone/command/record.rb +1 -1
  13. data/lib/kintone/command/records.rb +3 -2
  14. data/lib/kintone/kintone_error.rb +11 -0
  15. data/lib/kintone/query.rb +1 -1
  16. data/lib/kintone/version.rb +1 -1
  17. data/spec/kintone/api/guest_spec.rb +98 -10
  18. data/spec/kintone/api_spec.rb +186 -75
  19. data/spec/kintone/command/apis_spec.rb +70 -8
  20. data/spec/kintone/command/app_acl_spec.rb +21 -6
  21. data/spec/kintone/command/app_spec.rb +22 -2
  22. data/spec/kintone/command/apps_spec.rb +25 -2
  23. data/spec/kintone/command/bulk_request_spec.rb +22 -2
  24. data/spec/kintone/command/field_acl_spec.rb +25 -7
  25. data/spec/kintone/command/file_spec.rb +28 -12
  26. data/spec/kintone/command/form_spec.rb +23 -6
  27. data/spec/kintone/command/guests_spec.rb +44 -4
  28. data/spec/kintone/command/record_acl_spec.rb +27 -8
  29. data/spec/kintone/command/record_spec.rb +77 -10
  30. data/spec/kintone/command/records_spec.rb +157 -15
  31. data/spec/kintone/command/space_body_spec.rb +25 -7
  32. data/spec/kintone/command/space_guests_spec.rb +22 -2
  33. data/spec/kintone/command/space_members_spec.rb +47 -13
  34. data/spec/kintone/command/space_spec.rb +49 -19
  35. data/spec/kintone/command/space_thread_spec.rb +26 -2
  36. data/spec/kintone/command/template_space_spec.rb +37 -20
  37. data/spec/kintone/kintone_error_spec.rb +22 -0
  38. data/spec/spec_helper.rb +3 -0
  39. metadata +17 -27
@@ -15,10 +15,9 @@ describe Kintone::Api do
15
15
  describe '#get_url' do
16
16
  subject { target.get_url(command) }
17
17
 
18
- context '' do
19
- let(:command) { 'path' }
20
- it { is_expected.to eq('/k/v1/path.json') }
21
- end
18
+ let(:command) { 'path' }
19
+
20
+ it { is_expected.to eq('/k/v1/path.json') }
22
21
  end
23
22
 
24
23
  describe '#guest' do
@@ -52,8 +51,11 @@ describe Kintone::Api do
52
51
  query: query,
53
52
  headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }
54
53
  )
55
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
56
- headers: { 'Content-type' => 'application/json' })
54
+ .to_return(
55
+ body: '{"abc":"def"}',
56
+ status: 200,
57
+ headers: { 'Content-type' => 'application/json' }
58
+ )
57
59
  end
58
60
 
59
61
  subject { target.get(path, params) }
@@ -88,6 +90,28 @@ describe Kintone::Api do
88
90
 
89
91
  it { is_expected.to eq 'abc' => 'def' }
90
92
  end
93
+
94
+ context 'fail to request' do
95
+ before(:each) do
96
+ stub_request(
97
+ :get,
98
+ 'https://www.example.com/k/v1/path'
99
+ )
100
+ .with(
101
+ query: query,
102
+ headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }
103
+ )
104
+ .to_return(
105
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
106
+ status: 500
107
+ )
108
+ end
109
+
110
+ let(:params) { {} }
111
+ let(:query) { nil }
112
+
113
+ it { expect { subject }.to raise_error Kintone::KintoneError }
114
+ end
91
115
  end
92
116
 
93
117
  describe '#post' do
@@ -101,10 +125,13 @@ describe Kintone::Api do
101
125
  'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=',
102
126
  'Content-Type' => 'application/json'
103
127
  },
104
- body: "{\"p1\":\"abc\",\"p2\":\"def\"}"
128
+ body: '{"p1":"abc","p2":"def"}'
129
+ )
130
+ .to_return(
131
+ body: '{"abc":"def"}',
132
+ status: 200,
133
+ headers: { 'Content-type' => 'application/json' }
105
134
  )
106
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
107
- headers: { 'Content-type' => 'application/json' })
108
135
  end
109
136
 
110
137
  subject { target.post(path, body) }
@@ -112,6 +139,28 @@ describe Kintone::Api do
112
139
  let(:body) { { 'p1' => 'abc', 'p2' => 'def' } }
113
140
 
114
141
  it { is_expected.to eq 'abc' => 'def' }
142
+
143
+ context 'fail to request' do
144
+ before(:each) do
145
+ stub_request(
146
+ :post,
147
+ 'https://www.example.com/k/v1/path'
148
+ )
149
+ .with(
150
+ headers: {
151
+ 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=',
152
+ 'Content-Type' => 'application/json'
153
+ },
154
+ body: '{"p1":"abc","p2":"def"}'
155
+ )
156
+ .to_return(
157
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
158
+ status: 500
159
+ )
160
+ end
161
+
162
+ it { expect { subject }.to raise_error Kintone::KintoneError }
163
+ end
115
164
  end
116
165
 
117
166
  describe '#put' do
@@ -125,10 +174,13 @@ describe Kintone::Api do
125
174
  'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=',
126
175
  'Content-Type' => 'application/json'
127
176
  },
128
- body: "{\"p1\":\"abc\",\"p2\":\"def\"}"
177
+ body: '{"p1":"abc","p2":"def"}'
178
+ )
179
+ .to_return(
180
+ body: '{"abc":"def"}',
181
+ status: 200,
182
+ headers: { 'Content-type' => 'application/json' }
129
183
  )
130
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
131
- headers: { 'Content-type' => 'application/json' })
132
184
  end
133
185
 
134
186
  subject { target.put(path, body) }
@@ -136,6 +188,28 @@ describe Kintone::Api do
136
188
  let(:body) { { 'p1' => 'abc', 'p2' => 'def' } }
137
189
 
138
190
  it { is_expected.to eq 'abc' => 'def' }
191
+
192
+ context 'fail to request' do
193
+ before(:each) do
194
+ stub_request(
195
+ :put,
196
+ 'https://www.example.com/k/v1/path'
197
+ )
198
+ .with(
199
+ headers: {
200
+ 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=',
201
+ 'Content-Type' => 'application/json'
202
+ },
203
+ body: '{"p1":"abc","p2":"def"}'
204
+ )
205
+ .to_return(
206
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
207
+ status: 500
208
+ )
209
+ end
210
+
211
+ it { expect { subject }.to raise_error Kintone::KintoneError }
212
+ end
139
213
  end
140
214
 
141
215
  describe '#delete' do
@@ -148,8 +222,11 @@ describe Kintone::Api do
148
222
  body: { 'p1' => 'abc', 'p2' => 'def' }.to_json,
149
223
  headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }
150
224
  )
151
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
152
- headers: { 'Content-type' => 'application/json' })
225
+ .to_return(
226
+ body: '{"abc":"def"}',
227
+ status: 200,
228
+ headers: { 'Content-type' => 'application/json' }
229
+ )
153
230
  end
154
231
 
155
232
  subject { target.delete(path, params) }
@@ -157,24 +234,41 @@ describe Kintone::Api do
157
234
  let(:params) { { 'p1' => 'abc', 'p2' => 'def' } }
158
235
 
159
236
  it { is_expected.to eq 'abc' => 'def' }
237
+
238
+ context 'fail to request' do
239
+ before(:each) do
240
+ stub_request(
241
+ :delete,
242
+ 'https://www.example.com/k/v1/path'
243
+ )
244
+ .with(
245
+ body: { 'p1' => 'abc', 'p2' => 'def' }.to_json,
246
+ headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }
247
+ )
248
+ .to_return(
249
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
250
+ status: 500
251
+ )
252
+ end
253
+
254
+ it { expect { subject }.to raise_error Kintone::KintoneError }
255
+ end
160
256
  end
161
257
 
162
258
  describe '#post_file' do
163
259
  before(:each) do
164
260
  stub_request(
165
- :post,
166
- 'https://www.example.com/k/v1/path'
261
+ :post,
262
+ 'https://www.example.com/k/v1/path'
167
263
  )
168
- .with(headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }) do
169
- attachment
170
- end
171
- .to_return(body: "{\"fileKey\":\"abc\"}", status: 200,
172
- headers: { 'Content-type' => 'application/json' })
173
-
174
- expect(Faraday::UploadIO).to receive(:new)
175
- .with(path, content_type, original_filename,
176
- 'Content-Disposition' => 'form-data')
177
- .and_return(attachment)
264
+ .with(headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }) { attachment } # rubocop:disable Metrics/LineLength
265
+ .to_return(
266
+ body: '{"fileKey":"abc"}',
267
+ status: 200,
268
+ headers: { 'Content-type' => 'application/json' }
269
+ )
270
+
271
+ expect(Faraday::UploadIO).to receive(:new).with(path, content_type, original_filename).and_return(attachment) # rubocop:disable Metrics/LineLength
178
272
  end
179
273
 
180
274
  subject { target.post_file(url, path, content_type, original_filename) }
@@ -185,6 +279,22 @@ describe Kintone::Api do
185
279
  let(:original_filename) { 'fileName.txt' }
186
280
 
187
281
  it { is_expected.to eq 'abc' }
282
+
283
+ context 'fail to request' do
284
+ before(:each) do
285
+ stub_request(
286
+ :post,
287
+ 'https://www.example.com/k/v1/path'
288
+ )
289
+ .with(headers: { 'X-Cybozu-Authorization' => 'QWRtaW5pc3RyYXRvcjpjeWJvenU=' }) { attachment } # rubocop:disable Metrics/LineLength
290
+ .to_return(
291
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
292
+ status: 500
293
+ )
294
+ end
295
+
296
+ it { expect { subject }.to raise_error Kintone::KintoneError }
297
+ end
188
298
  end
189
299
 
190
300
  describe '#record' do
@@ -303,15 +413,15 @@ describe Kintone::Api do
303
413
  describe '#get' do
304
414
  before(:each) do
305
415
  stub_request(
306
- :get,
307
- 'https://www.example.com/k/v1/path'
416
+ :get,
417
+ 'https://www.example.com/k/v1/path'
308
418
  )
309
- .with(
310
- query: query,
311
- headers: { 'X-Cybozu-API-Token' => 'token-api' }
312
- )
313
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
314
- headers: { 'Content-type' => 'application/json' })
419
+ .with(query: query, headers: { 'X-Cybozu-API-Token' => 'token-api' })
420
+ .to_return(
421
+ body: '{"abc":"def"}',
422
+ status: 200,
423
+ headers: { 'Content-type' => 'application/json' }
424
+ )
315
425
  end
316
426
 
317
427
  subject { target.get(path, params) }
@@ -330,18 +440,18 @@ describe Kintone::Api do
330
440
  describe '#post' do
331
441
  before(:each) do
332
442
  stub_request(
333
- :post,
334
- 'https://www.example.com/k/v1/path'
443
+ :post,
444
+ 'https://www.example.com/k/v1/path'
335
445
  )
336
- .with(
337
- headers: {
338
- 'X-Cybozu-API-Token' => 'token-api',
339
- 'Content-Type' => 'application/json'
340
- },
341
- body: "{\"p1\":\"abc\",\"p2\":\"def\"}"
342
- )
343
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
344
- headers: { 'Content-type' => 'application/json' })
446
+ .with(
447
+ headers: { 'X-Cybozu-API-Token' => 'token-api', 'Content-Type' => 'application/json' },
448
+ body: '{"p1":"abc","p2":"def"}'
449
+ )
450
+ .to_return(
451
+ body: '{"abc":"def"}',
452
+ status: 200,
453
+ headers: { 'Content-type' => 'application/json' }
454
+ )
345
455
  end
346
456
 
347
457
  subject { target.post(path, body) }
@@ -354,18 +464,18 @@ describe Kintone::Api do
354
464
  describe '#put' do
355
465
  before(:each) do
356
466
  stub_request(
357
- :put,
358
- 'https://www.example.com/k/v1/path'
467
+ :put,
468
+ 'https://www.example.com/k/v1/path'
359
469
  )
360
- .with(
361
- headers: {
362
- 'X-Cybozu-API-Token' => 'token-api',
363
- 'Content-Type' => 'application/json'
364
- },
365
- body: "{\"p1\":\"abc\",\"p2\":\"def\"}"
366
- )
367
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
368
- headers: { 'Content-type' => 'application/json' })
470
+ .with(
471
+ headers: { 'X-Cybozu-API-Token' => 'token-api', 'Content-Type' => 'application/json' },
472
+ body: '{"p1":"abc","p2":"def"}'
473
+ )
474
+ .to_return(
475
+ body: '{"abc":"def"}',
476
+ status: 200,
477
+ headers: { 'Content-type' => 'application/json' }
478
+ )
369
479
  end
370
480
 
371
481
  subject { target.put(path, body) }
@@ -378,15 +488,18 @@ describe Kintone::Api do
378
488
  describe '#delete' do
379
489
  before(:each) do
380
490
  stub_request(
381
- :delete,
382
- 'https://www.example.com/k/v1/path'
491
+ :delete,
492
+ 'https://www.example.com/k/v1/path'
383
493
  )
384
- .with(
385
- body: { 'p1' => 'abc', 'p2' => 'def' }.to_json,
386
- headers: { 'X-Cybozu-API-Token' => 'token-api' }
387
- )
388
- .to_return(body: "{\"abc\":\"def\"}", status: 200,
389
- headers: { 'Content-type' => 'application/json' })
494
+ .with(
495
+ body: { 'p1' => 'abc', 'p2' => 'def' }.to_json,
496
+ headers: { 'X-Cybozu-API-Token' => 'token-api' }
497
+ )
498
+ .to_return(
499
+ body: '{"abc":"def"}',
500
+ status: 200,
501
+ headers: { 'Content-type' => 'application/json' }
502
+ )
390
503
  end
391
504
 
392
505
  subject { target.delete(path, params) }
@@ -399,19 +512,17 @@ describe Kintone::Api do
399
512
  describe '#post_file' do
400
513
  before(:each) do
401
514
  stub_request(
402
- :post,
403
- 'https://www.example.com/k/v1/path'
515
+ :post,
516
+ 'https://www.example.com/k/v1/path'
404
517
  )
405
- .with(
406
- headers: { 'X-Cybozu-API-Token' => 'token-api' }
407
- )
408
- .to_return(body: "{\"fileKey\":\"abc\"}", status: 200,
409
- headers: { 'Content-type' => 'application/json' })
518
+ .with(headers: { 'X-Cybozu-API-Token' => 'token-api' })
519
+ .to_return(
520
+ body: '{"fileKey":"abc"}',
521
+ status: 200,
522
+ headers: { 'Content-type' => 'application/json' }
523
+ )
410
524
 
411
- expect(Faraday::UploadIO).to receive(:new)
412
- .with(path, content_type, original_filename,
413
- 'Content-Disposition' => 'form-data')
414
- .and_return(attachment)
525
+ expect(Faraday::UploadIO).to receive(:new).with(path, content_type, original_filename).and_return(attachment) # rubocop:disable Metrics/LineLength
415
526
  end
416
527
 
417
528
  subject { target.post_file(url, path, content_type, original_filename) }
@@ -11,8 +11,11 @@ describe Kintone::Command::Apis do
11
11
  :get,
12
12
  'https://example.cybozu.com/k/v1/apis.json'
13
13
  )
14
- .to_return(body: response_data.to_json, status: 200,
15
- headers: { 'Content-type' => 'application/json' })
14
+ .to_return(
15
+ body: response_data.to_json,
16
+ status: 200,
17
+ headers: { 'Content-type' => 'application/json' }
18
+ )
16
19
  end
17
20
 
18
21
  subject { target.get }
@@ -29,6 +32,22 @@ describe Kintone::Command::Apis do
29
32
  end
30
33
 
31
34
  it { is_expected.to eq(response_data) }
35
+
36
+ context 'fail to request' do
37
+ before(:each) do
38
+ stub_request(
39
+ :get,
40
+ 'https://example.cybozu.com/k/v1/apis.json'
41
+ )
42
+ .to_return(
43
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
44
+ status: 500,
45
+ headers: { 'Content-Type' => 'application/json' }
46
+ )
47
+ end
48
+
49
+ it { expect { subject }.to raise_error Kintone::KintoneError }
50
+ end
32
51
  end
33
52
 
34
53
  describe '#get_details_of' do
@@ -37,8 +56,11 @@ describe Kintone::Command::Apis do
37
56
  :get,
38
57
  'https://example.cybozu.com/k/v1/apis/records/get.json'
39
58
  )
40
- .to_return(body: response_data.to_json, status: 200,
41
- headers: { 'Content-type' => 'application/json' })
59
+ .to_return(
60
+ body: response_data.to_json,
61
+ status: 200,
62
+ headers: { 'Content-type' => 'application/json' }
63
+ )
42
64
  end
43
65
 
44
66
  subject { target.get_details_of(link) }
@@ -55,6 +77,22 @@ describe Kintone::Command::Apis do
55
77
  end
56
78
 
57
79
  it { is_expected.to eq(response_data) }
80
+
81
+ context 'fail to request' do
82
+ before(:each) do
83
+ stub_request(
84
+ :get,
85
+ 'https://example.cybozu.com/k/v1/apis/records/get.json'
86
+ )
87
+ .to_return(
88
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
89
+ status: 500,
90
+ headers: { 'Content-Type' => 'application/json' }
91
+ )
92
+ end
93
+
94
+ it { expect { subject }.to raise_error Kintone::KintoneError }
95
+ end
58
96
  end
59
97
 
60
98
  describe '#get_details_of_key' do
@@ -63,15 +101,21 @@ describe Kintone::Command::Apis do
63
101
  :get,
64
102
  'https://example.cybozu.com/k/v1/apis.json'
65
103
  )
66
- .to_return(body: apis_response_data.to_json, status: 200,
67
- headers: { 'Content-type' => 'application/json' })
104
+ .to_return(
105
+ body: apis_response_data.to_json,
106
+ status: 200,
107
+ headers: { 'Content-type' => 'application/json' }
108
+ )
68
109
 
69
110
  stub_request(
70
111
  :get,
71
112
  'https://example.cybozu.com/k/v1/apis/records/get.json'
72
113
  )
73
- .to_return(body: api_response_data.to_json, status: 200,
74
- headers: { 'Content-type' => 'application/json' })
114
+ .to_return(
115
+ body: api_response_data.to_json,
116
+ status: 200,
117
+ headers: { 'Content-type' => 'application/json' }
118
+ )
75
119
  end
76
120
 
77
121
  subject { target.get_details_of_key(key) }
@@ -113,5 +157,23 @@ describe Kintone::Command::Apis do
113
157
 
114
158
  it { expect { subject }.to raise_error NoMethodError }
115
159
  end
160
+
161
+ context 'fail to request' do
162
+ before(:each) do
163
+ stub_request(
164
+ :get,
165
+ 'https://example.cybozu.com/k/v1/apis/records/get.json'
166
+ )
167
+ .to_return(
168
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
169
+ status: 500,
170
+ headers: { 'Content-Type' => 'application/json' }
171
+ )
172
+ end
173
+
174
+ let(:key) { 'records/get' }
175
+
176
+ it { expect { subject }.to raise_error Kintone::KintoneError }
177
+ end
116
178
  end
117
179
  end