kintone 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -9,6 +9,7 @@ describe Kintone::Command::Records do
9
9
 
10
10
  describe '#get' do
11
11
  subject { target.get(app, query, fields) }
12
+
12
13
  let(:app) { 8 }
13
14
  let(:query) { '' }
14
15
  let(:fields) { [] }
@@ -19,8 +20,11 @@ describe Kintone::Command::Records do
19
20
  :get,
20
21
  'https://example.cybozu.com/k/v1/records.json?app=8&query='
21
22
  )
22
- .to_return(body: response_data.to_json, status: 200,
23
- headers: { 'Content-type' => 'application/json' })
23
+ .to_return(
24
+ body: response_data.to_json,
25
+ status: 200,
26
+ headers: { 'Content-type' => 'application/json' }
27
+ )
24
28
  end
25
29
 
26
30
  def response_data
@@ -36,11 +40,14 @@ describe Kintone::Command::Records do
36
40
  :get,
37
41
  'https://example.cybozu.com/k/v1/records.json?app=8&query=updated_time%20%3e%20%222012%2d02%2d03T09%3a00%3a00%2b0900%22%20and%20updated_time%20%3c%20%222012%2d02%2d03T10%3a00%3a00%2b0900%22'
38
42
  )
39
- .to_return(body: response_data.to_json, status: 200,
40
- headers: { 'Content-type' => 'application/json' })
43
+ .to_return(
44
+ body: response_data.to_json,
45
+ status: 200,
46
+ headers: { 'Content-type' => 'application/json' }
47
+ )
41
48
  end
42
49
 
43
- let(:query) { "updated_time > \"2012-02-03T09:00:00+0900\" and updated_time < \"2012-02-03T10:00:00+0900\"" } # rubocop:disable Style/LineLength
50
+ let(:query) { 'updated_time > "2012-02-03T09:00:00+0900" and updated_time < "2012-02-03T10:00:00+0900"' } # rubocop:disable Metrics/LineLength
44
51
 
45
52
  def response_data
46
53
  { 'records' => [{ 'record_id' => { 'type' => 'RECORD_NUMBER', 'value' => '1' } }] }
@@ -55,8 +62,11 @@ describe Kintone::Command::Records do
55
62
  :get,
56
63
  'https://example.cybozu.com/k/v1/records.json?app=8&query=&fields%5b0%5d=%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%95%AA%E5%8F%B7&fields%5b1%5d=created_time&fields%5b2%5d=dropdown'
57
64
  )
58
- .to_return(body: response_data.to_json, status: 200,
59
- headers: { 'Content-type' => 'application/json' })
65
+ .to_return(
66
+ body: response_data.to_json,
67
+ status: 200,
68
+ headers: { 'Content-type' => 'application/json' }
69
+ )
60
70
  end
61
71
 
62
72
  let(:fields) { %w(レコード番号 created_time dropdown) }
@@ -75,8 +85,11 @@ describe Kintone::Command::Records do
75
85
  'https://example.cybozu.com/k/v1/records.json'
76
86
  )
77
87
  .with(query: { app: 8, query: '' })
78
- .to_return(body: response_data.to_json, status: 200,
79
- headers: { 'Content-type' => 'application/json' })
88
+ .to_return(
89
+ body: response_data.to_json,
90
+ status: 200,
91
+ headers: { 'Content-type' => 'application/json' }
92
+ )
80
93
  end
81
94
 
82
95
  let(:query) { nil }
@@ -93,6 +106,46 @@ describe Kintone::Command::Records do
93
106
 
94
107
  it { expect { subject }.to raise_error(NoMethodError) }
95
108
  end
