basecrm 0.1.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +2 -2
  3. data/README.md +273 -17
  4. data/lib/basecrm.rb +185 -1
  5. data/lib/basecrm/configuration.rb +59 -0
  6. data/lib/basecrm/envelope.rb +7 -0
  7. data/lib/basecrm/errors.rb +65 -0
  8. data/lib/basecrm/http_client.rb +91 -0
  9. data/lib/basecrm/middlewares/oauth_bearer_token.rb +18 -0
  10. data/lib/basecrm/middlewares/raise_error.rb +31 -0
  11. data/lib/basecrm/model.rb +6 -0
  12. data/lib/basecrm/models/account.rb +31 -0
  13. data/lib/basecrm/models/address.rb +22 -0
  14. data/lib/basecrm/models/associated_contact.rb +19 -0
  15. data/lib/basecrm/models/contact.rb +88 -0
  16. data/lib/basecrm/models/deal.rb +58 -0
  17. data/lib/basecrm/models/lead.rb +79 -0
  18. data/lib/basecrm/models/loss_reason.rb +22 -0
  19. data/lib/basecrm/models/note.rb +28 -0
  20. data/lib/basecrm/models/pipeline.rb +19 -0
  21. data/lib/basecrm/models/source.rb +22 -0
  22. data/lib/basecrm/models/stage.rb +34 -0
  23. data/lib/basecrm/models/tag.rb +25 -0
  24. data/lib/basecrm/models/task.rb +46 -0
  25. data/lib/basecrm/models/user.rb +31 -0
  26. data/lib/basecrm/paginated_resource.rb +32 -0
  27. data/lib/basecrm/services/accounts_service.rb +33 -0
  28. data/lib/basecrm/services/associated_contacts_service.rb +91 -0
  29. data/lib/basecrm/services/contacts_service.rb +138 -0
  30. data/lib/basecrm/services/deals_service.rb +137 -0
  31. data/lib/basecrm/services/leads_service.rb +140 -0
  32. data/lib/basecrm/services/loss_reasons_service.rb +133 -0
  33. data/lib/basecrm/services/notes_service.rb +134 -0
  34. data/lib/basecrm/services/pipelines_service.rb +50 -0
  35. data/lib/basecrm/services/sources_service.rb +133 -0
  36. data/lib/basecrm/services/stages_service.rb +52 -0
  37. data/lib/basecrm/services/tags_service.rb +132 -0
  38. data/lib/basecrm/services/tasks_service.rb +141 -0
  39. data/lib/basecrm/services/users_service.rb +83 -0
  40. data/lib/basecrm/version.rb +3 -0
  41. data/spec/factories/associated_contact.rb +14 -0
  42. data/spec/factories/contact.rb +27 -0
  43. data/spec/factories/deal.rb +17 -0
  44. data/spec/factories/lead.rb +26 -0
  45. data/spec/factories/loss_reason.rb +11 -0
  46. data/spec/factories/note.rb +13 -0
  47. data/spec/factories/source.rb +11 -0
  48. data/spec/factories/tag.rb +12 -0
  49. data/spec/factories/task.rb +15 -0
  50. data/spec/services/accounts_service_spec.rb +16 -0
  51. data/spec/services/associated_contacts_service_spec.rb +43 -0
  52. data/spec/services/contacts_service_spec.rb +58 -0
  53. data/spec/services/deals_service_spec.rb +58 -0
  54. data/spec/services/leads_service_spec.rb +58 -0
  55. data/spec/services/loss_reasons_service_spec.rb +58 -0
  56. data/spec/services/notes_service_spec.rb +58 -0
  57. data/spec/services/pipelines_service_spec.rb +23 -0
  58. data/spec/services/sources_service_spec.rb +58 -0
  59. data/spec/services/stages_service_spec.rb +23 -0
  60. data/spec/services/tags_service_spec.rb +58 -0
  61. data/spec/services/tasks_service_spec.rb +58 -0
  62. data/spec/services/users_service_spec.rb +39 -0
  63. data/spec/spec_helper.rb +24 -12
  64. data/spec/support/client_helpers.rb +19 -0
  65. metadata +160 -71
  66. data/.gitignore +0 -20
  67. data/.rspec +0 -2
  68. data/.travis.yml +0 -6
  69. data/Gemfile +0 -4
  70. data/Rakefile +0 -8
  71. data/basecrm.gemspec +0 -23
  72. data/lib/base_crm.rb +0 -24
  73. data/lib/base_crm/account.rb +0 -11
  74. data/lib/base_crm/api_client_ext.rb +0 -6
  75. data/lib/base_crm/config.rb +0 -21
  76. data/lib/base_crm/contact.rb +0 -44
  77. data/lib/base_crm/custom_fieldable.rb +0 -32
  78. data/lib/base_crm/deal.rb +0 -50
  79. data/lib/base_crm/forecasting.rb +0 -12
  80. data/lib/base_crm/lead.rb +0 -36
  81. data/lib/base_crm/note.rb +0 -15
  82. data/lib/base_crm/noteable.rb +0 -15
  83. data/lib/base_crm/related_object_scope.rb +0 -35
  84. data/lib/base_crm/resource.rb +0 -14
  85. data/lib/base_crm/session.rb +0 -48
  86. data/lib/base_crm/source.rb +0 -14
  87. data/lib/base_crm/task.rb +0 -16
  88. data/lib/base_crm/taskable.rb +0 -15
  89. data/lib/base_crm/version.rb +0 -3
  90. data/spec/base_crm/account_spec.rb +0 -20
  91. data/spec/base_crm/contact_spec.rb +0 -92
  92. data/spec/base_crm/deal_spec.rb +0 -138
  93. data/spec/base_crm/forecasting_spec.rb +0 -34
  94. data/spec/base_crm/lead_spec.rb +0 -63
  95. data/spec/base_crm/note_spec.rb +0 -20
  96. data/spec/base_crm/resource_mixin_spec.rb +0 -26
  97. data/spec/base_crm/session_spec.rb +0 -97
  98. data/spec/base_crm/source_spec.rb +0 -20
  99. data/spec/base_crm/task_spec.rb +0 -21
  100. data/spec/support/noteable_shared_examples.rb +0 -64
  101. data/spec/support/taskable_shared_examples.rb +0 -69
