sf_integrator 0.0.9 → 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 +4 -4
- data/README.md +34 -7
- data/lib/sf_integrator/lead.rb +28 -8
- data/lib/sf_integrator/version.rb +1 -1
- data/lib/sf_integrator.rb +0 -1
- data/sf_integrator.gemspec +3 -3
- data/spec/integrator_spec.rb +4 -4
- data/spec/lead_spec.rb +23 -29
- data/spec/version_spec.rb +1 -1
- metadata +8 -11
- data/lib/generators/sf_integrator/install_generator.rb +0 -9
- data/lib/generators/sf_integrator/templates/sf_integrator.rb +0 -6
- data/lib/sf_integrator/engine.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bffccaca92dbd74e24436fe478ecd36a2e4fcc7d
|
4
|
+
data.tar.gz: a55fb45ea02b2f25cf709f3e4311723fb43aa964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 693aff9780a97e9d454a6a615d37e940528522979f7367663f6384ce5e4b2715e423c334179034e1a383a6a9e36608a901d45dbcc835e2d8b383d9ccc51e7743
|
7
|
+
data.tar.gz: ae3055a74642e8658c13691b3ac6d2cf41a247bd1a544549ae083f970d0ded5d0e01c2ad3db060afe350131cbbe170a9c688a0ee4ac73b37be04c58c2384ae2c
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SfIntegrator
|
2
2
|
|
3
|
-
|
3
|
+
TODO: Write a gem description
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -16,23 +16,50 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install sf_integrator
|
18
18
|
|
19
|
-
##
|
19
|
+
## Configuration
|
20
20
|
|
21
|
-
|
21
|
+
First, create a new file in called `sf_integrator.rb` in `config/initializers` path.
|
22
22
|
|
23
|
-
|
23
|
+
In this file, you put this configs:
|
24
24
|
|
25
|
-
|
25
|
+
```ruby
|
26
|
+
SfIntegrator::Integrator.configure do |config|
|
27
|
+
config.username = 'YOUR_SALESFORCE_EMAIL'
|
28
|
+
config.password = 'YOUR_SALESFORCE_PASSWORD + YOUR_SALESFORCE_SECURITY_TOKEN'
|
29
|
+
config.client_id = 'YOUR_CUSTOMER_KEY'
|
30
|
+
config.client_secret = 'YOUR_CLIENT_SECRET'
|
31
|
+
end
|
32
|
+
```
|
26
33
|
|
27
|
-
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
After that you create a simple ruby class in `models` directory that inherits from `SfIntegrator::Lead`
|
28
37
|
|
29
38
|
```ruby
|
30
39
|
class Lead < SfIntegrator::Lead
|
31
40
|
end
|
32
41
|
```
|
33
42
|
|
34
|
-
|
43
|
+
In you controller you can use like a `ActiveRecord` model
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
# app/controllers/leads_controller.rb
|
47
|
+
|
48
|
+
def index
|
49
|
+
@leads = Lead.all
|
50
|
+
end
|
51
|
+
def new
|
52
|
+
@lead = Lead.new
|
53
|
+
end
|
54
|
+
|
55
|
+
def create
|
56
|
+
params = { first_name: 'Cezer', last_name: 'Filho', email: 'luiz.cezer@yahoo.com.br', company: 'Google', job_title: 'Developer', phone: '5555555', website: 'http://github.com/lccezinha' }
|
57
|
+
@lead = Lead.new(params)
|
58
|
+
@lead.create
|
59
|
+
end
|
60
|
+
```
|
35
61
|
|
62
|
+
The fields `first_name, last_name, email, company, job_title, phone, website` are all required.
|
36
63
|
|
37
64
|
## Contributing
|
38
65
|
|
data/lib/sf_integrator/lead.rb
CHANGED
@@ -6,21 +6,41 @@ module SfIntegrator
|
|
6
6
|
|
7
7
|
validates :first_name, :last_name, :email, :company, :job_title, :phone, :website, presence: true
|
8
8
|
|
9
|
-
attr_accessor :
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@
|
9
|
+
attr_accessor :first_name, :last_name, :email, :company, :job_title, :phone, :website
|
10
|
+
|
11
|
+
def initialize(args)
|
12
|
+
@first_name = args[:first_name]
|
13
|
+
@last_name = args[:last_name]
|
14
|
+
@email = args[:email]
|
15
|
+
@company = args[:company]
|
16
|
+
@job_title = args[:job_title]
|
17
|
+
@phone = args[:phone]
|
18
|
+
@website = args[:website]
|
13
19
|
end
|
14
20
|
|
15
21
|
def create
|
16
|
-
params =
|
17
|
-
|
22
|
+
params = {
|
23
|
+
FirstName: first_name, LastName: last_name, Email: email,
|
24
|
+
Company: company, Title: job_title, Phone: phone, Website: website
|
25
|
+
}
|
26
|
+
self.class.client.create('Lead', params)
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.all
|
30
|
+
records = client.query('select FirstName, LastName, Email, Company, Title, Phone, Website from Lead')
|
31
|
+
records.map do |record|
|
32
|
+
attributes = {
|
33
|
+
first_name: record.FirstName, last_name: record.LastName, email: record.Email,
|
34
|
+
company: record.Company, job_title: record.Title, phone: record.Phone, website: record.Website
|
35
|
+
}
|
36
|
+
Lead.new(attributes)
|
37
|
+
end
|
18
38
|
end
|
19
39
|
|
20
40
|
private
|
21
41
|
|
22
|
-
def
|
23
|
-
|
42
|
+
def self.client
|
43
|
+
@client ||= Restforce.new(SfIntegrator::Integrator.configs.to_hash)
|
24
44
|
end
|
25
45
|
|
26
46
|
end
|
data/lib/sf_integrator.rb
CHANGED
data/sf_integrator.gemspec
CHANGED
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_runtime_dependency 'restforce', '1.4.3'
|
22
|
-
spec.add_runtime_dependency "activemodel"
|
22
|
+
spec.add_runtime_dependency "activemodel", '~> 0'
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.5"
|
25
|
-
spec.add_development_dependency "rake"
|
26
|
-
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "rake", '~> 0'
|
26
|
+
spec.add_development_dependency "rspec", '~> 0'
|
27
27
|
end
|
data/spec/integrator_spec.rb
CHANGED
@@ -14,9 +14,9 @@ describe SfIntegrator::Integrator do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
it { expect(subject.
|
18
|
-
it { expect(subject.
|
19
|
-
it { expect(subject.
|
20
|
-
it { expect(subject.
|
17
|
+
it { expect(subject.configs.username).to eql('lccezinha@gmail.com') }
|
18
|
+
it { expect(subject.configs.password).to eql('batata880AvOSHd43zql8ZIMJ1emQNjkt') }
|
19
|
+
it { expect(subject.configs.client_id).to eql('3MVG9xOCXq4ID1uFbfzoMHMM0bGJfUgjThmhEmajKOh75cvDlJn.E3g5FYx2R45vTpFRJfiPDfda5o.td8HQ2') }
|
20
|
+
it { expect(subject.configs.client_secret).to eql('3340784302062558262') }
|
21
21
|
end
|
22
22
|
end
|
data/spec/lead_spec.rb
CHANGED
@@ -2,7 +2,10 @@ require 'spec_helper'
|
|
2
2
|
require_relative '../lib/sf_integrator/lead.rb'
|
3
3
|
|
4
4
|
describe SfIntegrator::Lead do
|
5
|
-
|
5
|
+
let(:attributes) {
|
6
|
+
{ first_name: 'Cezer', last_name: 'Filho', email: 'luiz.cezer@yahoo.com.br', company: 'Google', job_title: 'Developer', phone: '5555555', website: 'http://github.com/lccezinha' }
|
7
|
+
}
|
8
|
+
subject(:lead) { described_class.new(attributes) }
|
6
9
|
|
7
10
|
context 'be instance of SfIntegrator::Lead' do
|
8
11
|
it { expect(lead).to be_an_instance_of(SfIntegrator::Lead) }
|
@@ -11,7 +14,7 @@ describe SfIntegrator::Lead do
|
|
11
14
|
it { expect(described_class.ancestors).to include(ActiveModel::Validations) }
|
12
15
|
|
13
16
|
context 'accessors' do
|
14
|
-
[:
|
17
|
+
[:first_name, :last_name, :email, :company, :job_title, :phone, :website].each do |attribute|
|
15
18
|
context attribute.to_s do
|
16
19
|
it { expect(lead).to respond_to attribute }
|
17
20
|
it { expect(lead).to respond_to "#{attribute}=" }
|
@@ -19,6 +22,16 @@ describe SfIntegrator::Lead do
|
|
19
22
|
end
|
20
23
|
end
|
21
24
|
|
25
|
+
it 'match values' do
|
26
|
+
expect(lead.first_name).to eql('Cezer')
|
27
|
+
expect(lead.last_name).to eql('Filho')
|
28
|
+
expect(lead.email).to eql('luiz.cezer@yahoo.com.br')
|
29
|
+
expect(lead.company).to eql('Google')
|
30
|
+
expect(lead.job_title).to eql('Developer')
|
31
|
+
expect(lead.phone).to eql('5555555')
|
32
|
+
expect(lead.website).to eql('http://github.com/lccezinha')
|
33
|
+
end
|
34
|
+
|
22
35
|
context 'validations' do
|
23
36
|
context 'presence_of' do
|
24
37
|
[:first_name, :last_name, :email, :company, :job_title, :phone, :website].each do |attribute|
|
@@ -31,36 +44,17 @@ describe SfIntegrator::Lead do
|
|
31
44
|
end
|
32
45
|
|
33
46
|
it { expect(lead).to respond_to(:create) }
|
47
|
+
it { expect(described_class).to respond_to(:all) }
|
34
48
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
lead.company = 'Google'
|
40
|
-
lead.job_title = 'Rails Dev'
|
41
|
-
lead.phone = '5555555'
|
42
|
-
lead.website = 'github.com/lccezinha'
|
43
|
-
|
44
|
-
expect(lead.first_name).to eql('Luiz')
|
45
|
-
expect(lead.last_name).to eql('Cezer')
|
46
|
-
expect(lead.email).to eql('lccezinha@gmail.com')
|
47
|
-
expect(lead.company).to eql('Google')
|
48
|
-
expect(lead.job_title).to eql('Rails Dev')
|
49
|
-
expect(lead.phone).to eql('5555555')
|
50
|
-
expect(lead.website).to eql('github.com/lccezinha')
|
49
|
+
context '#all' do
|
50
|
+
it 'return an array' do
|
51
|
+
expect(SfIntegrator::Lead.all).to be_an_instance_of(Array)
|
52
|
+
end
|
51
53
|
end
|
52
54
|
|
53
55
|
context 'create new lead' do
|
54
56
|
context 'when success' do
|
55
57
|
it do
|
56
|
-
lead.first_name = 'Cezer'
|
57
|
-
lead.last_name = 'Filho'
|
58
|
-
lead.email = 'luiz.cezer@gmail.com'
|
59
|
-
lead.company = 'Google'
|
60
|
-
lead.job_title = 'Rails Dev'
|
61
|
-
lead.phone = '5555555'
|
62
|
-
lead.website = 'http://github.com/lccezinha'
|
63
|
-
|
64
58
|
result = lead.create
|
65
59
|
|
66
60
|
expect(result).to match(/[a-z]|[A-Z]|[0-9]/)
|
@@ -68,10 +62,10 @@ describe SfIntegrator::Lead do
|
|
68
62
|
end
|
69
63
|
|
70
64
|
context 'when fail' do
|
65
|
+
let(:attributes) { { first_name: 'Cezer' } }
|
66
|
+
subject(:fail_lead) { described_class.new(attributes) }
|
71
67
|
it do
|
72
|
-
|
73
|
-
|
74
|
-
result = lead.create
|
68
|
+
result = fail_lead.create
|
75
69
|
|
76
70
|
expect(result).to eq(false)
|
77
71
|
end
|
data/spec/version_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sf_integrator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luiz Cezer
|
@@ -28,14 +28,14 @@ dependencies:
|
|
28
28
|
name: activemodel
|
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
|
@@ -56,28 +56,28 @@ dependencies:
|
|
56
56
|
name: rake
|
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: :development
|
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: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
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'
|
83
83
|
description: ' Integration with Sales Force leads. '
|
@@ -93,11 +93,8 @@ files:
|
|
93
93
|
- LICENSE.txt
|
94
94
|
- README.md
|
95
95
|
- Rakefile
|
96
|
-
- lib/generators/sf_integrator/install_generator.rb
|
97
|
-
- lib/generators/sf_integrator/templates/sf_integrator.rb
|
98
96
|
- lib/sf_integrator.rb
|
99
97
|
- lib/sf_integrator/configuration.rb
|
100
|
-
- lib/sf_integrator/engine.rb
|
101
98
|
- lib/sf_integrator/integrator.rb
|
102
99
|
- lib/sf_integrator/lead.rb
|
103
100
|
- lib/sf_integrator/version.rb
|
@@ -127,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
124
|
version: '0'
|
128
125
|
requirements: []
|
129
126
|
rubyforge_project:
|
130
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.4.5
|
131
128
|
signing_key:
|
132
129
|
specification_version: 4
|
133
130
|
summary: Integration with Sales Force leads.
|
@@ -1,6 +0,0 @@
|
|
1
|
-
SfIntegrator::Integrator.configure do |config|
|
2
|
-
config.username = 'YOUR_EMAIL_FROM_SALESFORCE_ACCOUNT'
|
3
|
-
config.password = 'YOUR_PASSWORD_FROM_SALESFORCE+YOUR_SECURITY_TOKEN'
|
4
|
-
config.client_id = 'YOUR_APP_CUSTOMER_KEY'
|
5
|
-
config.client_secret = 'YOUR_APP_CUSTOMER_SECRET'
|
6
|
-
end
|
data/lib/sf_integrator/engine.rb
DELETED