109
+
110
+ context 'totalCountにtrueを指定した時' do
111
+ before(:each) do
112
+ stub_request(
113
+ :get,
114
+ 'https://example.cybozu.com/k/v1/records.json'
115
+ )
116
+ .with(query: { app: 8, query: '', totalCount: true })
117
+ .to_return(
118
+ body: response_data.to_json,
119
+ status: 200,
120
+ headers: { 'Content-type' => 'application/json' }
121
+ )
122
+ end
123
+
124
+ subject { target.get(app, query, fields, total_count: total_count) }
125
+
126
+ def response_data
127
+ { 'records' => [{ 'record_id' => { 'type' => 'RECORD_NUMBER', 'value' => '1' } }] }
128
+ end
129
+
130
+ let(:total_count) { true }
131
+ it { expect(subject).to eq response_data }
132
+ end
133
+
134
+ context 'fail to request' do
135
+ before(:each) do
136
+ stub_request(
137
+ :get,
138
+ 'https://example.cybozu.com/k/v1/records.json?app=8&query='
139
+ )
140
+ .to_return(
141
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
142
+ status: 500,
143
+ headers: { 'Content-Type' => 'application/json' }
144
+ )
145
+ end
146
+
147
+ it { expect { subject }.to raise_error Kintone::KintoneError }
148
+ end
96
149
  end
97
150
 
98
151
  describe '#register' do
@@ -102,8 +155,11 @@ describe Kintone::Command::Records do
102
155
  'https://example.cybozu.com/k/v1/records.json'
103
156
  )
104
157
  .with(body: request_body.to_json)
105
- .to_return(body: response_body.to_json, status: 200,
106
- headers: { 'Content-type' => 'application/json' })
158
+ .to_return(
159
+ body: response_body.to_json,
160
+ status: 200,
161
+ headers: { 'Content-type' => 'application/json' }
162
+ )
107
163
  end
108
164
 
109
165
  subject { target.register(app, records) }
@@ -141,6 +197,30 @@ describe Kintone::Command::Records do
141
197
 
142
198
  it { expect(subject).to eq response_body }
143
199
  end
200
+
201
+ context 'fail to request' do
202
+ before(:each) do
203
+ stub_request(
204
+ :post,
205
+ 'https://example.cybozu.com/k/v1/records.json'
206
+ )
207
+ .with(body: request_body.to_json)
208
+ .to_return(
209
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
210
+ status: 500,
211
+ headers: { 'Content-Type' => 'application/json' }
212
+ )
213
+ end
214
+
215
+ let(:records) do
216
+ [
217
+ { 'rich_editor' => { 'value' => 'testtest' } },
218
+ { 'user_select' => { 'value' => [{ 'code' => 'suzuki' }] } }
219
+ ]
220
+ end
221
+
222
+ it { expect { subject }.to raise_error Kintone::KintoneError }
223
+ end
144
224
  end
145
225
 
146
226
  describe '#update' do
@@ -150,8 +230,11 @@ describe Kintone::Command::Records do
150
230
  'https://example.cybozu.com/k/v1/records.json'
151
231
  )
152
232
  .with(body: request_body.to_json)
153
- .to_return(body: response_body.to_json, status: 200,
154
- headers: { 'Content-type' => 'application/json' })
233
+ .to_return(
234
+ body: response_body.to_json,
235
+ status: 200,
236
+ headers: { 'Content-type' => 'application/json' }
237
+ )
155
238
  end
156
239
 
157
240
  subject { target.update(app, records) }
@@ -244,6 +327,39 @@ describe Kintone::Command::Records do
244
327
  it { expect(subject).to eq response_body }
245
328
  end
246
329
  end
