capsule_crm 0.10.4 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef5fc2adeeb41d8290223f0cb00f5be3851df003
4
- data.tar.gz: f80eba406d340e59b25e3dcb3f75d5b2aa7d2495
3
+ metadata.gz: 0e6a15562202d4d1a360a5beeb9d8918c7eb5e7e
4
+ data.tar.gz: 63a2206a1f4c450e50df285cbec99514648a9829
5
5
  SHA512:
6
- metadata.gz: e29e640dc3e7fbdf541c7c76cb0c749654f6b4cbafacb6e3cc69602ef8ec55388f81abd297cd0a8d4d7a6714d02580113617e6251a09b4c02e43819e7059de48
7
- data.tar.gz: c1227d21ebf09a9cbaf4d6415e755ab08bee3b9376b2fc1ffff9c35dd3f226de4bb593dc8b4efb795d7d3efd0fd68ef9e93de9c68573d36ce20aebc9dc601a35
6
+ metadata.gz: 68511e44926bb512b68e06419975305a3e1e940b4805b37b6cc4b3b378cee42dc44da112935e5d22bf83136055ce3fb1fa8c1a18179742c0299fa2ddf33461bb
7
+ data.tar.gz: c0aec7b22bc4ab680edaf83a5e52f67cbf81af988680b1e8c072012f936fc9275076eaf60fda178801f465114cc93c2e3ef658f9eb71669339c650027e8e05b9
data/.travis.yml CHANGED
@@ -3,7 +3,6 @@ rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
5
  - jruby-19mode
6
- - rbx-19mode
7
6
  before_install:
8
7
  - gem update --system
9
8
  - gem install bundler