@@ -0,0 +1,17 @@
1
+ FactoryGirl.define do
2
+ factory :deal, class: BaseCRM::Deal do
3
+
4
+ currency { "EUR" }
5
+ dropbox_email { "dropbox@4e627bcd.deals.futuresimple.com" }
6
+ hot { true }
7
+ name { Faker::Name.name }
8
+ tags { ["important"] }
9
+ value { 1000 }
10
+
11
+ contact_id { contact.id }
12
+
13
+ to_create do |deal|
14
+ client.deals.create(deal)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,26 @@
1
+ FactoryGirl.define do
2
+ factory :lead, class: BaseCRM::Lead do
3
+
4
+ description { "I know him via Tom" }
5
+ email { "mark@designservices.com" }
6
+ facebook { "mjohnson" }
7
+ fax { "+44-208-1234567" }
8
+ first_name { Faker::Name.first_name }
9
+ industry { "Design Services" }
10
+ last_name { Faker::Name.last_name }
11
+ linkedin { "mjohnson" }
12
+ mobile { "508-778-6516" }
13
+ phone { "508-778-6516" }
14
+ skype { "mjohnson" }
15
+ status { "Unqualified" }
16
+ tags { ["important"] }
17
+ title { "CEO" }
18
+ twitter { "mjohnson" }
19
+ website { "www.designservices.com" }
20
+
21
+
22
+ to_create do |lead|
23
+ client.leads.create(lead)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :loss_reason, class: BaseCRM::LossReason do
3
+
4
+ name { Faker::Name.name }
5
+
6
+
7
+ to_create do |loss_reason|
8
+ client.loss_reasons.create(loss_reason)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ FactoryGirl.define do
2
+ factory :note, class: BaseCRM::Note do
3
+
4
+ content { "Highly important." }
5
+
6
+ resource_id { contact.id }
7
+ resource_type { :contact }
8
+
9
+ to_create do |note|
10
+ client.notes.create(note)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ factory :source, class: BaseCRM::Source do
3
+
4
+ name { Faker::Name.name }
5
+
6
+
7
+ to_create do |source|
8
+ client.sources.create(source)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ FactoryGirl.define do
2
+ factory :tag, class: BaseCRM::Tag do
3
+
4
+ name { Faker::Name.name }
5
+
6
+ resource_type { :contact }
7
+
8
+ to_create do |tag|
9
+ client.tags.create(tag)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ FactoryGirl.define do
2
+ factory :task, class: BaseCRM::Task do
3
+
4
+ content { "Contact Tom" }
5
+ due_date { "2014-09-27T16:32:56+00:00" }
6
+ remind_at { "2014-09-29T15:32:56+00:00" }
7
+
8
+ resource_id { contact.id }
9
+ resource_type { :contact }
10
+
11
+ to_create do |task|
12
+ client.tasks.create(task)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::AccountsService do
4
+ describe 'Responds to' do
5
+ subject { client.accounts }
6
+
7
+ it { should respond_to :self }
8
+
9
+ end
10
+
11
+ describe :self do
12
+ it "returns instance of Account class" do
13
+ expect(client.accounts.self).to be_instance_of BaseCRM::Account
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::AssociatedContactsService do
4
+ describe 'Responds to' do
5
+ subject { client.associated_contacts }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :where }
11
+
12
+ end
13
+
14
+ describe :all do
15
+ it "returns a PaginatedResource" do
16
+ deal_id = create(:deal).id
17
+ expect(client.associated_contacts.all(deal_id)).to be_instance_of BaseCRM::PaginatedResource
18
+ end
19
+ end
20
+
21
+ describe :where do
22
+ it "returns an array" do
23
+ deal_id = create(:deal).id
24
+ expect(client.associated_contacts.where(deal_id, page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of AssociatedContact class" do
30
+ deal_id = create(:deal).id
31
+ @associated_contact = build(:associated_contact)
32
+ expect(client.associated_contacts.create(deal_id, @associated_contact)).to be_instance_of BaseCRM::AssociatedContact
33
+ end
34
+ end
35
+
36
+ describe :destroy do
37
+ it "returns true on success" do
38
+ deal_id = create(:deal).id
39
+ @associated_contact = create(:associated_contact, deal_id: deal_id)
40
+ expect(client.associated_contacts.destroy(deal_id, @associated_contact.contact_id)).to be_truthy
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::ContactsService do
4
+ describe 'Responds to' do
5
+ subject { client.contacts }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :find }
11
+ it { should respond_to :update }
12
+ it { should respond_to :where }
13
+
14
+ end
15
+
16
+ describe :all do
17
+ it "returns a PaginatedResource" do
18
+ expect(client.contacts.all()).to be_instance_of BaseCRM::PaginatedResource
19
+ end
20
+ end
21
+
22
+ describe :where do
23
+ it "returns an array" do
24
+ expect(client.contacts.where(page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of Contact class" do
30
+ @contact = build(:contact)
31
+ expect(client.contacts.create(@contact)).to be_instance_of BaseCRM::Contact
32
+ end
33
+ end
34
+
35
+ describe :find do
36
+ before :each do
37
+ @contact = create(:contact)
38
+ end
39
+
40
+ it "returns an instance of Contact class" do
41
+ expect(client.contacts.find(@contact.id)).to be_instance_of BaseCRM::Contact
42
+ end
43
+ end
44
+
45
+ describe :update do
46
+ it "returns an updated instance of Contact class" do
47
+ @contact = create(:contact)
48
+ expect(client.contacts.update(@contact)).to be_instance_of BaseCRM::Contact
49
+ end
50
+ end
51
+
52
+ describe :destroy do
53
+ it "returns true on success" do
54
+ @contact = create(:contact)
55
+ expect(client.contacts.destroy(@contact.id)).to be_truthy
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::DealsService do
4
+ describe 'Responds to' do
5
+ subject { client.deals }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :find }
11
+ it { should respond_to :update }
12
+ it { should respond_to :where }
13
+
14
+ end
15
+
16
+ describe :all do
17
+ it "returns a PaginatedResource" do
18
+ expect(client.deals.all()).to be_instance_of BaseCRM::PaginatedResource
19
+ end
20
+ end
21
+
22
+ describe :where do
23
+ it "returns an array" do
24
+ expect(client.deals.where(page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of Deal class" do
30
+ @deal = build(:deal)
31
+ expect(client.deals.create(@deal)).to be_instance_of BaseCRM::Deal
32
+ end
33
+ end
34
+
35
+ describe :find do
36
+ before :each do
37
+ @deal = create(:deal)
38
+ end
39
+
40
+ it "returns an instance of Deal class" do
41
+ expect(client.deals.find(@deal.id)).to be_instance_of BaseCRM::Deal
42
+ end
43
+ end
44
+
45
+ describe :update do
46
+ it "returns an updated instance of Deal class" do
47
+ @deal = create(:deal)
48
+ expect(client.deals.update(@deal)).to be_instance_of BaseCRM::Deal
49
+ end
50
+ end
51
+
52
+ describe :destroy do
53
+ it "returns true on success" do
54
+ @deal = create(:deal)
55
+ expect(client.deals.destroy(@deal.id)).to be_truthy
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::LeadsService do
4
+ describe 'Responds to' do
5
+ subject { client.leads }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :find }
11
+ it { should respond_to :update }
12
+ it { should respond_to :where }
13
+
14
+ end
15
+
16
+ describe :all do
17
+ it "returns a PaginatedResource" do
18
+ expect(client.leads.all()).to be_instance_of BaseCRM::PaginatedResource
19
+ end
20
+ end
21
+
22
+ describe :where do
23
+ it "returns an array" do
24
+ expect(client.leads.where(page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of Lead class" do
30
+ @lead = build(:lead)
31
+ expect(client.leads.create(@lead)).to be_instance_of BaseCRM::Lead
32
+ end
33
+ end
34
+
35
+ describe :find do
36
+ before :each do
37
+ @lead = create(:lead)
38
+ end
39
+
40
+ it "returns an instance of Lead class" do
41
+ expect(client.leads.find(@lead.id)).to be_instance_of BaseCRM::Lead
42
+ end
43
+ end
44
+
45
+ describe :update do
46
+ it "returns an updated instance of Lead class" do
47
+ @lead = create(:lead)
48
+ expect(client.leads.update(@lead)).to be_instance_of BaseCRM::Lead
49
+ end
50
+ end
51
+
52
+ describe :destroy do
53
+ it "returns true on success" do
54
+ @lead = create(:lead)
55
+ expect(client.leads.destroy(@lead.id)).to be_truthy
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::LossReasonsService do
4
+ describe 'Responds to' do
5
+ subject { client.loss_reasons }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :find }
11
+ it { should respond_to :update }
12
+ it { should respond_to :where }
13
+
14
+ end
15
+
16
+ describe :all do
17
+ it "returns a PaginatedResource" do
18
+ expect(client.loss_reasons.all()).to be_instance_of BaseCRM::PaginatedResource
19
+ end
20
+ end
21
+
22
+ describe :where do
23
+ it "returns an array" do
24
+ expect(client.loss_reasons.where(page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of LossReason class" do
30
+ @loss_reason = build(:loss_reason)
31
+ expect(client.loss_reasons.create(@loss_reason)).to be_instance_of BaseCRM::LossReason
32
+ end
33
+ end
34
+
35
+ describe :find do
36
+ before :each do
37
+ @loss_reason = create(:loss_reason)
38
+ end
39
+
40
+ it "returns an instance of LossReason class" do
41
+ expect(client.loss_reasons.find(@loss_reason.id)).to be_instance_of BaseCRM::LossReason
42
+ end
43
+ end
44
+
45
+ describe :update do
46
+ it "returns an updated instance of LossReason class" do
47
+ @loss_reason = create(:loss_reason)
48
+ expect(client.loss_reasons.update(@loss_reason)).to be_instance_of BaseCRM::LossReason
49
+ end
50
+ end
51
+
52
+ describe :destroy do
53
+ it "returns true on success" do
54
+ @loss_reason = create(:loss_reason)
55
+ expect(client.loss_reasons.destroy(@loss_reason.id)).to be_truthy
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe BaseCRM::NotesService do
4
+ describe 'Responds to' do
5
+ subject { client.notes }
6
+
7
+ it { should respond_to :all }
8
+ it { should respond_to :create }
9
+ it { should respond_to :destroy }
10
+ it { should respond_to :find }
11
+ it { should respond_to :update }
12
+ it { should respond_to :where }
13
+
14
+ end
15
+
16
+ describe :all do
17
+ it "returns a PaginatedResource" do
18
+ expect(client.notes.all()).to be_instance_of BaseCRM::PaginatedResource
19
+ end
20
+ end
21
+
22
+ describe :where do
23
+ it "returns an array" do
24
+ expect(client.notes.where(page: 1)).to be_an Array
25
+ end
26
+ end
27
+
28
+ describe :create do
29
+ it "returns instance of Note class" do
30
+ @note = build(:note)
31
+ expect(client.notes.create(@note)).to be_instance_of BaseCRM::Note
32
+ end
33
+ end
34
+
35
+ describe :find do
36
+ before :each do
37
+ @note = create(:note)
38
+ end
39
+
40
+ it "returns an instance of Note class" do
41
+ expect(client.notes.find(@note.id)).to be_instance_of BaseCRM::Note
42
+ end
43
+ end
44
+
45
+ describe :update do
46
+ it "returns an updated instance of Note class" do
47
+ @note = create(:note)
48
+ expect(client.notes.update(@note)).to be_instance_of BaseCRM::Note
49
+ end
50
+ end
51
+
52
+ describe :destroy do
53
+ it "returns true on success" do
54
+ @note = create(:note)
55
+ expect(client.notes.destroy(@note.id)).to be_truthy
56
+ end
57
+ end
58
+ end