330
+
331
+ context 'fail to request' do
332
+ before(:each) do
333
+ stub_request(
334
+ :put,
335
+ 'https://example.cybozu.com/k/v1/records.json'
336
+ )
337
+ .with(body: request_body.to_json)
338
+ .to_return(
339
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
340
+ status: 500,
341
+ headers: { 'Content-Type' => 'application/json' }
342
+ )
343
+ end
344
+
345
+ let(:records) do
346
+ [
347
+ { 'id' => 1, 'record' => { 'string_1' => { 'value' => 'abcdef' } } },
348
+ { 'id' => 2, 'record' => { 'string_multi' => { 'value' => 'opqrstu' } } }
349
+ ]
350
+ end
351
+ let(:request_body) do
352
+ {
353
+ 'app' => 4,
354
+ 'records' => [
355
+ { 'id' => 1, 'record' => { 'string_1' => { 'value' => 'abcdef' } } },
356
+ { 'id' => 2, 'record' => { 'string_multi' => { 'value' => 'opqrstu' } } }
357
+ ]
358
+ }
359
+ end
360
+
361
+ it { expect { subject }.to raise_error Kintone::KintoneError }
362
+ end
247
363
  end
248
364
 
249
365
  describe '#delete' do
@@ -253,8 +369,11 @@ describe Kintone::Command::Records do
253
369
  'https://example.cybozu.com/k/v1/records.json'
254
370
  )
255
371
  .with(body: request_body.to_json)
256
- .to_return(body: '{}', status: 200,
257
- headers: { 'Content-type' => 'application/json' })
372
+ .to_return(
373
+ body: '{}',
374
+ status: 200,
375
+ headers: { 'Content-type' => 'application/json' }
376
+ )
258
377
  end
259
378
 
260
379
  context 'without revisions' do
@@ -277,5 +396,28 @@ describe Kintone::Command::Records do
277
396
 
278
397
  it { expect(subject).to eq({}) }
279
398
  end
399
+
400
+ context 'fail to request' do
401
+ before(:each) do
402
+ stub_request(
403
+ :delete,
404
+ 'https://example.cybozu.com/k/v1/records.json'
405
+ )
406
+ .with(body: request_body.to_json)
407
+ .to_return(
408
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
409
+ status: 500,
410
+ headers: { 'Content-Type' => 'application/json' }
411
+ )
412
+ end
413
+
414
+ subject { target.delete(app, ids) }
415
+
416
+ let(:app) { 1 }
417
+ let(:ids) { [100, 80] }
418
+ let(:request_body) { { app: app, ids: ids } }
419
+
420
+ it { expect { subject }.to raise_error Kintone::KintoneError }
421
+ end
280
422
  end
281
423
  end
@@ -7,23 +7,41 @@ describe Kintone::Command::SpaceBody do
7
7
  let(:api) { Kintone::Api.new('example.cybozu.com', 'Administrator', 'cybozu') }
8
8
 
9
9
  describe '#update' do
10
+ before(:each) do
11
+ stub_request(
12
+ :put,
13
+ 'https://example.cybozu.com/k/v1/space/body.json'
14
+ )
15
+ .with(body: { id: 1, body: '<b>総務課</b>専用のスペースです。' }.to_json)
16
+ .to_return(
17
+ body: '{}',
18
+ status: 200,
19
+ headers: { 'Content-type' => 'application/json' }
20
+ )
21
+ end
22
+
10
23
  subject { target.update(id, body) }
11
24
 
12
- context '' do
25
+ let(:id) { 1 }
26
+ let(:body) { '<b>総務課</b>専用のスペースです。' }
27
+
28
+ it { expect(subject).to eq({}) }
29
+
30
+ context 'fail to request' do
13
31
  before(:each) do
14
32
  stub_request(
15
33
  :put,
16
34
  'https://example.cybozu.com/k/v1/space/body.json'
17
35
  )
18
36
  .with(body: { id: 1, body: '<b>総務課</b>専用のスペースです。' }.to_json)
19
- .to_return(body: '{}', status: 200,
20
- headers: { 'Content-type' => 'application/json' })
37
+ .to_return(
38
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
39
+ status: 500,
40
+ headers: { 'Content-Type' => 'application/json' }
41
+ )
21
42
  end
22
43
 
23
- let(:id) { 1 }
24
- let(:body) { '<b>総務課</b>専用のスペースです。' }
25
-
26
- it { expect(subject).to eq({}) }
44
+ it { expect { subject }.to raise_error Kintone::KintoneError }
27
45
  end