data/README.md CHANGED
@@ -15,6 +15,12 @@ Ready](http://badge.waffle.io/mattbeedle/capsule_crm.png)](http://waffle.io/matt
15
15
 
16
16
  CapsuleCRM provides an ActiveModel compliant interface to the capsulecrm API
17
17
 
18
+ ## Versioning
19
+
20
+ This project follows [semver](http://semver.org/spec/v2.0.0.html) so there will
21
+ be no breaking changes in minor/patch version changes. It is pre 1.0
22
+ though, so it's not finished and expect to find bugs.
23
+
18
24
  ## Installation
19
25
 
20
26
  Add this line to your application's Gemfile:
@@ -304,7 +310,7 @@ CapsuleCRM::Currency.all
304
310
 
305
311
  ## Supported Rubies
306
312
 
307
- 1.9.2, 1.9.3, 2.0, jruby-19mode, rbx-19mode
313
+ 1.9.3, 2.0, jruby-19mode
308
314
 
309
315
  ## Feedback
310
316
 
data/capsule_crm.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |gem|
33
33
  gem.add_development_dependency('guard-bundler')
34
34
  gem.add_development_dependency('guard-rspec')
35
35
  gem.add_development_dependency('rb-fsevent')
36
- gem.add_development_dependency('rspec')
36
+ gem.add_development_dependency('rspec', '~> 2.14.0')
37
37
  gem.add_development_dependency('shoulda-matchers')
38
38
  gem.add_development_dependency('webmock')
39
39
  end
data/lib/capsule_crm.rb CHANGED
@@ -25,6 +25,7 @@ require 'capsule_crm/website'
25
25
  require 'capsule_crm/hash_helper'
26
26
  require 'capsule_crm/results_proxy'
27
27
  require 'capsule_crm/errors/record_invalid'
28
+ require 'capsule_crm/errors/unauthorized'
28
29
  require 'capsule_crm/contacts'
29
30
  require 'capsule_crm/contactable'
30
31
  require 'capsule_crm/configuration'
@@ -9,33 +9,37 @@ module CapsuleCRM
9
9
  # Returns a Hash from the JSON response
10
10
  def self.get(path, params = {})
11
11
  preprocess_params(params)
12
- response = faraday.get(path, params) do |req|
13
- req.headers.update default_request_headers
14
- end
15
- JSON.parse response.body
12
+ JSON.parse request(:get, path, params).body
16
13
  end
17
14
 
18
15
  def self.post(path, params = {})
19
- response = faraday.post(path, params.to_json) do |request|
20
- request.headers.update default_request_headers
21
- end
22
- process_post_response(response)
16
+ process_post_response request(:post, path, params)
23
17
  end
24
18
 
25
19
  def self.put(path, params)
26
- faraday.put(path, params.to_json) do |request|
27
- request.headers.update default_request_headers
28
- end.success?
20
+ request(:put, path, params.to_json).success?
29
21
  end
30
22
 
31
23
  def self.delete(path)
32
- faraday.delete(path) do |request|
33
- request.headers.update default_request_headers
34
- end.success?
24
+ request(:delete, path, {}).success?
35
25
  end
36
26
 
37
27
  private
38
28
 
29
+ def self.request(method, path, params)
30
+ faraday.send(method, path, params) do |req|
31
+ req.headers.update default_request_headers
32
+ end.tap do |response|
33
+ check_response_status(response)
34
+ end
35
+ end
36
+
37
+ def self.check_response_status(response)
38
+ if response.status == 401
39
+ raise CapsuleCRM::Errors::Unauthorized.new(response)
40
+ end
41
+ end
42
+
39
43
  def self.preprocess_params(params)
40
44
  params.symbolize_keys!
41
45
  if params_contains_lastmodified(params)
@@ -50,15 +54,11 @@ module CapsuleCRM
50
54
 
51
55
  # TODO clean this shit up
52
56
  def self.process_post_response(response)
53
- if response.success?
54
- if response.headers['Location'] &&
55
- match = response.headers['Location'].match(/\/(?<id>\d+)$/)
56
- { id: match[:id] }
57
- else
58
- true
59
- end
57
+ if response.headers['Location'] &&
58
+ match = response.headers['Location'].match(/\/(?<id>\d+)$/)
59
+ { id: match[:id] }
60
60
  else
61
- false
61
+ true
62
62
  end
63
63
  end
64
64
 
@@ -0,0 +1,11 @@
1
+ module CapsuleCRM
2
+ module Errors
3
+ class Unauthorized < StandardError
4
+ attr_reader :response
5
+
6
+ def initialize(response)
7
+ @response = response
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module CapsuleCrm
2
- VERSION = '0.10.4'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -17,5 +17,18 @@ describe CapsuleCRM::Connection do
17
17
  ).with(query: { lastmodified: "20131001T133156" })
18
18
  end
19
19
  end
20
+
21
+ context 'when the request is not authorized' do
22
+ before do
23
+ stub_request(:get, /\/api\/v1\/foo/).
24
+ to_return(status: 401, body: '<html></html>')
25
+ end
26
+ subject { CapsuleCRM::Connection.get('/api/v1/food') }
27
+
28
+ it 'should raise an Unauthorized error' do
29
+ expect { CapsuleCRM::Connection.get('/api/v1/foo') }.
30
+ to raise_error(CapsuleCRM::Errors::Unauthorized)
31
+ end
32
+ end
20
33
  end
21
34
  end
@@ -97,46 +97,35 @@ describe CapsuleCRM::History do
97
97
  end
98
98
 
99
99
  describe 'find' do
100
+ let(:first_attachment) { subject.attachments.first }
101
+ let(:first_participant) { subject.participants.first }
100
102
  before do
101
103
  stub_request(:get, /\/api\/history\/100$/).
102
104
  to_return(body: File.read('spec/support/history.json'))
103
105
  stub_request(:get, /\/api\/users$/).
104
106
  to_return(body: File.read('spec/support/all_users.json'))
105
107
  end
106
-
107
108
  subject { CapsuleCRM::History.find(100) }
108
109
 
109
- it { subject.type.should eql('Note') }
110
-
111
- it { subject.creator.should be_a(CapsuleCRM::User) }
112
-
113
- it { subject.entry_date.should_not be_blank }
114
-
115
- it { subject.subject.should_not be_blank }
116
-
117
- it { subject.note.should_not be_blank }
118
-
119
- it { subject.attachments.should be_a(Array) }
120
-
121
- it { subject.attachments.first.should be_a(CapsuleCRM::Attachment) }
122
-
123
- it { subject.attachments.first.filename.should eql('latin.doc') }
124
-
125
- it { subject.participants.should be_a(Array) }
126
-
127
- it { subject.participants.first.should be_a(CapsuleCRM::Participant) }
128
-
129
- it { subject.participants.first.name.should eql('Matt Beedle') }
110
+ its(:type) { should eql('Note') }
111
+ its(:creator) { should be_a(CapsuleCRM::User) }
112
+ its(:entry_date) { should_not be_blank }
113
+ its(:subject) { should_not be_blank }
114
+ its(:note) { should_not be_blank }
115
+ its(:attachments) { should be_a(Array) }
116
+ it { expect(first_attachment).to be_a(CapsuleCRM::Attachment) }
117
+ it { expect(first_attachment.filename).to eql('latin.doc') }
118
+ its(:participants) { should be_a(Array) }
119
+ it { expect(first_participant).to be_a(CapsuleCRM::Participant) }
120
+ it { expect(first_participant.name).to eql('Matt Beedle') }
130
121
 
131
122
  context 'when it belongs to a party' do
132
123
  before do
133
124
  stub_request(:get, /\/api\/party\/1$/).
134
125
  to_return(body: File.read('spec/support/person.json'))
135
126
  end
136
-
137
- it { subject.party_id.should_not be_blank }
138
-
139
- it { subject.party.should_not be_blank }
127
+ its(:party_id) { should_not be_blank }
128
+ its(:party) { should_not be_blank }
140
129
  end
141
130
 
142
131
  context 'when it belongs to a case' do
@@ -145,9 +134,8 @@ describe CapsuleCRM::History do
145
134
  to_return(body: File.read('spec/support/case.json'))
146
135
  end
147
136
 
148
- it { subject.case_id.should_not be_blank }
149
-
150
- it { subject.kase.should_not be_blank }
137
+ its(:case_id) { should_not be_blank }
138
+ its(:kase) { should_not be_blank }
151
139
  end
152
140
 
153
141
  context 'when it belongs to an opportunity' do
@@ -156,14 +144,14 @@ describe CapsuleCRM::History do
156
144
  to_return(body: File.read('spec/support/opportunity.json'))
157
145
  end
158
146
 
159
- it { subject.opportunity_id.should_not be_blank }
160
-
161
- it { subject.opportunity.should_not be_blank }
147
+ its(:opportunity_id) { should_not be_blank }
148
+ its(:opportunity) { should_not be_blank }
162
149
  end
163
150
  end
164
151
 
165
152
  describe '#creator=' do
166
153
  let(:history) { CapsuleCRM::History.new }
154
+ subject { history }
167
155
 
168
156
  context 'when a String is supplied' do
169
157
  before do
@@ -174,88 +162,78 @@ describe CapsuleCRM::History do
174
162
  context 'when the user exists' do
175
163
  before { history.creator = 'a.user' }
176
164
 
177
- it { history.creator.should be_a(CapsuleCRM::User) }
165
+ its(:creator) { should be_a(CapsuleCRM::User) }
178
166
  end
179
167
 
180
168
  context 'when the user does not exist' do
181
169
  before { history.creator = 'asdfadsfdsaf' }
182
170
 
183
- it { history.creator.should be_blank }
171
+ its(:creator) { should be_blank }
184
172
  end
185
173
  end
186
174
 
187
175
  context 'when a CapsuleCRM::Person is supplied' do
188
176
  let(:user) { CapsuleCRM::User.new }
189
-
190
177
  before { history.creator = user }
191
178
 
192
- it { history.creator.should eql(user) }
179
+ its(:creator) { should eql(user) }
193
180
  end
194
181
  end
195
182
 
196
183
  describe '.create' do
197
184
  context 'when it belongs to a party' do
198
185
  let(:person) { Fabricate.build(:person, id: 1) }
199
-
200
186
  subject do
201
187
  CapsuleCRM::History.create(
202
188
  note: Faker::Lorem.paragraph, party: person
203
189
  )
204
190
  end
205
-
206
191
  let(:location) do
207
192
  "https://sample.capsulecrm.com/api/party/#{person.id}/history/101"
208
193
  end
209
-
210
194
  before do
211
195
  stub_request(:post, /\/api\/party\/#{person.id}\/history$/).
212
196
  to_return(headers: { 'Location' => location})
213
197
  end
214
198
 
215
- it { subject.id.should eql(101) }
199
+ its(:id) { should eql(101) }
216
200
  end
217
201
 
218
202
  context 'when it belongs to a kase' do
219
203
  let(:kase) { Fabricate.build(:case, id: 2) }
220
-
221
204
  let(:location) do
222
205
  "https://sample.capsulecrm.com/api/kase/#{kase.id}/history/10"
223
206
  end
224
-
225
207
  subject do
226
208
  CapsuleCRM::History.create(note: Faker::Lorem.paragraph, kase: kase)
227
209
  end
228
-
229
210
  before do
230
211
  stub_request(:post, /\/api\/kase\/#{kase.id}\/history$/).
231
212
  to_return(headers: { 'Location' => location })
232
213
  end
233
214
 
234
- it { subject.id.should eql(10) }
215
+ its(:id) { should eql(10) }
235
216
  end
236
217
 
237
218
  context 'when it belongs to an opportunity' do
238
219
  let(:opportunity) { Fabricate.build(:opportunity, id: 1) }
239
-
240
220
  subject do
241
221
  CapsuleCRM::History.create(
242
222
  note: Faker::Lorem.paragraph, opportunity: opportunity
243
223
  )
244
224
  end
245
-
246
225
  let(:location) do
247
226
  [
248
227
  'https://sample.capsulecrm.com/api/opportunity/',
249
228
  opportunity.id, '/history/9'
250
229
  ].join
251
230
  end
252
-
253
231
  before do
254
232
  stub_request(:post, /\/api\/opportunity\/#{opportunity.id}\/history$/).
255
233
  to_return(headers: { 'Location' => location })
256
234
  end
257
235
 
258
- it { subject.id.should eql(9) }
236
+ its(:id) { should eql(9) }
259
237
  end
260
238
 
261
239
  context 'when it is invalid' do
@@ -268,66 +246,57 @@ describe CapsuleCRM::History do
268
246
  describe '.create!' do
269
247
  context 'when it belongs to a party' do
270
248
  let(:person) { Fabricate.build(:person, id: 1) }
271
-
272
249
  subject do
273
250
  CapsuleCRM::History.create!(
274
251
  note: Faker::Lorem.paragraph, party: person
275
252
  )
276
253
  end
277
-
278
254
  let(:location) do
279
255
  "https://sample.capsulecrm.com/api/party/#{person.id}/history/101"
280
256
  end
281
-
282
257
  before do
283
258
  stub_request(:post, /\/api\/party\/#{person.id}\/history$/).
284
259
  to_return(headers: { 'Location' => location})
285
260
  end
286
261
 
287
- it { subject.id.should eql(101) }
262
+ its(:id) { should eql(101) }
288
263
  end
289
264
 
290
265
  context 'when it belongs to a kase' do
291
266
  let(:kase) { Fabricate.build(:case, id: 2) }
292
-
293
267
  let(:location) do
294
268
  "https://sample.capsulecrm.com/api/kase/#{kase.id}/history/10"
295
269
  end
296
-
297
270
  subject do
298
271
  CapsuleCRM::History.create!(note: Faker::Lorem.paragraph, kase: kase)
299
272
  end
300
-
301
273
  before do
302
274
  stub_request(:post, /\/api\/kase\/#{kase.id}\/history$/).
303
275
  to_return(headers: { 'Location' => location })
304
276
  end
305
277
 
306
- it { subject.id.should eql(10) }
278
+ its(:id) { should eql(10) }
307
279
  end
308
280
 
309
281
  context 'when it belongs to an opportunity' do
310
282
  let(:opportunity) { Fabricate.build(:opportunity, id: 1) }
311
-
312
283
  subject do
313
284
  CapsuleCRM::History.create!(
314
285
  note: Faker::Lorem.paragraph, opportunity: opportunity
315
286
  )
316
287
  end
317
-
318
288
  let(:location) do
319
289
  [
320
290
  'https://sample.capsulecrm.com/api/opportunity/',
321
291
  opportunity.id, '/history/9'
322
292
  ].join
323
293
  end
324
-
325
294
  before do
326
295
  stub_request(:post, /\/api\/opportunity\/#{opportunity.id}\/history$/).
327
296
  to_return(headers: { 'Location' => location })
328
297
  end
329
298
 
330
- it { subject.id.should eql(9) }
299
+ its(:id) { should eql(9) }
331
300
  end
332
301
 
333
302
  context 'when it is invalid' do
@@ -341,39 +310,32 @@ describe CapsuleCRM::History do
341
310
  describe '#update_attributes' do
342
311
  context 'when the history is valid' do
343
312
  subject { Fabricate(:history, id: 2, party: Fabricate.build(:person)) }
344
-
345
313
  before do
346
314
  stub_request(:put, /api\/history\/2$/).to_return(status: 200)
347
315
  subject.update_attributes note: 'changed note text'
348
316
  end
349
317
 
350
- it { subject.note.should eql('changed note text') }
351
-
318
+ its(:note) { should eql('changed note text') }
352
319
  it { should be_persisted }
353
320
  end
354
321
 
355
322
  context 'when the history is not valid' do
356
- subject do
357
- CapsuleCRM::History.new(id: 2)
358
- end
359
-
323
+ subject { CapsuleCRM::History.new(id: 2) }
360
324
  before { subject.update_attributes subject: Faker::Lorem.sentence }
361
325
 
362
- it { subject.should_not be_valid }
326
+ it { should_not be_valid }
363
327
  end
364
328
  end
365
329
 
366
330
  describe '#update_attributes!' do
367
331
  context 'when it is valid' do
368
332
  subject { Fabricate(:history, id: 3, party: Fabricate.build(:case)) }
369
-
370
333
  before do
371
334
  stub_request(:put, /api\/history\/3$/).to_return(status: 200)
372
335
  subject.update_attributes! note: 'some new note'
373
336
  end
374
337
 
375
- it { subject.note.should eql('some new note') }
376
-
338
+ its(:note) { should eql('some new note') }
377
339
  it { should be_persisted }
378
340
  end
379
341
 
@@ -393,52 +355,46 @@ describe CapsuleCRM::History do
393
355
 
394
356
  context 'when it belongs to a party' do
395
357
  let(:party) { Fabricate.build(:organization, id: 2) }
396
-
397
358
  let(:location) do
398
359
  "https://sample.capsulecrm.com/api/party/#{party.id}/history/101"
399
360
  end
400
-
401
361
  before do
402
362
  history.party = party
403
363
  stub_request(:post, /\/api\/party\/#{party.id}\/history$/).
404
364
  to_return(headers: { 'Location' => location })
405
365
  history.save
406
366
  end
367
+ subject { history }
407
368
 
408
- it { history.id.should eql(101) }
409
-
369
+ its(:id) { should eql(101) }
410
370
  it { history.should be_persisted }
411
371
  end
412
372
 
413
373
  context 'when it belongs to a kase' do
414
374
  let(:kase) { Fabricate.build(:case, id: 5) }
415
-
416
375
  let(:location) do
417
376
  "https://sample.capsulecrm.com/api/kase/#{kase.id}/history/10005"
418
377
  end
419
-
420
378
  before do
421
379
  history.kase = kase
422
380
  stub_request(:post, /\/api\/kase\/#{kase.id}\/history$/).
423
381
  to_return(headers: { 'Location' => location })
424
382
  history.save
425
383
  end
384
+ subject { history }
426
385
 
427
- it { history.id.should eql(10005) }
428
-
429
- it { history.should be_persisted }
386
+ its(:id) { should eql(10005) }
387
+ it { should be_persisted }
430
388
  end
431
389
 
432
390
  context 'when it belongs to an opportunity' do
433
391
  let(:opportunity) { Fabricate.build(:opportunity, id: 3) }
434
-
435
392
  let(:location) do
436
393
  [
437
394
  'https://sample.capsulecrm.com/api/opportunity/',
438
395
  opportunity.id, '/history/101'
439
396
  ].join
440
397
  end
441
-
442
398
  before do
443
399
  history.opportunity = opportunity
444
400
  stub_request(
@@ -446,10 +402,10 @@ describe CapsuleCRM::History do
446
402
  ).to_return(headers: { 'Location' => location })
447
403
  history.save
448
404
  end
405
+ subject { history }
449
406
 
450
- it { history.id.should eql(101) }
451
-
452
- it { history.should be_persisted }
407
+ its(:id) { should eql(101) }
408
+ it { should be_persisted }
453
409
  end
454
410
  end
455
411
 
@@ -457,14 +413,14 @@ describe CapsuleCRM::History do
457
413
  let(:history) do
458
414
  Fabricate.build(:history, party: Fabricate.build(:person), id: 10)
459
415
  end
460
-
461
416
  before do
462
417
  stub_request(:put, /\/api\/history\/#{history.id}$/).
463
418
  to_return(status: 200)
464
419
  history.save
465
420
  end
421
+ subject { history }
466
422
 
467
- it { history.should be_persisted }
423
+ it { should be_persisted }
468
424
  end
469
425
  end
470
426
 
@@ -478,57 +434,50 @@ describe CapsuleCRM::History do
478
434
  to raise_error(CapsuleCRM::Errors::RecordInvalid)
479
435
  end
480
436
  end
481
-
482
437
  let(:history) { Fabricate.build(:history) }
483
438
 
484
439
  context 'when it belongs to a party' do
485
440
  let(:party) { Fabricate.build(:organization, id: 2) }
486
-
487
441
  let(:location) do
488
442
  "https://sample.capsulecrm.com/api/party/#{party.id}/history/101"
489
443
  end
490
-
491
444
  before do
492
445
  history.party = party
493
446
  stub_request(:post, /\/api\/party\/#{party.id}\/history$/).
494
447
  to_return(headers: { 'Location' => location })
495
448
  history.save!
496
449
  end
450
+ subject { history }
497
451
 
498
- it { history.id.should eql(101) }
499
-
500
- it { history.should be_persisted }
452
+ its(:id) { should eql(101) }
453
+ it { should be_persisted }
501
454
  end
502
455
 
503
456
  context 'when it belongs to a kase' do
504
457
  let(:kase) { Fabricate.build(:case, id: 5) }
505
-
506
458
  let(:location) do
507
459
  "https://sample.capsulecrm.com/api/kase/#{kase.id}/history/10005"
508
460
  end
509
-
510
461
  before do
511
462
  history.kase = kase
512
463
  stub_request(:post, /\/api\/kase\/#{kase.id}\/history$/).
513
464
  to_return(headers: { 'Location' => location })
514
465
  history.save!
515
466
  end
467
+ subject { history }
516
468
 
517
- it { history.id.should eql(10005) }
518
-
519
- it { history.should be_persisted }
469
+ its(:id) { should eql(10005) }
470
+ it { should be_persisted }
520
471
  end
521
472
 
522
473
  context 'when it belongs to an opportunity' do
523
474
  let(:opportunity) { Fabricate.build(:opportunity, id: 3) }
524
-
525
475
  let(:location) do
526
476
  [
527
477
  'https://sample.capsulecrm.com/api/opportunity/',
528
478
  opportunity.id, '/history/101'
529
479
  ].join
530
480
  end
531
-
532
481
  before do
533
482
  history.opportunity = opportunity
534
483
  stub_request(
@@ -536,10 +485,10 @@ describe CapsuleCRM::History do
536
485
  ).to_return(headers: { 'Location' => location })
537
486
  history.save!
538
487
  end
488
+ subject { history }
539
489
 
540
- it { history.id.should eql(101) }
541
-
542
- it { history.should be_persisted }
490
+ its(:id) { should eql(101) }
491
+ it { should be_persisted }
543
492
  end
544
493
  end
545
494
 
@@ -548,14 +497,14 @@ describe CapsuleCRM::History do
548
497
  let(:history) do
549
498
  Fabricate.build(:history, party: Fabricate.build(:person), id: 10)
550
499
  end
551
-
552
500
  before do
553
501
  stub_request(:put, /\/api\/history\/#{history.id}$/).
554
502
  to_return(status: 200)
555
503
  history.save!
556
504
  end
505
+ subject { history }
557
506
 
558
- it { history.should be_persisted }
507
+ it { should be_persisted }
559
508
  end
560
509
 
561
510
  context 'when it is not valid' do
@@ -571,13 +520,11 @@ describe CapsuleCRM::History do
571
520
 
572
521
  describe '#destroy' do
573
522
  let(:history) { Fabricate.build(:history, id: 19) }
574
-
575
523
  before do
576
524
  stub_request(:delete, /\/api\/history\/#{history.id}$/).
577
525
  to_return(status: 200)
578
526
  history.destroy
579
527
  end
580
-
581
528
  subject { history }
582
529
 
583
530
  it { should_not be_persisted }
@@ -586,7 +533,6 @@ describe CapsuleCRM::History do
586
533
  describe '#new_record?' do
587
534
  context 'when the history item is a new record' do
588
535
  let(:history) { CapsuleCRM::History.new }
589
-
590
536
  subject { history.new_record? }
591
537
 
592
538
  it { should be_true }
@@ -594,7 +540,6 @@ describe CapsuleCRM::History do
594
540
 
595
541
  context 'when the history item is not a new record' do
596
542
  let(:history) { CapsuleCRM::History.new(id: 1) }
597
-
598
543
  subject { history.new_record? }
599
544
 
600
545
  it { should be_false }
@@ -604,7 +549,6 @@ describe CapsuleCRM::History do
604
549
  describe '#persisted?' do
605
550
  context 'when the history item is persisted' do
606
551
  let(:history) { CapsuleCRM::History.new(id: 1) }
607
-
608
552
  subject { history.persisted? }
609
553
 
610
554
  it { should be_true }
@@ -612,7 +556,6 @@ describe CapsuleCRM::History do
612
556
 
613
557
  context 'when the hitory item is not persisted' do
614
558
  let(:history) { CapsuleCRM::History.new }
615
-
616
559
  subject { history.persisted? }
617
560
 
618
561
  it { should be_false }
@@ -621,7 +564,6 @@ describe CapsuleCRM::History do
621
564
 
622
565
  describe '#to_capsule_json' do
623
566
  let(:creator) { CapsuleCRM::User.new(username: Faker::Name.name) }
624
-
625
567
  let(:history) do
626
568
  CapsuleCRM::History.new(
627
569
  type: 'Note', entry_date: Time.now, creator: creator,
@@ -629,26 +571,23 @@ describe CapsuleCRM::History do
629
571
  participants: [participant]
630
572
  )
631
573
  end
632
-
633
574
  let(:participant) do
634
575
  CapsuleCRM::Participant.new(
635
576
  name: Faker::Name.name, email_address: Faker::Internet.email,
636
577
  role: 'TO'
637
578
  )
638
579
  end
639
-
640
- subject { history.to_capsule_json }
641
-
642
580
  let(:participants_json) { subject[:historyItem]['participants'] }
581
+ subject { history.to_capsule_json }
643
582
 
644
- it { subject.keys.first.should eql(:historyItem) }
583
+ it { expect(subject.keys.first).to eql(:historyItem) }
645
584
 
646
- it { subject[:historyItem]['entryDate'].should eql(history.entry_date) }
585
+ it { expect(subject[:historyItem]['entryDate']).to eql(history.entry_date) }
647
586
 
648
- it { subject[:historyItem]['creator'].should eql(creator.username) }
587
+ it { expect(subject[:historyItem]['creator']).to eql(creator.username) }
649
588
 
650
- it { subject[:historyItem]['note'].should eql(history.note) }
589
+ it { expect(subject[:historyItem]['note']).to eql(history.note) }
651
590
 
652
- it { subject[:historyItem].should have_key('note') }
591
+ it { expect(subject[:historyItem]).to have_key('note') }
653
592
  end
654
593
  end
metadata CHANGED
@@ -1,237 +1,237 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capsule_crm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Beedle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-24 00:00:00.000000000 Z
11
+ date: 2014-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: faraday_middleware
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: virtus
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.5.4
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.5.4
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: coveralls
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: cucumber
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: fabrication
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: faker
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: guard
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: guard-bundler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: guard-rspec
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rb-fsevent
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - '>='
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - '>='
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rspec
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - '>='
199
+ - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '0'
201
+ version: 2.14.0
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - '>='
206
+ - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '0'
208
+ version: 2.14.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: shoulda-matchers
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - '>='
213
+ - - ">="
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - '>='
220
+ - - ">="
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: webmock
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - '>='
227
+ - - ">="
228
228
  - !ruby/object:Gem::Version
229
229
  version: '0'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - '>='
234
+ - - ">="
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
237
  description: Gem to communicate with CapsuleCRM
@@ -241,9 +241,9 @@ executables: []
241
241
  extensions: []
242
242
  extra_rdoc_files: []
243
243
  files:
244
- - .gitignore
245
- - .rspec
246
- - .travis.yml
244
+ - ".gitignore"
245
+ - ".rspec"
246
+ - ".travis.yml"
247
247
  - CHANGELOG.md
248
248
  - Gemfile
249
249
  - Guardfile
@@ -272,6 +272,7 @@ files:
272
272
  - lib/capsule_crm/custom_field.rb
273
273
  - lib/capsule_crm/email.rb
274
274
  - lib/capsule_crm/errors/record_invalid.rb
275
+ - lib/capsule_crm/errors/unauthorized.rb
275
276
  - lib/capsule_crm/hash_helper.rb
276
277
  - lib/capsule_crm/history.rb
277
278
  - lib/capsule_crm/milestone.rb
@@ -353,17 +354,17 @@ require_paths:
353
354
  - lib
354
355
  required_ruby_version: !ruby/object:Gem::Requirement
355
356
  requirements:
356
- - - '>='
357
+ - - ">="
357
358
  - !ruby/object:Gem::Version
358
359
  version: 1.9.3
359
360
  required_rubygems_version: !ruby/object:Gem::Requirement
360
361
  requirements:
361
- - - '>='
362
+ - - ">="
362
363
  - !ruby/object:Gem::Version
363
364
  version: '0'
364
365
  requirements: []
365
366
  rubyforge_project:
366
- rubygems_version: 2.1.5
367
+ rubygems_version: 2.2.0.rc.1
367
368
  signing_key:
368
369
  specification_version: 4
369
370
  summary: Gem to communicate with CapsuleCRM
@@ -424,4 +425,3 @@ test_files:
424
425
  - spec/support/task.json
425
426
  - spec/support/task_categories.json
426
427
  - spec/support/tracks.json
427
- has_rdoc: