capsule_crm 0.0.4 → 0.0.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.
@@ -21,6 +21,76 @@ describe CapsuleCRM::Opportunity do
21
21
  it { should_not validate_presence_of(:milestone_id) }
22
22
  end
23
23
 
24
+ describe '#party=' do
25
+ let(:opportunity) { Fabricate.build(:opportunity, party: nil) }
26
+
27
+ let(:person) { CapsuleCRM::Person.new(id: 2) }
28
+
29
+ before { opportunity.party= person }
30
+
31
+ it 'should set the party_id' do
32
+ opportunity.party_id.should eql(2)
33
+ end
34
+
35
+ it 'should set the party' do
36
+ opportunity.party.should eql(person)
37
+ end
38
+ end
39
+
40
+ describe '#party' do
41
+ let(:person) { CapsuleCRM::Person.new(id: 1) }
42
+
43
+ let(:organization) { CapsuleCRM::Organization.new(id: 2) }
44
+
45
+ let(:opportunity) { Fabricate.build(:opportunity, party: nil) }
46
+
47
+ context 'when the party is set' do
48
+ context 'when the party is a person' do
49
+ before { opportunity.party = person }
50
+
51
+ it { opportunity.party.should eql(person) }
52
+ end
53
+
54
+ context 'when the party is an organization' do
55
+ before { opportunity.party = organization }
56
+
57
+ it { opportunity.party.should eql(organization) }
58
+ end
59
+ end
60
+
61
+ context 'when the party_id is set' do
62
+ context 'when the party is a person' do
63
+ before do
64
+ stub_request(:get, /.*/).
65
+ to_return(body: File.read('spec/support/person.json'))
66
+ opportunity.party_id = person.id
67
+ end
68
+
69
+ it 'should return the party' do
70
+ opportunity.party.should be_a(CapsuleCRM::Person)
71
+ end
72
+
73
+ it { opportunity.party.id.should eql(opportunity.party_id) }
74
+ end
75
+
76
+ context 'when the party is an opportunity' do
77
+ before do
78
+ stub_request(:get, /.*/).
79
+ to_return(body: File.read('spec/support/organisation.json'))
80
+ opportunity.party_id = organization.id
81
+ end
82
+
83
+ it { opportunity.party.should be_a(CapsuleCRM::Organization) }
84
+
85
+ it { opportunity.party.id.should eql(opportunity.party_id) }
86
+ end
87
+ end
88
+
89
+ context 'when the party_id is nil' do
90
+ it { opportunity.party.should be_nil }
91
+ end
92
+ end
93
+
24
94
  describe '.all' do
25
95
  before do
26
96
  stub_request(:get, /\/api\/opportunity$/).
@@ -94,15 +164,23 @@ describe CapsuleCRM::Opportunity do
94
164
  describe '.create' do
95
165
  context 'when the opportunity is valid' do
96
166
  before do