28
46
  end
29
47
  end
@@ -15,8 +15,11 @@ describe Kintone::Command::SpaceGuests do
15
15
  'https://example.cybozu.com/k/guest/1/v1/space/guests.json'
16
16
  )
17
17
  .with(body: { id: id, guests: guests }.to_json)
18
- .to_return(body: '{}', status: 200,
19
- headers: { 'Content-type' => 'application/json' })
18
+ .to_return(
19
+ body: '{}',
20
+ status: 200,
21
+ headers: { 'Content-type' => 'application/json' }
22
+ )
20
23
  end
21
24
 
22
25
  subject { target.update(id, guests) }
@@ -31,5 +34,22 @@ describe Kintone::Command::SpaceGuests do
31
34
  end
32
35
 
33
36
  it { is_expected.to be_truthy }
37
+
38
+ context 'fail to request' do
39
+ before(:each) do
40
+ stub_request(
41
+ :put,
42
+ 'https://example.cybozu.com/k/guest/1/v1/space/guests.json'
43
+ )
44
+ .with(body: { id: id, guests: guests }.to_json)
45
+ .to_return(
46
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
47
+ status: 500,
48
+ headers: { 'Content-Type' => 'application/json' }
49
+ )
50
+ end
51
+
52
+ it { expect { subject }.to raise_error Kintone::KintoneError }
53
+ end
34
54
  end
35
55
  end
@@ -13,21 +13,18 @@ describe Kintone::Command::SpaceMembers do
13
13
  'https://example.cybozu.com/k/v1/space/members.json'
14
14
  )
15
15
  .with(query: { id: id })
16
- .to_return(body: response_data.to_json, status: 200,
17
- headers: { 'Content-type' => 'application/json' })
16
+ .to_return(
17
+ body: response_data.to_json,
18
+ status: 200,
19
+ headers: { 'Content-type' => 'application/json' }
20
+ )
18
21
  end
19
22
 
20
23
  subject { target.get(id) }
21
24
 
22
25
  let(:id) { 1 }
23
-
24
- def response_data
25
- {
26
- 'members' => members
27
- }
28
- end
29
-
30
- def members
26
+ let(:response_data) { { 'members' => members } }
27
+ let(:members) do
31
28
  [
32
29
  {
33
30
  'entity' => { 'type' => 'USER', 'code' => 'user1' },
@@ -38,6 +35,23 @@ describe Kintone::Command::SpaceMembers do
38
35
  end
39
36
 
40
37
  it { expect(subject).to match members }
38
+
39
+ context 'fail to request' do
40
+ before(:each) do
41
+ stub_request(
42
+ :get,
43
+ 'https://example.cybozu.com/k/v1/space/members.json'
44
+ )
45
+ .with(query: { id: id })
46
+ .to_return(
47
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
48
+ status: 500,
49
+ headers: { 'Content-Type' => 'application/json' }
50
+ )
51
+ end
52
+
53
+ it { expect { subject }.to raise_error Kintone::KintoneError }
54
+ end
41
55
  end
42
56
 
43
57
  describe '#update' do
@@ -47,8 +61,11 @@ describe Kintone::Command::SpaceMembers do
47
61
  'https://example.cybozu.com/k/v1/space/members.json'
48
62
  )
49
63
  .with(body: request_data.to_json)
50
- .to_return(body: '{}', status: 200,
51
- headers: { 'Content-type' => 'application/json' })
64
+ .to_return(
65
+ body: '{}',
66
+ status: 200,
67
+ headers: { 'Content-type' => 'application/json' }
68
+ )
52
69
  end
53
70
 
54
71
  subject { target.update(id, members) }
@@ -64,7 +81,7 @@ describe Kintone::Command::SpaceMembers do
64
81
  ]
65
82
  end
66
83
 
