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
@@ -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