hubspot-api-ruby 0.9.0 → 0.11.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.
@@ -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?hapikey=fake").
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?hapikey=fake&name=ABC").
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?hapikey=fake").
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?hapikey=fake").
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?hapikey=fake",
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?hapikey=fake").
76
- to_return(status: 200, body: JSON.generate("response body"))
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?hapikey=fake.
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?hapikey=fake").
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
- it{ should == "https://api.hubapi.com/test/62515/profile?hapikey=demo" }
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?hapikey=demo" }
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?hapikey=demo" }
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&hapikey=demo" }
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}&hapikey=demo" }
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}&hapikey=demo" }
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&hapikey=demo" }
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", hapikey: false} }
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&hapikey=demo" }
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 do
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
@@ -1,7 +1,18 @@
1
1
  describe Hubspot::ContactList do
2
+ # uncomment if you need to create test data in your panel.
3
+ # note that sandboxes have a limit of 5 dynamic lists
4
+ # before(:all) do
5
+ # VCR.use_cassette("create_all_lists") do
6
+ # 25.times { Hubspot::ContactList.create!(name: SecureRandom.hex) }
7
+ # 3.times { Hubspot::ContactList.create!(name: SecureRandom.hex, dynamic: true, filters: [[{ operator: "EQ", value: "@hubspot", property: "twitterhandle", type: "string"}]]) }
8
+ # end
9
+ # end
10
+
2
11
  let(:example_contact_list_hash) do
3
12
  VCR.use_cassette("contact_list_example") do
4
- HTTParty.get("https://api.hubapi.com/contacts/v1/lists/124897?hapikey=demo").parsed_response
13
+ headers = { Authorization: "Bearer #{ENV.fetch('HUBSPOT_ACCESS_TOKEN')}" }
14
+ response = HTTParty.get("https://api.hubapi.com/contacts/v1/lists/static?count=1", headers: headers).parsed_response
15
+ response['lists'].first
5
16
  end
6
17
  end
7
18
 
@@ -9,12 +20,6 @@ describe Hubspot::ContactList do
9
20
  Hubspot::ContactList.create!(name: "static list #{SecureRandom.hex}")
10
21
  end
11
22
 
12
- let(:example_contact_hash) do
13
- VCR.use_cassette("contact_example") do
14
- HTTParty.get("https://api.hubapi.com/contacts/v1/contact/email/testingapis@hubspot.com/profile?hapikey=demo").parsed_response
15
- end
16
- end
17
-
18
23
  shared_examples "count and offset" do |params|
19
24
  it 'returns only the number of objects specified by count' do
20
25
  result = instance_exec(count: 2, &params[:block])
@@ -38,7 +43,7 @@ describe Hubspot::ContactList do
38
43
  its(:id) { should be_an(Integer) }
39
44
  its(:portal_id) { should be_a(Integer) }
40
45
  its(:name) { should_not be_empty }
41
- its(:dynamic) { should be true }
46
+ its(:dynamic) { should be false }
42
47
  its(:properties) { should be_a(Hash) }
43
48
  end
44
49
 
@@ -57,12 +62,6 @@ describe Hubspot::ContactList do
57
62
  end
58
63
  end
59
64
 
60
- it 'returns by default 20 contact lists' do
61
- expect(list.contacts.count).to eql 20
62
- contact = list.contacts.first
63
- expect(contact).to be_a(Hubspot::Contact)
64
- end
65
-
66
65
  it 'returns by default 20 contact lists with paging data' do
67
66
  contact_data = list.contacts({bypass_cache: true, paged: true})
68
67
  contacts = contact_data['contacts']
@@ -73,15 +72,10 @@ describe Hubspot::ContactList do
73
72
  expect(contacts.count).to eql 20
74
73
  contact = contacts.first
75
74
  expect(contact).to be_a(Hubspot::Contact)
76
- end
77
-
78
- it 'add default properties to the contacts returned' do
79
- contact = list.contacts.first
80
75
  expect(contact.email).to_not be_empty
81
76
  end
82
77
 
83
78
  it_behaves_like 'count and offset', {block: ->(r) { Hubspot::ContactList.find(list.id).contacts(r) }}
84
-
85
79
  end
86
80
 
87
81
  describe '.create' do
@@ -119,13 +113,6 @@ describe Hubspot::ContactList do
119
113
  end
120
114
 
121
115
  describe '.all' do
122
- before(:all) do
123
- VCR.use_cassette("create_all_lists") do
124
- 25.times { Hubspot::ContactList.create!(name: SecureRandom.hex) }
125
- 25.times { Hubspot::ContactList.create!(name: SecureRandom.hex, dynamic: true, filters: [[{ operator: "EQ", value: "@hubspot", property: "twitterhandle", type: "string"}]]) }
126
- end
127
- end
128
-
129
116
  context 'all list types' do
130
117
  cassette 'find_all_lists'
131
118
 
@@ -146,7 +133,7 @@ describe Hubspot::ContactList do
146
133
 
147
134
  it 'returns by defaut all the static contact lists' do
148
135
  lists = Hubspot::ContactList.all(static: true)
149
- expect(lists.count).to be > 20
136
+ expect(lists.count).to be > 2
150
137
 
151
138
  list = lists.first
152
139
  expect(list).to be_a(Hubspot::ContactList)
@@ -159,7 +146,7 @@ describe Hubspot::ContactList do
159
146
 
160
147
  it 'returns by defaut all the dynamic contact lists' do
161
148
  lists = Hubspot::ContactList.all(dynamic: true)
162
- expect(lists.count).to be > 20
149
+ expect(lists.count).to be > 2
163
150
 
164
151
  list = lists.first
165
152
  expect(list).to be_a(Hubspot::ContactList)
@@ -173,7 +160,7 @@ describe Hubspot::ContactList do
173
160
  cassette "contact_list_find"
174
161
  subject { Hubspot::ContactList.find(id) }
175
162
 
176
- let(:list) { Hubspot::ContactList.create!(name: SecureRandom.hex) }
163
+ let(:list) { Hubspot::ContactList.new(example_contact_list_hash) }
177
164
 
178
165
  context 'when the contact list is found' do
179
166
  let(:id) { list.id.to_i }
@@ -188,7 +175,7 @@ describe Hubspot::ContactList do
188
175
 
189
176
  context 'Wrong parameter type given' do
190
177
  it 'raises an error' do
191
- expect { Hubspot::ContactList.find(static_list) }.to raise_error(Hubspot::InvalidParams)
178
+ expect { Hubspot::ContactList.find({ foo: :bar }) }.to raise_error(Hubspot::InvalidParams)
192
179
  end
193
180
  end
194
181
 
@@ -287,12 +274,13 @@ describe Hubspot::ContactList do
287
274
 
288
275
  context 'static list' do
289
276
  it 'returns true if removes all contacts in batch mode' do
290
- contacts = static_list.contacts(count: 2)
291
- expect(static_list.remove([contacts.first, contacts.last])).to be true
277
+ list = Hubspot::ContactList.new(example_contact_list_hash)
278
+ contacts = list.contacts(count: 2)
279
+ expect(list.remove([contacts.first, contacts.last])).to be true
292
280
  end
293
281
 
294
282
  it 'returns false if the contact cannot be removed' do
295
- contact_not_present_in_list = Hubspot::Contact.new(example_contact_hash)
283
+ contact_not_present_in_list = Hubspot::Contact.new(1234)
296
284
  expect(static_list.remove(contact_not_present_in_list)).to be false
297
285
  end
298
286
  end
@@ -38,6 +38,26 @@ describe Hubspot::ContactProperties do
38
38
  end
39
39
  end
40
40
 
41
+ describe '.find' do
42
+ context 'existing property' do
43
+ cassette 'contact_properties/existing_property'
44
+
45
+ it 'should return a contact property by name if it exists' do
46
+ response = Hubspot::ContactProperties.find('full_name')
47
+ expect(response['name']).to eq 'full_name'
48
+ expect(response['label']).to eq 'Full name'
49
+ end
50
+ end
51
+
52
+ context 'non-existent property' do
53
+ cassette 'contact_properties/non_existent_property'
54
+
55
+ it 'should return an error for a missing property' do
56
+ expect{ Hubspot::ContactProperties.find('this_does_not_exist') }.to raise_error(Hubspot::NotFoundError)
57
+ end
58
+ end
59
+ end
60
+
41
61
  let(:params) { {
42
62
  'name' => 'my_new_property',
43
63
  'label' => 'This is my new property',
@@ -141,6 +161,26 @@ describe Hubspot::ContactProperties do
141
161
  end
142
162
  end
143
163
 
164
+ describe '.find_group' do
165
+ context 'existing group' do
166
+ cassette 'contact_properties/existing_group'
167
+
168
+ it 'should return a contact property by name if it exists' do
169
+ response = Hubspot::ContactProperties.find_group('contactinformation')
170
+ expect(response['name']).to eq 'contactinformation'
171
+ expect(response['displayName']).to eq 'Contact information'
172
+ end
173
+ end
174
+
175
+ context 'non-existent group' do
176
+ cassette 'contact_properties/non_existent_group'
177
+
178
+ it 'should return an error for a missing group' do
179
+ expect{ Hubspot::ContactProperties.find_group('this_does_not_exist') }.to raise_error(Hubspot::NotFoundError)
180
+ end
181
+ end
182
+ end
183
+
144
184
  let(:params) { { 'name' => 'ff_group1', 'displayName' => 'Test Group One', 'displayOrder' => 100, 'badParam' => 99 } }
145
185
 
146
186
  describe '.create_group!' do
@@ -209,7 +209,7 @@ RSpec.describe Hubspot::Contact do
209
209
 
210
210
  let!(:contact1) { create :contact }
211
211
 
212
- subject { contact1.merge(1) }
212
+ subject { contact1.merge(contact1.id) }
213
213
 
214
214
  it 'raises an error' do
215
215
  expect {
@@ -1,7 +1,8 @@
1
1
  RSpec.describe Hubspot::CustomEvent do
2
- let(:portal_id) { '62515' }
3
- let(:sent_portal_id) { portal_id }
4
- before { Hubspot.configure(hapikey: 'demo', custom_event_prefix: 'foobar') }
2
+ before do
3
+ Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"),
4
+ custom_event_prefix: 'foobar')
5
+ end
5
6
 
6
7
  describe '.trigger' do
7
8
  let(:event_name) { 'my_awesome_event' }
@@ -9,7 +10,7 @@ RSpec.describe Hubspot::CustomEvent do
9
10
  let(:properties) { { prop_foo: 'bar' } }
10
11
  let(:options) { {} }
11
12
  let(:base_url) { 'https://api.hubapi.com' }
12
- let(:url) { "#{base_url}/events/v3/send?hapikey=demo" }
13
+ let(:url) { "#{base_url}/events/v3/send" }
13
14
 
14
15
  subject { described_class.trigger(event_name, email, properties, options) }
15
16
 
@@ -37,6 +37,26 @@ describe Hubspot::DealProperties do
37
37
  end
38
38
  end
39
39
  end
40
+
41
+ describe '.find' do
42
+ context 'existing property' do
43
+ cassette 'deal_properties/existing_property'
44
+
45
+ it 'should return a deal property by name if it exists' do
46
+ response = Hubspot::DealProperties.find('hs_acv')
47
+ expect(response['name']).to eq 'hs_acv'
48
+ expect(response['label']).to eq 'Annual contract value'
49
+ end
50
+ end
51
+
52
+ context 'non-existent property' do
53
+ cassette 'deal_properties/non_existent_property'
54
+
55
+ it 'should return an error for a missing property' do
56
+ expect{ Hubspot::DealProperties.find('this_does_not_exist') }.to raise_error(Hubspot::NotFoundError)
57
+ end
58
+ end
59
+ end
40
60
 
41
61
  let(:params) { {
42
62
  'name' => "my_new_property_#{SecureRandom.hex}",
@@ -140,6 +160,26 @@ describe Hubspot::DealProperties do
140
160
  end
141
161
  end
142
162
 
163
+ describe '.find_group' do
164
+ context 'existing group' do
165
+ cassette 'deal_properties/existing_group'
166
+
167
+ it 'should return a deal property by name if it exists' do
168
+ response = Hubspot::DealProperties.find_group('deal_revenue')
169
+ expect(response['name']).to eq 'deal_revenue'
170
+ expect(response['displayName']).to eq 'Deal revenue'
171
+ end
172
+ end
173
+
174
+ context 'non-existent group' do
175
+ cassette 'deal_properties/non_existent_group'
176
+
177
+ it 'should return an error for a missing group' do
178
+ expect{ Hubspot::DealProperties.find_group('this_does_not_exist') }.to raise_error(Hubspot::NotFoundError)
179
+ end
180
+ end
181
+ end
182
+
143
183
  let(:params) { { 'name' => 'ff_group1', 'displayName' => 'Test Group One', 'displayOrder' => 100, 'badParam' => 99 } }
144
184
 
145
185
  describe '.create_group!' do
@@ -1,22 +1,14 @@
1
1
  describe Hubspot::Engagement do
2
-
3
2
  let(:contact) { Hubspot::Contact.create("#{SecureRandom.hex}@hubspot.com") }
4
3
  let(:engagement) { Hubspot::EngagementNote.create!(contact.id, "foo") }
5
- let(:example_engagement_hash) do
6
- VCR.use_cassette("engagement_example") do
7
- HTTParty.get("https://api.hubapi.com/engagements/v1/engagements/3981023?hapikey=demo").parsed_response
8
- end
9
- end
10
- let(:example_associated_engagement_hash) do
11
- VCR.use_cassette("engagement_associated_example") do
12
- HTTParty.get("https://api.hubapi.com/engagements/v1/engagements/58699206?hapikey=demo").parsed_response
13
- end
14
- end
15
4
 
16
5
  # http://developers.hubspot.com/docs/methods/contacts/get_contact
17
6
 
18
7
  describe "#initialize" do
19
8
  subject{ Hubspot::Engagement.new(example_engagement_hash) }
9
+
10
+ let(:example_engagement_hash) { { 'engagement' => { 'id' => 3981023, 'portalId' => 62515, 'associations' => {} } } }
11
+
20
12
  it { should be_an_instance_of Hubspot::Engagement }
21
13
  its (:id) { should == 3981023 }
22
14
  end
@@ -1,7 +1,8 @@
1
1
  describe Hubspot::Event do
2
- let(:portal_id) { '62515' }
2
+ let(:portal_id) { ENV.fetch("HUBSPOT_PORTAL_ID") }
3
3
  let(:sent_portal_id) { portal_id }
4
- before { Hubspot.configure(hapikey: 'demo', portal_id: portal_id) }
4
+
5
+ before { Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: portal_id) }
5
6
 
6
7
  describe '.trigger' do
7
8
  let(:event_id) { '000000001625' }
@@ -1,12 +1,23 @@
1
- describe Hubspot do
2
- describe Hubspot::File do
3
- before { Hubspot.configure(hapikey: "demo") }
4
- describe ".find_by_id" do
5
- it "should fetch specific file" do
6
- VCR.use_cassette("file_find") do
7
- file = Hubspot::File.find_by_id(5323360053)
8
- file.id.should eq(5323360053)
9
- end
1
+ describe Hubspot::File do
2
+ let(:example_file_hash) do
3
+ VCR.use_cassette('file_example') do
4
+ headers = { Authorization: "Bearer #{ENV.fetch('HUBSPOT_ACCESS_TOKEN')}" }
5
+ body = {
6
+ file: File.open(File::NULL, 'r'),
7
+ options: { access: 'PRIVATE', ttl: 'P1M', overwrite: false }.to_json,
8
+ folderPath: '/'
9
+ }
10
+ url = 'https://api.hubapi.com/filemanager/api/v3/files/upload'
11
+ HTTParty.post(url, body: body, headers: headers).parsed_response
12
+ end
13
+ end
14
+
15
+ describe ".find_by_id" do
16
+ it "should fetch specific file" do
17
+ VCR.use_cassette("file_find") do
18
+ id = example_file_hash['objects'].first['id']
19
+ file = Hubspot::File.find_by_id(id)
20
+ file.id.should eq(id)
10
21
  end
11
22
  end
12
23
  end
@@ -1,7 +1,9 @@
1
1
  describe Hubspot::Form do
2
2
  let(:example_form_hash) do
3
3
  VCR.use_cassette('form_example') do
4
- HTTParty.get("https://api.hubapi.com#{Hubspot::Form::FORMS_PATH}/038e819c-5262-4c13-8550-8cabe38c4309/?hapikey=demo").parsed_response
4
+ guid = Hubspot::Form.all.first.guid
5
+ headers = { Authorization: "Bearer #{ENV.fetch('HUBSPOT_ACCESS_TOKEN')}" }
6
+ HTTParty.get("https://api.hubapi.com#{Hubspot::Form::FORMS_PATH}/#{guid}", headers: headers).parsed_response
5
7
  end
6
8
  end
7
9
 
@@ -29,8 +31,6 @@ describe Hubspot::Form do
29
31
  end
30
32
 
31
33
  describe '.all' do
32
- before { Hubspot.configure(hapikey: 'demo') }
33
-
34
34
  cassette 'find_all_forms'
35
35
 
36
36
  it 'returns all forms' do
@@ -42,8 +42,6 @@ describe Hubspot::Form do
42
42
  end
43
43
 
44
44
  describe '.find' do
45
- before { Hubspot.configure(hapikey: 'demo') }
46
-
47
45
  cassette 'form_find'
48
46
  subject { Hubspot::Form.find(Hubspot::Form.all.first.guid) }
49
47
 
@@ -79,7 +77,6 @@ describe Hubspot::Form do
79
77
  end
80
78
 
81
79
  describe '#fields' do
82
- before { Hubspot.configure(hapikey: 'demo') }
83
80
  context 'returning all the fields' do
84
81
  cassette 'fields_among_form'
85
82
 
@@ -119,11 +116,11 @@ describe Hubspot::Form do
119
116
  describe '#submit' do
120
117
  cassette 'form_submit_data'
121
118
 
122
- let(:form) { Hubspot::Form.create!(create_params) }
119
+ let(:form) { Hubspot::Form.all.first }
123
120
 
124
121
  context 'with a valid portal id' do
125
122
  before do
126
- Hubspot.configure(hapikey: ENV.fetch("HUBSPOT_HAPI_KEY"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"))
123
+ Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"))
127
124
  end
128
125
 
129
126
  it 'returns true if the form submission is successful' do
@@ -135,7 +132,7 @@ describe Hubspot::Form do
135
132
 
136
133
  context 'with an invalid portal id' do
137
134
  before do
138
- Hubspot.configure(hapikey: ENV.fetch("HUBSPOT_HAPI_KEY"), portal_id: "xxx")
135
+ Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: "xxx")
139
136
  end
140
137
 
141
138
  it 'returns false in case of errors' do
@@ -149,7 +146,7 @@ describe Hubspot::Form do
149
146
  let(:f) { Hubspot::Form.new('guid' => form.guid) }
150
147
 
151
148
  before do
152
- Hubspot.configure(hapikey: ENV.fetch("HUBSPOT_HAPI_KEY"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"))
149
+ Hubspot.configure(access_token: ENV.fetch("HUBSPOT_ACCESS_TOKEN"), portal_id: ENV.fetch("HUBSPOT_PORTAL_ID"))
153
150
  end
154
151
 
155
152
  it 'returns true if the form submission is successful' do
@@ -170,8 +167,8 @@ describe Hubspot::Form do
170
167
  let(:params) { { name: new_name, redirect: redirect } }
171
168
  subject { form.update!(params) }
172
169
 
173
- it { should be_an_instance_of Hubspot::Form }
174
170
  it 'updates properties' do
171
+ should be_an_instance_of Hubspot::Form
175
172
  subject.properties['name'].should start_with('updated form name ')
176
173
  subject.properties['redirect'].should be == redirect
177
174
  end
@@ -1,6 +1,12 @@
1
1
  RSpec.describe Hubspot::Meeting do
2
2
 
3
- let(:hubspot_owner_id) { 123 }
3
+ let(:hubspot_owner_id) do
4
+ VCR.use_cassette('meeting_owner') do
5
+ headers = { Authorization: "Bearer #{ENV.fetch('HUBSPOT_ACCESS_TOKEN')}" }
6
+ owners = HTTParty.get('https://api.hubapi.com/owners/v2/owners', headers: headers).parsed_response
7
+ owners.first['ownerId']
8
+ end
9
+ end
4
10
  let(:hs_meeting_title) { 'hs_meeting_title' }
5
11
  let(:hs_meeting_body) { 'hs_meeting_body' }
6
12
  let(:hs_meeting_start_time) { DateTime.strptime('2022-05-03T10:00:00+01:00', '%Y-%m-%dT%H:%M:%S%z') }