67
- def request_data
84
+ let(:request_data) do
68
85
  {
69
86
  'id' => 1,
70
87
  'members' => [
@@ -78,5 +95,22 @@ describe Kintone::Command::SpaceMembers do
78
95
  end
79
96
 
80
97
  it { expect(subject).to be_truthy }
98
+
99
+ context 'fail to request' do
100
+ before(:each) do
101
+ stub_request(
102
+ :put,
103
+ 'https://example.cybozu.com/k/v1/space/members.json'
104
+ )
105
+ .with(body: request_data.to_json)
106
+ .to_return(
107
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
108
+ status: 500,
109
+ headers: { 'Content-Type' => 'application/json' }
110
+ )
111
+ end
112
+
113
+ it { expect { subject }.to raise_error Kintone::KintoneError }
114
+ end
81
115
  end
82
116
  end
@@ -7,49 +7,79 @@ describe Kintone::Command::Space do
7
7
  let(:api) { Kintone::Api.new('example.cybozu.com', 'Administrator', 'cybozu') }
8
8
 
9
9
  describe '#get' do
10
+ before(:each) do
11
+ stub_request(
12
+ :get,
13
+ 'https://example.cybozu.com/k/v1/space.json'
14
+ )
15
+ .with(query: { id: 1 })
16
+ .to_return(
17
+ body: result.to_json,
18
+ status: 200,
19
+ headers: { 'Content-type' => 'application/json' }
20
+ )
21
+ end
22
+
10
23
  subject { target.get(id) }
11
24
 
12
- context '' do
25
+ let(:id) { 1 }
26
+ let(:result) { { 'id' => '1', 'name' => 'sample space' } }
27
+
28
+ it { expect(subject).to eq(result) }
29
+
30
+ context 'fail to request' do
13
31
  before(:each) do
14
32
  stub_request(
15
33
  :get,
16
34
  'https://example.cybozu.com/k/v1/space.json'
17
35
  )
18
36
  .with(query: { id: 1 })
19
- .to_return(body: result.to_json, status: 200,
20
- headers: { 'Content-type' => 'application/json' })
21
- end
22
-
23
- let(:id) { 1 }
24
-
25
- def result
26
- {
27
- 'id' => '1',
28
- 'name' => 'sample space'
29
- }
37
+ .to_return(
38
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
39
+ status: 500,
40
+ headers: { 'Content-Type' => 'application/json' }
41
+ )
30
42
  end
31
43
 
32
- it { expect(subject).to eq(result) }
44
+ it { expect { subject }.to raise_error Kintone::KintoneError }
33
45
  end
34
46
  end
35
47
 
36
48
  describe '#delete' do
49
+ before(:each) do
50
+ stub_request(
51
+ :delete,
52
+ 'https://example.cybozu.com/k/v1/space.json'
53
+ )
54
+ .with(body: { id: 1 }.to_json)
55
+ .to_return(
56
+ body: '{}',
57
+ status: 200,
58
+ headers: { 'Content-type' => 'application/json' }
59
+ )
60
+ end
61
+
37
62
  subject { target.delete(id) }
38
63
 
39
- context '' do
64
+ let(:id) { 1 }
65
+
66
+ it { expect(subject).to be_truthy }
67
+
68
+ context 'fail to request' do
40
69
  before(:each) do
41
70
  stub_request(
42
71
  :delete,
43
72
  'https://example.cybozu.com/k/v1/space.json'
44
73
  )
45
74
  .with(body: { id: 1 }.to_json)
46
- .to_return(body: '{}', status: 200,
47
- headers: { 'Content-type' => 'application/json' })
75
+ .to_return(
76
+ body: '{"message":"不正なJSON文字列です。","id":"1505999166-897850006","code":"CB_IJ01"}',
77
+ status: 500,
78
+ headers: { 'Content-Type' => 'application/json' }
79
+ )
48
80
  end
49
81
 
50
- let(:id) { 1 }
51
-
52
- it { expect(subject).to be_truthy }
82
+ it { expect { subject }.to raise_error Kintone::KintoneError }
53
83
  end
54
84
  end
55
85
  end