97
- stub_request(:post, /.*/).to_return(headers: {
167
+ stub_request(:post, request_path).to_return(headers: {
98
168
  'Location' => 'https://sample.capsulecrm.com/api/opportunity/59'
99
169
  })
100
170
  end
101
171
 
172
+ let(:request_path) do
173
+ [
174
+ 'https://1234:@company.capsulecrm.com/api/party/',
175
+ opportunity_attributes[:party_id],
176
+ '/opportunity'
177
+ ].join
178
+ end
179
+
180
+ let(:opportunity_attributes) { Fabricate.attributes_for(:opportunity) }
181
+
102
182
  subject do
103
- CapsuleCRM::Opportunity.create(
104
- name: 'Test Opportunity', milestone_id: 1
105
- )
183
+ CapsuleCRM::Opportunity.create opportunity_attributes
106
184
  end
107
185
 
108
186
  it { should be_a(CapsuleCRM::Opportunity) }
@@ -128,9 +206,7 @@ describe CapsuleCRM::Opportunity do
128
206
  end
129
207
 
130
208
  subject do
131
- CapsuleCRM::Opportunity.create(
132
- name: 'Test Opportunity', milestone_id: 1
133
- )
209
+ CapsuleCRM::Opportunity.create Fabricate.attributes_for(:opportunity)
134
210
  end
135
211
 
136
212
  it { should be_a(CapsuleCRM::Opportunity) }
@@ -207,7 +283,7 @@ describe CapsuleCRM::Opportunity do
207
283
  end
208
284
 
209
285
  let(:opportunity) do
210
- CapsuleCRM::Opportunity.new(name: 'Test', milestone_id: 1)
286
+ Fabricate.build(:opportunity)
211
287
  end
212
288
 
213
289
  before { opportunity.save }
@@ -230,7 +306,7 @@ describe CapsuleCRM::Opportunity do
230
306
  end
231
307
 
232
308
  let(:opportunity) do
233
- CapsuleCRM::Opportunity.new(name: 'Test', milestone_id: 1)
309
+ Fabricate.build(:opportunity)
234
310
  end
235
311
 
236
312
  before { opportunity.save! }
@@ -314,4 +390,32 @@ describe CapsuleCRM::Opportunity do
314
390
  subject.all? { |item| item.is_a?(CapsuleCRM::Opportunity) }.should be_true
315
391
  end
316
392
  end
393
+
394
+ describe '#destroy' do
395
+ let(:opportunity) do
396
+ CapsuleCRM::Opportunity.new(id: 1)
397
+ end
398
+
399
+ before do
400
+ stub_request(:delete, /.*/).to_return(status: 200)
401
+ opportunity.destroy
402
+ end
403
+
404
+ it { opportunity.id.should be_blank }
405
+
406
+ it { opportunity.should_not be_persisted }
407
+ end
408
+
409
+ describe '.deleted' do
410
+ before do
411
+ stub_request(:get, /.*/).
412
+ to_return(body: File.read('spec/support/deleted_opportunities.json'))
413
+ end
414
+
415
+ subject { CapsuleCRM::Opportunity.deleted(1.week.ago) }
416
+
417
+ it { should be_a(Array) }
418
+
419
+ it { subject.length.should eql(2) }
420
+ end
317
421
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe CapsuleCRM::Organization do
4
+ before { configure }
5
+
6
+ describe '#people' do
7
+ let(:organization) { Fabricate.build(:organization, id: 1) }
8
+
9
+ subject { organization.people }
10
+
11
+ before do
12
+ stub_request(
13
+ :get,
14
+ "https://1234:@company.capsulecrm.com/api/party/#{organization.id}/people"
15
+ ).to_return(body: File.read('spec/support/all_people.json'))
16
+ end
17
+
18
+ it { should be_a(Array) }
19
+
20
+ it do
21
+ subject.all? { |item| item.is_a?(CapsuleCRM::Person) }.should be_true
22
+ end
23
+ end
24
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'bundler/setup'
3
- require 'webmock/rspec'
4
- require 'support/helpers'
3
+
5
4
  require 'capsule_crm'
6
- require 'shoulda-matchers'
7
5
  require 'coveralls'
6
+ require 'fabrication'
7
+ require 'shoulda-matchers'
8
+ require 'support/helpers'
9
+ require 'webmock/rspec'
8
10
 
9
11
  Coveralls.wear!
10
12
 
@@ -0,0 +1,16 @@
1
+ {
2
+ "parties": {
3
+ "person": [
4
+ {
5
+ "id": "100",
6
+ "lastName": "Schmidt",
7
+ "firstName": "Eric"
8
+ },
9
+ {
10
+ "id": "101",
11
+ "lastName": "Page",
12
+ "firstName": "Larry "
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "deletedOpportunities": {
3
+ "deletedOpportunity": [
4
+ {
5
+ "id": "1",
6
+ "deletedDate": "2011-11-16T16:35:31Z"
7
+ },
8
+ {
9
+ "id": "6",
10
+ "deletedDate": "2011-12-31T11:16:19Z"
11
+ }
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "organisation": {
3
+ "id": "50",
4
+ "createdOn": "2011-09-14T15:22:01Z",
5
+ "name": "Google Inc",
6
+ "updatedOn": "2011-12-14T10:45:46Z"
7
+ }
8
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capsule_crm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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-05-05 00:00:00.000000000 Z
11
+ date: 2013-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fabrication
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: guard
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -212,6 +226,9 @@ files:
212
226
  - lib/capsule_crm.rb
213
227
  - lib/capsule_crm/address.rb
214
228
  - lib/capsule_crm/associations.rb
229
+ - lib/capsule_crm/associations/belongs_to.rb
230
+ - lib/capsule_crm/associations/has_many.rb
231
+ - lib/capsule_crm/associations/has_many_proxy.rb
215
232
  - lib/capsule_crm/capsule_jsonable.rb
216
233
  - lib/capsule_crm/configuration.rb
217
234
  - lib/capsule_crm/connection.rb
@@ -228,16 +245,24 @@ files:
228
245
  - lib/capsule_crm/results_proxy.rb
229
246
  - lib/capsule_crm/version.rb
230
247
  - lib/capsule_crm/website.rb
248
+ - spec/fabricators/opportunity_fabricator.rb
249
+ - spec/fabricators/organization_fabricator.rb
231
250
  - spec/lib/capsule_crm/address_spec.rb
251
+ - spec/lib/capsule_crm/associations/has_many_proxy_spec.rb
252
+ - spec/lib/capsule_crm/associations/has_many_spec.rb
232
253
  - spec/lib/capsule_crm/contacts_spec.rb
233
254
  - spec/lib/capsule_crm/email_spec.rb
234
255
  - spec/lib/capsule_crm/opportunity_spec.rb
256
+ - spec/lib/capsule_crm/organization_spec.rb
235
257
  - spec/lib/capsule_crm/person_spec.rb
236
258
  - spec/spec_helper.rb
237
259
  - spec/support/all_opportunities.json
238
260
  - spec/support/all_parties.json
261
+ - spec/support/all_people.json
262
+ - spec/support/deleted_opportunities.json
239
263
  - spec/support/helpers.rb
240
264
  - spec/support/opportunity.json
265
+ - spec/support/organisation.json
241
266
  - spec/support/person.json
242
267
  homepage: ''
243
268
  licenses: []
@@ -264,14 +289,22 @@ specification_version: 4
264
289
  summary: Gem to communicate with CapsuleCRM
265
290
  test_files:
266
291
  - features/organizations.feature
292
+ - spec/fabricators/opportunity_fabricator.rb
293
+ - spec/fabricators/organization_fabricator.rb
267
294
  - spec/lib/capsule_crm/address_spec.rb
295
+ - spec/lib/capsule_crm/associations/has_many_proxy_spec.rb
296
+ - spec/lib/capsule_crm/associations/has_many_spec.rb
268
297
  - spec/lib/capsule_crm/contacts_spec.rb
269
298
  - spec/lib/capsule_crm/email_spec.rb
270
299
  - spec/lib/capsule_crm/opportunity_spec.rb
300
+ - spec/lib/capsule_crm/organization_spec.rb
271
301
  - spec/lib/capsule_crm/person_spec.rb
272
302
  - spec/spec_helper.rb
273
303
  - spec/support/all_opportunities.json
274
304
  - spec/support/all_parties.json
305
+ - spec/support/all_people.json
306
+ - spec/support/deleted_opportunities.json
275
307
  - spec/support/helpers.rb
276
308
  - spec/support/opportunity.json
309
+ - spec/support/organisation.json
277
310
  - spec/support/person.json