hubspot-api-ruby 0.9.0 → 0.10.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 +27 -9
- data/Rakefile +0 -2
- data/hubspot-api-ruby.gemspec +1 -2
- data/lib/hubspot/config.rb +4 -0
- data/lib/hubspot/engagement.rb +0 -1
- data/lib/hubspot/file.rb +2 -2
- data/lib/hubspot/railtie.rb +0 -4
- data/lib/hubspot/utils.rb +0 -30
- data/spec/lib/hubspot/blog_spec.rb +2 -7
- data/spec/lib/hubspot/config_spec.rb +24 -14
- data/spec/lib/hubspot/connection_spec.rb +44 -55
- data/spec/lib/hubspot/contact_list_spec.rb +21 -33
- data/spec/lib/hubspot/contact_spec.rb +1 -1
- data/spec/lib/hubspot/custom_event_spec.rb +5 -4
- data/spec/lib/hubspot/engagement_spec.rb +3 -11
- data/spec/lib/hubspot/event_spec.rb +3 -2
- data/spec/lib/hubspot/file_spec.rb +20 -9
- data/spec/lib/hubspot/form_spec.rb +8 -11
- data/spec/lib/hubspot/meeting_spec.rb +7 -1
- data/spec/lib/hubspot/owner_spec.rb +2 -3
- data/spec/lib/hubspot/utils_spec.rb +6 -39
- data/spec/lib/hubspot-ruby_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/vcr.rb +1 -0
- metadata +5 -9
- data/lib/tasks/hubspot.rake +0 -53
- data/spec/lib/tasks/hubspot_spec.rb +0 -119
- data/spec/support/capture_output.rb +0 -21
- data/spec/support/rake.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa748bc77ade29ff96016950aa3f3d8d9bbb309167b200319798d9edf8664bc
|
4
|
+
data.tar.gz: f09d8a29a3dbbcaa18071670e46d4c10c6727731409bbf4a7eee5099d6fd15e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac1c6faae15a4569c92d8061a270f7b55aad7c64eaf2f16bc057b31312204164771600a5ebb511a0d7e0977123baf65b22125f69832dc6b2af63637bb4689814
|
7
|
+
data.tar.gz: 37b874280272f531177bf348d038b5b6e935f2a4edefeef1c1c7d4e5e68c2613047a75ea782daa412053fb8f50c312d6a27d5f264509f758cd6eb82abf1afe8d
|
data/README.md
CHANGED
@@ -30,16 +30,16 @@ Authentication docs].
|
|
30
30
|
Below is a complete list of configuration options with the default values:
|
31
31
|
```ruby
|
32
32
|
Hubspot.configure({
|
33
|
-
|
33
|
+
access_token: <ACCESS_TOKEN>,
|
34
34
|
base_url: "https://api.hubapi.com",
|
35
35
|
portal_id: <PORTAL_ID>,
|
36
36
|
logger: Logger.new(nil),
|
37
|
-
access_token: <ACCESS_TOKEN>,
|
38
37
|
client_id: <CLIENT_ID>,
|
39
38
|
client_secret: <CLIENT_SECRET>,
|
40
39
|
redirect_uri: <REDIRECT_URI>,
|
41
40
|
read_timeout: nil, # or :timeout to set read_timeout and open_timeout
|
42
41
|
open_timeout: nil,
|
42
|
+
hapikey: <HAPIKEY>,
|
43
43
|
})
|
44
44
|
```
|
45
45
|
|
@@ -50,15 +50,20 @@ environment.
|
|
50
50
|
[HubSpot API Authentication Docs]: https://developers.hubspot.com/docs/methods/auth/oauth-overview
|
51
51
|
[HubSpot Developer Tools]: https://developers.hubspot.com/docs/devtools
|
52
52
|
|
53
|
-
## Authentication with
|
53
|
+
## Authentication with a private app access token
|
54
54
|
|
55
|
-
To set the HubSpot
|
55
|
+
To set the HubSpot access token, run the following:
|
56
56
|
```ruby
|
57
|
-
Hubspot.configure(
|
57
|
+
Hubspot.configure(access_token: 'YOUR_ACCESS_TOKEN')
|
58
58
|
```
|
59
59
|
|
60
|
-
|
61
|
-
|
60
|
+
Note: some APIs require the portal ID to be set.
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
Hubspot.configure(access_token: 'YOUR_ACCESS_TOKEN', portal_id: 'YOUR_PORTAL_ID')
|
64
|
+
```
|
65
|
+
|
66
|
+
[To learn how to create and manage private apps and access tokens, click here.](https://developers.hubspot.com/docs/api/private-apps)
|
62
67
|
|
63
68
|
## Authentication with OAuth 2.0
|
64
69
|
|
@@ -111,6 +116,18 @@ Hubspot::OAuth.refresh(refresh_token)
|
|
111
116
|
|
112
117
|
At this time, OAuth tokens are configured globally rather than on a per-connection basis.
|
113
118
|
|
119
|
+
## Authentication with an API key
|
120
|
+
|
121
|
+
NOTE: API keys are deprecated. [Read more here](https://developers.hubspot.com/changelog/upcoming-api-key-sunset) and [find out how to migrate to private apps there](https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app).
|
122
|
+
|
123
|
+
To set the HubSpot API key, aka `hapikey`, run the following:
|
124
|
+
```ruby
|
125
|
+
Hubspot.configure(hapikey: "YOUR_API_KEY")
|
126
|
+
```
|
127
|
+
|
128
|
+
If you have a HubSpot account, you can find your API key by logging in and
|
129
|
+
visiting: https://app.hubspot.com/keys/get
|
130
|
+
|
114
131
|
## Usage
|
115
132
|
|
116
133
|
Classes have been created that map to Hubspot resource types and attempt to abstract away as much of the API specific details as possible. These classes generally follow the [ActiveRecord](https://en.wikipedia.org/wiki/Active_record_pattern) pattern and general Ruby conventions. Anyone familiar with [Ruby On Rails](https://rubyonrails.org/) should find this API closely maps with familiar concepts.
|
@@ -147,10 +164,11 @@ By default, the VCR recording mode is set to `:none`, which allows recorded
|
|
147
164
|
requests to be re-played but raises for any new request. This prevents the test
|
148
165
|
suite from issuing unexpected HTTP requests.
|
149
166
|
|
150
|
-
Some requests require to be done on a live hubspot portal, you can set the `
|
167
|
+
Some requests require to be done on a live hubspot portal, you can set the `HUBSPOT_ACCESS_TOKEN` and `HUBSPOT_PORTAL_ID` environement variables, for example inside a `.env.test` file :
|
151
168
|
|
152
169
|
```
|
153
|
-
|
170
|
+
HUBSPOT_ACCESS_TOKEN=xxxx
|
171
|
+
HUBSPOT_PORTAL_ID=yyyy
|
154
172
|
```
|
155
173
|
|
156
174
|
To add a new test or update a VCR recording, run the test with the `VCR_RECORD_MODE`
|
data/Rakefile
CHANGED
data/hubspot-api-ruby.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "hubspot-api-ruby"
|
3
|
-
s.version = "0.
|
3
|
+
s.version = "0.10.0"
|
4
4
|
s.require_paths = ["lib"]
|
5
5
|
s.authors = ["Jonathan"]
|
6
6
|
s.email = ["jonathan@hoggo.com"]
|
@@ -8,7 +8,6 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.licenses = ["MIT"]
|
9
9
|
s.files = [".rspec", "Gemfile", "Guardfile", "LICENSE.txt", "README.md", "RELEASING.md", "Rakefile", "hubspot-api-ruby.gemspec"]
|
10
10
|
s.files += Dir["lib/**/*.rb"]
|
11
|
-
s.files += Dir["lib/**/*.rake"]
|
12
11
|
s.files += Dir["spec/**/*.rb"]
|
13
12
|
s.homepage = "https://github.com/captaincontrat/hubspot-api-ruby"
|
14
13
|
s.summary = "hubspot-api-ruby is a wrapper for the HubSpot REST API"
|
data/lib/hubspot/config.rb
CHANGED
@@ -31,6 +31,10 @@ module Hubspot
|
|
31
31
|
raise Hubspot::ConfigurationError.new("You must provide either an access_token or an hapikey")
|
32
32
|
end
|
33
33
|
|
34
|
+
if hapikey.present?
|
35
|
+
Hubspot::Deprecator.build.deprecation_warning("hapikey", "please use access_token instead. See https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app")
|
36
|
+
end
|
37
|
+
|
34
38
|
if access_token.present?
|
35
39
|
Hubspot::Connection.headers("Authorization" => "Bearer #{access_token}")
|
36
40
|
end
|
data/lib/hubspot/engagement.rb
CHANGED
data/lib/hubspot/file.rb
CHANGED
@@ -10,7 +10,7 @@ module Hubspot
|
|
10
10
|
#
|
11
11
|
class File
|
12
12
|
GET_FILE_PATH = "/filemanager/api/v2/files/:file_id"
|
13
|
-
DELETE_FILE_PATH = "/filemanager/api/v2/files/:file_id/full-delete"
|
13
|
+
DELETE_FILE_PATH = "/filemanager/api/v2/files/:file_id/full-delete"
|
14
14
|
LIST_FILE_PATH = "/filemanager/api/v2/files"
|
15
15
|
|
16
16
|
attr_reader :id
|
@@ -24,7 +24,7 @@ module Hubspot
|
|
24
24
|
class << self
|
25
25
|
def find_by_id(file_id)
|
26
26
|
response = Hubspot::Connection.get_json(GET_FILE_PATH, { file_id: file_id })
|
27
|
-
|
27
|
+
new(response)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
data/lib/hubspot/railtie.rb
CHANGED
data/lib/hubspot/utils.rb
CHANGED
@@ -20,31 +20,6 @@ module Hubspot
|
|
20
20
|
hash.map { |k, v| { key_name => k.to_s, "value" => v } }
|
21
21
|
end
|
22
22
|
|
23
|
-
def dump_properties(klass, hapikey=ENV['HUBSPOT_API_KEY'], filter={})
|
24
|
-
Hubspot::Deprecator.build.deprecation_warning("Hubspot::Utils.dump_properties")
|
25
|
-
|
26
|
-
with_hapikey(hapikey) do
|
27
|
-
{ 'groups' => klass.groups({}, filter),
|
28
|
-
'properties' => klass.all({}, filter).select { |p| !p['hubspotDefined'] }
|
29
|
-
}
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def restore_properties(klass, hapikey=ENV['HUPSPOT_API_KEY'], properties={}, dry_run=false)
|
34
|
-
Hubspot::Deprecator.build.deprecation_warning("Hubspot::Utils.restore_properties")
|
35
|
-
|
36
|
-
existing_properties = dump_properties(klass, hapikey)
|
37
|
-
skip, new_groups, new_props, update_props = compare_property_lists(klass, properties, existing_properties)
|
38
|
-
puts '', 'Dry Run - Changes will not be applied' if dry_run
|
39
|
-
puts '','Skipping'
|
40
|
-
skip.each { |h| puts "#{h[:reason]} - #{h[:prop]['groupName']}:#{h[:prop]['name']}" }
|
41
|
-
with_hapikey(hapikey) do
|
42
|
-
create_groups(klass, new_groups, dry_run)
|
43
|
-
create_properties(klass, new_props, dry_run)
|
44
|
-
update_properties(klass, update_props, dry_run)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
23
|
def create_groups(klass, groups, dry_run=false)
|
49
24
|
puts '','Creating new groups'
|
50
25
|
groups.each do |g|
|
@@ -112,11 +87,6 @@ module Hubspot
|
|
112
87
|
[skip, new_groups.to_a, new_props, update_props]
|
113
88
|
end
|
114
89
|
|
115
|
-
def with_hapikey(hapikey)
|
116
|
-
Hubspot.configure(hapikey: hapikey)
|
117
|
-
yield if block_given?
|
118
|
-
end
|
119
|
-
|
120
90
|
private
|
121
91
|
|
122
92
|
def find_by_name(name, set)
|
@@ -1,14 +1,9 @@
|
|
1
1
|
require 'timecop'
|
2
2
|
|
3
3
|
describe Hubspot do
|
4
|
-
before
|
5
|
-
Hubspot.configure(hapikey: "demo")
|
6
|
-
Timecop.freeze(Time.utc(2012, 'Oct', 10))
|
7
|
-
end
|
4
|
+
before { Timecop.freeze(Time.utc(2012, 'Oct', 10)) }
|
8
5
|
|
9
|
-
after
|
10
|
-
Timecop.return
|
11
|
-
end
|
6
|
+
after { Timecop.return }
|
12
7
|
|
13
8
|
let(:last_blog_id) { Hubspot::Blog.list.last['id'] }
|
14
9
|
let(:last_blog_post_id) { Hubspot::Blog.list.last.posts.first['id'] }
|
@@ -1,26 +1,23 @@
|
|
1
1
|
describe Hubspot::Config do
|
2
2
|
describe ".configure" do
|
3
|
-
it "sets the
|
4
|
-
|
3
|
+
it "sets the access token config" do
|
4
|
+
access_token = "foobar"
|
5
5
|
|
6
|
-
config = Hubspot::Config.configure(
|
6
|
+
config = Hubspot::Config.configure(access_token: access_token)
|
7
7
|
|
8
|
-
expect(config.
|
8
|
+
expect(config.access_token).to eq(access_token)
|
9
9
|
end
|
10
10
|
|
11
11
|
it "changes the base_url" do
|
12
12
|
base_url = "https://api.hubapi.com/v2"
|
13
13
|
|
14
|
-
config = Hubspot::Config.configure(
|
15
|
-
hapikey: "123abc",
|
16
|
-
base_url: base_url
|
17
|
-
)
|
14
|
+
config = Hubspot::Config.configure(base_url: base_url, access_token: 'foobar')
|
18
15
|
|
19
16
|
expect(config.base_url).to eq(base_url)
|
20
17
|
end
|
21
18
|
|
22
19
|
it "sets a default value for base_url" do
|
23
|
-
config = Hubspot::Config.configure(
|
20
|
+
config = Hubspot::Config.configure(access_token: 'foobar')
|
24
21
|
|
25
22
|
expect(config.base_url).to eq("https://api.hubapi.com")
|
26
23
|
end
|
@@ -29,7 +26,7 @@ describe Hubspot::Config do
|
|
29
26
|
portal_id = "62515"
|
30
27
|
|
31
28
|
config = Hubspot::Config.configure(
|
32
|
-
|
29
|
+
access_token: 'foobar',
|
33
30
|
portal_id: portal_id
|
34
31
|
)
|
35
32
|
|
@@ -50,15 +47,28 @@ describe Hubspot::Config do
|
|
50
47
|
})
|
51
48
|
}.to raise_error(Hubspot::ConfigurationError)
|
52
49
|
end
|
50
|
+
|
51
|
+
context 'hapikey deprecation' do
|
52
|
+
it "sets the hapikey config and sends a deprecation warning" do
|
53
|
+
previous, $stderr = $stderr, StringIO.new
|
54
|
+
|
55
|
+
hapikey = 'demo'
|
56
|
+
config = Hubspot::Config.configure(hapikey: hapikey)
|
57
|
+
expect(config.hapikey).to eq(hapikey)
|
58
|
+
expect($stderr.string).to include 'please use access_token instead.'
|
59
|
+
ensure
|
60
|
+
$stderr = previous
|
61
|
+
end
|
62
|
+
end
|
53
63
|
end
|
54
64
|
|
55
65
|
describe ".reset!" do
|
56
66
|
it "resets the config values" do
|
57
|
-
Hubspot::Config.configure(
|
67
|
+
Hubspot::Config.configure(access_token: "123abc", portal_id: "456def")
|
58
68
|
|
59
69
|
Hubspot::Config.reset!
|
60
70
|
|
61
|
-
expect(Hubspot::Config.
|
71
|
+
expect(Hubspot::Config.access_token).to be nil
|
62
72
|
expect(Hubspot::Config.portal_id).to be nil
|
63
73
|
end
|
64
74
|
end
|
@@ -66,7 +76,7 @@ describe Hubspot::Config do
|
|
66
76
|
describe ".ensure!" do
|
67
77
|
context "when a specified parameter is missing" do
|
68
78
|
it "raises an error" do
|
69
|
-
Hubspot::Config.configure(
|
79
|
+
Hubspot::Config.configure(access_token: "123abc")
|
70
80
|
|
71
81
|
expect {
|
72
82
|
Hubspot::Config.ensure!(:portal_id)
|
@@ -76,7 +86,7 @@ describe Hubspot::Config do
|
|
76
86
|
|
77
87
|
context "when all specified parameters are present" do
|
78
88
|
it "does not raise an error" do
|
79
|
-
Hubspot::Config.configure(
|
89
|
+
Hubspot::Config.configure(access_token: "123abc", portal_id: "456def")
|
80
90
|
|
81
91
|
expect {
|
82
92
|
Hubspot::Config.ensure!(:portal_id)
|
@@ -1,18 +1,12 @@
|
|
1
1
|
describe Hubspot::Connection do
|
2
|
-
before do
|
3
|
-
Hubspot.configure hapikey: 'fake'
|
4
|
-
end
|
5
|
-
|
6
2
|
describe ".get_json" do
|
7
3
|
it "returns the parsed response from the GET request" do
|
8
4
|
path = "/some/path"
|
9
5
|
body = { key: "value" }
|
10
6
|
|
11
|
-
stub_request(:get, "https://api.hubapi.com/some/path
|
12
|
-
to_return(status: 200, body: JSON.generate(body))
|
7
|
+
stub_request(:get, "https://api.hubapi.com/some/path").to_return(status: 200, body: JSON.generate(body))
|
13
8
|
|
14
9
|
result = Hubspot::Connection.get_json(path, {})
|
15
|
-
|
16
10
|
expect(result).to eq({ "key" => "value" })
|
17
11
|
end
|
18
12
|
end
|
@@ -22,11 +16,9 @@ describe Hubspot::Connection do
|
|
22
16
|
path = "/some/path"
|
23
17
|
body = { id: 1, name: "ABC" }
|
24
18
|
|
25
|
-
stub_request(:post, "https://api.hubapi.com/some/path?
|
26
|
-
to_return(status: 200, body: JSON.generate(body))
|
19
|
+
stub_request(:post, "https://api.hubapi.com/some/path?name=ABC").to_return(status: 200, body: JSON.generate(body))
|
27
20
|
|
28
21
|
result = Hubspot::Connection.post_json(path, params: { name: "ABC" })
|
29
|
-
|
30
22
|
expect(result).to eq({ "id" => 1, "name" => "ABC" })
|
31
23
|
end
|
32
24
|
end
|
@@ -35,11 +27,9 @@ describe Hubspot::Connection do
|
|
35
27
|
it "returns the response from the DELETE request" do
|
36
28
|
path = "/some/path"
|
37
29
|
|
38
|
-
stub_request(:delete, "https://api.hubapi.com/some/path
|
39
|
-
to_return(status: 204, body: JSON.generate({}))
|
30
|
+
stub_request(:delete, "https://api.hubapi.com/some/path").to_return(status: 204, body: JSON.generate({}))
|
40
31
|
|
41
32
|
result = Hubspot::Connection.delete_json(path, {})
|
42
|
-
|
43
33
|
expect(result.code).to eq(204)
|
44
34
|
end
|
45
35
|
end
|
@@ -49,20 +39,18 @@ describe Hubspot::Connection do
|
|
49
39
|
path = "/some/path"
|
50
40
|
update_options = { params: {}, body: {} }
|
51
41
|
|
52
|
-
stub_request(:put, "https://api.hubapi.com/some/path
|
53
|
-
to_return(status: 200, body: JSON.generate(vid: 123))
|
42
|
+
stub_request(:put, "https://api.hubapi.com/some/path").to_return(status: 200, body: JSON.generate(vid: 123))
|
54
43
|
|
55
44
|
response = Hubspot::Connection.put_json(path, update_options)
|
56
45
|
|
57
46
|
assert_requested(
|
58
47
|
:put,
|
59
|
-
"https://api.hubapi.com/some/path
|
48
|
+
"https://api.hubapi.com/some/path",
|
60
49
|
{
|
61
50
|
body: "{}",
|
62
51
|
headers: { "Content-Type" => "application/json" },
|
63
52
|
}
|
64
53
|
)
|
65
|
-
|
66
54
|
expect(response).to eq({ "vid" => 123 })
|
67
55
|
end
|
68
56
|
|
@@ -72,13 +60,13 @@ describe Hubspot::Connection do
|
|
72
60
|
|
73
61
|
logger = stub_logger
|
74
62
|
|
75
|
-
stub_request(:put, "https://api.hubapi.com/some/path
|
76
|
-
|
63
|
+
stub_request(:put, "https://api.hubapi.com/some/path").to_return(status: 200,
|
64
|
+
body: JSON.generate("response body"))
|
77
65
|
|
78
66
|
Hubspot::Connection.put_json(path, update_options)
|
79
67
|
|
80
68
|
expect(logger).to have_received(:info).with(<<~MSG)
|
81
|
-
Hubspot: https://api.hubapi.com/some/path
|
69
|
+
Hubspot: https://api.hubapi.com/some/path.
|
82
70
|
Body: {}.
|
83
71
|
Response: 200 "response body"
|
84
72
|
MSG
|
@@ -88,8 +76,7 @@ describe Hubspot::Connection do
|
|
88
76
|
path = "/some/path"
|
89
77
|
update_options = { params: {}, body: {} }
|
90
78
|
|
91
|
-
stub_request(:put, "https://api.hubapi.com/some/path
|
92
|
-
to_return(status: 401)
|
79
|
+
stub_request(:put, "https://api.hubapi.com/some/path").to_return(status: 401)
|
93
80
|
|
94
81
|
expect {
|
95
82
|
Hubspot::Connection.put_json(path, update_options)
|
@@ -99,80 +86,85 @@ describe Hubspot::Connection do
|
|
99
86
|
|
100
87
|
context 'private methods' do
|
101
88
|
describe ".generate_url" do
|
102
|
-
let(:path){ "/test/:email/profile" }
|
103
|
-
let(:params){{email: "test"}}
|
104
|
-
let(:options){{}}
|
105
|
-
subject{ Hubspot::Connection.send(:generate_url, path, params, options) }
|
106
|
-
before{ Hubspot.configure(hapikey: "demo", portal_id: "62515") }
|
89
|
+
let(:path) { "/test/:email/profile" }
|
90
|
+
let(:params) { { email: "test" } }
|
91
|
+
let(:options) { {} }
|
92
|
+
subject { Hubspot::Connection.send(:generate_url, path, params, options) }
|
107
93
|
|
108
94
|
it "doesn't modify params" do
|
109
|
-
expect{ subject }.to_not change{params}
|
95
|
+
expect { subject }.to_not change{params}
|
110
96
|
end
|
111
97
|
|
112
98
|
context "with a portal_id param" do
|
113
|
-
let(:path){ "/test/:portal_id/profile" }
|
114
|
-
let(:params){{}}
|
115
|
-
|
99
|
+
let(:path) { "/test/:portal_id/profile" }
|
100
|
+
let(:params) { {} }
|
101
|
+
|
102
|
+
before do
|
103
|
+
Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"))
|
104
|
+
end
|
105
|
+
|
106
|
+
it { should == "https://api.hubapi.com/test/#{ENV.fetch('HUBSPOT_PORTAL_ID')}/profile" }
|
116
107
|
end
|
117
108
|
|
118
109
|
context "when configure hasn't been called" do
|
119
|
-
before{ Hubspot::Config.reset! }
|
110
|
+
before { Hubspot::Config.reset! }
|
120
111
|
it "raises a config exception" do
|
121
|
-
expect{ subject }.to raise_error Hubspot::ConfigurationError
|
112
|
+
expect { subject }.to raise_error Hubspot::ConfigurationError
|
122
113
|
end
|
123
114
|
end
|
124
115
|
|
125
116
|
context "with interpolations but no params" do
|
126
|
-
let(:params){{}}
|
117
|
+
let(:params) { {} }
|
118
|
+
|
127
119
|
it "raises an interpolation exception" do
|
128
120
|
expect{ subject }.to raise_error Hubspot::MissingInterpolation
|
129
121
|
end
|
130
122
|
end
|
131
123
|
|
132
124
|
context "with an interpolated param" do
|
133
|
-
let(:params){ {email: "email@address.com"} }
|
134
|
-
it{ should == "https://api.hubapi.com/test/email%40address.com/profile
|
125
|
+
let(:params) { { email: "email@address.com" } }
|
126
|
+
it { should == "https://api.hubapi.com/test/email%40address.com/profile" }
|
135
127
|
end
|
136
128
|
|
137
129
|
context "with multiple interpolated params" do
|
138
|
-
let(:path){ "/test/:email/:id/profile" }
|
139
|
-
let(:params){{email: "email@address.com", id: 1234}}
|
140
|
-
it{ should == "https://api.hubapi.com/test/email%40address.com/1234/profile
|
130
|
+
let(:path) { "/test/:email/:id/profile" }
|
131
|
+
let(:params) { { email: "email@address.com", id: 1234 } }
|
132
|
+
it { should == "https://api.hubapi.com/test/email%40address.com/1234/profile" }
|
141
133
|
end
|
142
134
|
|
143
135
|
context "with query params" do
|
144
|
-
let(:params){{email: "email@address.com", id: 1234}}
|
145
|
-
it{ should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234
|
136
|
+
let(:params) { { email: "email@address.com", id: 1234 } }
|
137
|
+
it { should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234" }
|
146
138
|
|
147
139
|
context "containing a time" do
|
148
140
|
let(:start_time) { Time.now }
|
149
|
-
let(:params){{email: "email@address.com", id: 1234, start: start_time}}
|
150
|
-
it{ should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234&start=#{start_time.to_i * 1000}
|
141
|
+
let(:params) { { email: "email@address.com", id: 1234, start: start_time } }
|
142
|
+
it { should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234&start=#{start_time.to_i * 1000}" }
|
151
143
|
end
|
152
144
|
|
153
145
|
context "containing a range" do
|
154
146
|
let(:start_time) { Time.now }
|
155
147
|
let(:end_time) { Time.now + 1.year }
|
156
|
-
let(:params){{email: "email@address.com", id: 1234, created__range: start_time..end_time }
|
157
|
-
it{ should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234&created__range=#{start_time.to_i * 1000}&created__range=#{end_time.to_i * 1000}
|
148
|
+
let(:params) { { email: "email@address.com", id: 1234, created__range: start_time..end_time } }
|
149
|
+
it { should == "https://api.hubapi.com/test/email%40address.com/profile?id=1234&created__range=#{start_time.to_i * 1000}&created__range=#{end_time.to_i * 1000}" }
|
158
150
|
end
|
159
151
|
|
160
152
|
context "containing an array of strings" do
|
161
|
-
let(:path){ "/test/emails" }
|
162
|
-
let(:params){{batch_email: %w(email1@example.com email2@example.com)}}
|
163
|
-
it{ should == "https://api.hubapi.com/test/emails?email=email1%40example.com&email=email2%40example.com
|
153
|
+
let(:path) { "/test/emails" }
|
154
|
+
let(:params) { { batch_email: %w(email1@example.com email2@example.com) } }
|
155
|
+
it { should == "https://api.hubapi.com/test/emails?email=email1%40example.com&email=email2%40example.com" }
|
164
156
|
end
|
165
157
|
end
|
166
158
|
|
167
159
|
context "with options" do
|
168
|
-
let(:options){ {base_url: "https://cool.com",
|
169
|
-
it{ should == "https://cool.com/test/test/profile"}
|
160
|
+
let(:options) { { base_url: "https://cool.com", access_token: false } }
|
161
|
+
it { should == "https://cool.com/test/test/profile" }
|
170
162
|
end
|
171
163
|
|
172
164
|
context "passing Array as parameters for batch mode, key is prefixed with batch_" do
|
173
165
|
let(:path) { Hubspot::ContactList::LIST_BATCH_PATH }
|
174
166
|
let(:params) { { batch_list_id: [1,2,3] } }
|
175
|
-
it{ should == "https://api.hubapi.com/contacts/v1/lists/batch?listId=1&listId=2&listId=3
|
167
|
+
it { should == "https://api.hubapi.com/contacts/v1/lists/batch?listId=1&listId=2&listId=3" }
|
176
168
|
end
|
177
169
|
end
|
178
170
|
end
|
@@ -191,10 +183,7 @@ describe Hubspot::EventConnection do
|
|
191
183
|
let(:headers) { nil }
|
192
184
|
|
193
185
|
subject { described_class.trigger(path, options) }
|
194
|
-
before
|
195
|
-
Hubspot.configure(hapikey: 'demo', portal_id: '62515')
|
196
|
-
allow(described_class).to receive(:get).and_return(true)
|
197
|
-
end
|
186
|
+
before { allow(described_class).to receive(:get).and_return(true) }
|
198
187
|
|
199
188
|
it 'calls get with a custom url' do
|
200
189
|
subject
|