hubspot-ruby 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/hubspot-ruby.gemspec +42 -5
  3. data/lib/hubspot-ruby.rb +3 -0
  4. data/lib/hubspot/blog.rb +14 -48
  5. data/lib/hubspot/connection.rb +95 -0
  6. data/lib/hubspot/contact.rb +74 -91
  7. data/lib/hubspot/contact_list.rb +127 -0
  8. data/lib/hubspot/contact_properties.rb +12 -0
  9. data/lib/hubspot/deal.rb +29 -25
  10. data/lib/hubspot/exceptions.rb +2 -0
  11. data/lib/hubspot/form.rb +88 -4
  12. data/lib/hubspot/topic.rb +8 -24
  13. data/lib/hubspot/utils.rb +0 -51
  14. data/lib/hubspot/version.rb +1 -1
  15. data/spec/fixtures/vcr_cassettes/add_contacts_to_lists.yml +281 -0
  16. data/spec/fixtures/vcr_cassettes/contact_create.yml +34 -2
  17. data/spec/fixtures/vcr_cassettes/contact_create_existing_email.yml +34 -2
  18. data/spec/fixtures/vcr_cassettes/contact_create_invalid_email.yml +35 -3
  19. data/spec/fixtures/vcr_cassettes/contact_create_with_params.yml +34 -2
  20. data/spec/fixtures/vcr_cassettes/contact_destroy.yml +36 -4
  21. data/spec/fixtures/vcr_cassettes/contact_find_by_email_batch_mode.yml +509 -0
  22. data/spec/fixtures/vcr_cassettes/contact_find_by_id_batch_mode.yml +33 -0
  23. data/spec/fixtures/vcr_cassettes/contact_find_by_utk_batch_mode.yml +33 -0
  24. data/spec/fixtures/vcr_cassettes/contact_list_batch_find.yml +65 -0
  25. data/spec/fixtures/vcr_cassettes/contact_list_destroy.yml +63 -0
  26. data/spec/fixtures/vcr_cassettes/contact_list_example.yml +33 -0
  27. data/spec/fixtures/vcr_cassettes/contact_list_find.yml +96 -0
  28. data/spec/fixtures/vcr_cassettes/contact_list_refresh.yml +33 -0
  29. data/spec/fixtures/vcr_cassettes/contact_list_update.yml +36 -0
  30. data/spec/fixtures/vcr_cassettes/contacts_among_list.yml +189 -0
  31. data/spec/fixtures/vcr_cassettes/create_form.yml +39 -0
  32. data/spec/fixtures/vcr_cassettes/create_list.yml +36 -0
  33. data/spec/fixtures/vcr_cassettes/create_list_with_filters.yml +36 -0
  34. data/spec/fixtures/vcr_cassettes/deal_create.yml +29 -0
  35. data/spec/fixtures/vcr_cassettes/deal_find.yml +56 -0
  36. data/spec/fixtures/vcr_cassettes/destroy_deal.yml +110 -0
  37. data/spec/fixtures/vcr_cassettes/fail_to_create_form.yml +35 -0
  38. data/spec/fixtures/vcr_cassettes/fail_to_create_list.yml +35 -0
  39. data/spec/fixtures/vcr_cassettes/field_among_form.yml +34 -0
  40. data/spec/fixtures/vcr_cassettes/fields_among_form.yml +35 -0
  41. data/spec/fixtures/vcr_cassettes/find_all_contacts.yml +39 -0
  42. data/spec/fixtures/vcr_cassettes/find_all_dynamic_lists.yml +104 -0
  43. data/spec/fixtures/vcr_cassettes/find_all_forms.yml +15378 -0
  44. data/spec/fixtures/vcr_cassettes/find_all_lists.yml +138 -0
  45. data/spec/fixtures/vcr_cassettes/find_all_recent_contacts.yml +33 -0
  46. data/spec/fixtures/vcr_cassettes/find_all_stastic_lists.yml +21876 -0
  47. data/spec/fixtures/vcr_cassettes/form_destroy.yml +64 -0
  48. data/spec/fixtures/vcr_cassettes/form_example.yml +39 -0
  49. data/spec/fixtures/vcr_cassettes/form_find.yml +69 -0
  50. data/spec/fixtures/vcr_cassettes/form_submit_data.yml +130 -0
  51. data/spec/fixtures/vcr_cassettes/form_update.yml +77 -0
  52. data/spec/fixtures/vcr_cassettes/one_month_blog_posts_filter_state.yml +5168 -0
  53. data/spec/fixtures/vcr_cassettes/remove_contacts_from_lists.yml +315 -0
  54. data/spec/lib/hubspot/blog_spec.rb +4 -3
  55. data/spec/lib/hubspot/connection_spec.rb +112 -0
  56. data/spec/lib/hubspot/contact_list_spec.rb +249 -0
  57. data/spec/lib/hubspot/contact_properties_spec.rb +8 -0
  58. data/spec/lib/hubspot/contact_spec.rb +110 -54
  59. data/spec/lib/hubspot/deal_spec.rb +11 -0
  60. data/spec/lib/hubspot/form_spec.rb +157 -10
  61. data/spec/lib/hubspot/utils_spec.rb +0 -67
  62. data/spec/live/deals_integration_spec.rb +35 -0
  63. data/spec/spec_helper.rb +2 -0
  64. data/spec/support/tests_helper.rb +17 -0
  65. metadata +70 -33
@@ -71,6 +71,7 @@ describe Hubspot::Deal do
71
71
  let(:deal) {Hubspot::Deal.create!(62515, [8954037], [27136], {amount: 30})}
72
72
 
73
73
  it 'should remove from hubspot' do
74
+ pending
74
75
  expect(Hubspot::Deal.find(deal.deal_id)).to_not be_nil
75
76
 
76
77
  expect(deal.destroy!).to be_true
@@ -79,4 +80,14 @@ describe Hubspot::Deal do
79
80
  expect(Hubspot::Deal.find(deal.deal_id)).to be_nil
80
81
  end
81
82
  end
83
+
84
+ describe '#[]' do
85
+ subject{ Hubspot::Deal.new(example_deal_hash) }
86
+
87
+ it 'should get a property' do
88
+ subject.properties.each do |property, value|
89
+ expect(subject[property]).to eql value
90
+ end
91
+ end
92
+ end
82
93
  end
@@ -1,18 +1,165 @@
1
1
  describe Hubspot::Form do
2
- describe "#url" do
3
- let(:form_guid){ "abcd-efgh-1234-5678" }
4
- subject{ Hubspot::Form.new(form_guid) }
2
+ let(:example_form_hash) do
3
+ VCR.use_cassette("form_example", record: :none) do
4
+ HTTParty.get("https://api.hubapi.com/contacts/v1/forms/561d9ce9-bb4c-45b4-8e32-21cdeaa3a7f0/?hapikey=demo").parsed_response
5
+ end
6
+ end
7
+
8
+ describe '#initialize' do
9
+ subject { Hubspot::Form.new(example_form_hash) }
10
+
11
+ it { should be_an_instance_of Hubspot::Form }
12
+ its(:guid) { should be_a(String) }
13
+ its(:properties) { should be_a(Hash) }
14
+ end
15
+
16
+ before { Hubspot.configure(hapikey: "demo", portal_id: '62515') }
17
+
18
+ describe '.all' do
19
+ cassette 'find_all_forms'
20
+
21
+ it 'returns all forms' do
22
+ forms = Hubspot::Form.all
23
+ expect(forms.count).to be > 20
24
+
25
+ form = forms.first
26
+ expect(form).to be_a(Hubspot::Form)
27
+ end
28
+ end
29
+
30
+ describe '.find' do
31
+ cassette "form_find"
32
+ subject { Hubspot::Form.find(guid) }
33
+
34
+ context 'when the form is found' do
35
+ let(:guid) { '561d9ce9-bb4c-45b4-8e32-21cdeaa3a7f0' }
36
+ it { should be_an_instance_of Hubspot::Form }
37
+ its(:fields) { should_not be_empty }
38
+ end
39
+
40
+ context 'when the form is not found' do
41
+ it 'raises an error' do
42
+ expect { Hubspot::Form.find(-1) }.to raise_error(Hubspot::RequestError)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '.create' do
48
+ subject{ Hubspot::Form.create!(params) }
49
+
50
+ context 'with all required parameters' do
51
+ cassette 'create_form'
52
+
53
+ let(:params) do
54
+ {
55
+ name: "Demo Form #{Time.now.to_i}",
56
+ action: "",
57
+ method: "POST",
58
+ cssClass: "hs-form stacked",
59
+ redirect: "",
60
+ submitText: "Sign Up",
61
+ followUpId: "",
62
+ leadNurturingCampaignId: "",
63
+ notifyRecipients: "",
64
+ embeddedCode: ""
65
+ }
66
+ end
67
+ it { should be_an_instance_of Hubspot::Form }
68
+ its(:guid) { should be_a(String) }
69
+ end
70
+
71
+ context 'without all required parameters' do
72
+ cassette 'fail_to_create_form'
73
+
74
+ it 'raises an error' do
75
+ expect { Hubspot::Form.create!({}) }.to raise_error(Hubspot::RequestError)
76
+ end
77
+ end
78
+ end
79
+
80
+ describe '#fields' do
81
+ context 'returning all the fields' do
82
+ cassette 'fields_among_form'
5
83
 
6
- context "when a portal_id is configured" do
7
- before { Hubspot.configure hapikey: "demo", portal_id: "62515" }
8
- its(:url){ should == "https://forms.hubspot.com/uploads/form/v2/62515/abcd-efgh-1234-5678" }
84
+ let(:form) { Hubspot::Form.new(example_form_hash) }
85
+
86
+ it 'returns by default the fields property if present' do
87
+ fields = form.fields
88
+ fields.should_not be_empty
89
+ end
90
+
91
+ it 'updates the fields property and returns it' do
92
+ fields = form.fields(bypass_cache: true)
93
+ fields.should_not be_empty
94
+ end
9
95
  end
10
96
 
11
- context "when a portal_id is not configured" do
12
- before { Hubspot.configure hapikey: "demo" }
13
- it "raises an exception" do
14
- expect{ subject.url }.to raise_error Hubspot::ConfigurationError
97
+ context 'returning an uniq field' do
98
+ cassette 'field_among_form'
99
+
100
+ let(:form) { Hubspot::Form.new(example_form_hash) }
101
+
102
+ it 'returns by default the field if present as a property' do
103
+ field = form.fields(only: :email)
104
+ expect(field).to be_a(Hash)
105
+ expect(field['name']).to be == 'email'
106
+ end
107
+
108
+ it 'makes an API request if specified' do
109
+ field = form.fields(only: :email, bypass_cache: true)
110
+ expect(field).to be_a(Hash)
111
+ expect(field['name']).to be == 'email'
15
112
  end
16
113
  end
17
114
  end
115
+
116
+ describe '#submit' do
117
+ cassette 'form_submit_data'
118
+
119
+ let(:form) { Hubspot::Form.find('561d9ce9-bb4c-45b4-8e32-21cdeaa3a7f0') }
120
+
121
+ it 'returns true if the form submission is successfull' do
122
+ params = { }
123
+ result = form.submit(params)
124
+ result.should be true
125
+ end
126
+
127
+ it 'returns false in case of errors' do
128
+ Hubspot.configure(hapikey: "demo", portal_id: '62514')
129
+ params = { }
130
+ result = form.submit(params)
131
+ result.should be false
132
+ end
133
+ end
134
+
135
+ describe '#update!' do
136
+ cassette "form_update"
137
+
138
+ new_name = "updated form name 1424709912"
139
+ redirect = 'http://hubspot.com'
140
+
141
+ let(:form) { Hubspot::Form.find('561d9ce9-bb4c-45b4-8e32-21cdeaa3a7f0') }
142
+ let(:params) { { name: new_name, redirect: redirect } }
143
+ subject { form.update!(params) }
144
+
145
+ it { should be_an_instance_of Hubspot::Form }
146
+ it 'updates properties' do
147
+ subject.properties['name'].should be == new_name
148
+ subject.properties['redirect'].should be == redirect
149
+ end
150
+ end
151
+
152
+ describe '#destroy!' do
153
+ cassette "form_destroy"
154
+
155
+ # NOTE: form previous created via the create! method
156
+ let(:form) { Hubspot::Form.find('8291bdd1-0681-4d99-b5f7-76ffffb4f98d') }
157
+ subject{ form.destroy! }
158
+ it { should be_true }
159
+
160
+ it "should be destroyed" do
161
+ subject
162
+ form.destroyed?.should be_true
163
+ end
164
+ end
18
165
  end
@@ -28,71 +28,4 @@ describe Hubspot::Utils do
28
28
  it{ should include({"property" => "firstname", "value" => "Bob"}) }
29
29
  it{ should include({"property" => "lastname", "value" => "Smith"}) }
30
30
  end
31
-
32
- describe ".generate_url" do
33
- let(:path){ "/test/:email/profile" }
34
- let(:params){{email: "test"}}
35
- let(:options){{}}
36
- subject{ Hubspot::Utils.generate_url(path, params, options) }
37
- before{ Hubspot.configure(hapikey: "demo", portal_id: "62515") }
38
-
39
- it "doesn't modify params" do
40
- expect{ subject }.to_not change{params}
41
- end
42
-
43
- context "with a portal_id param" do
44
- let(:path){ "/test/:portal_id/profile" }
45
- let(:params){{}}
46
- it{ should == "https://api.hubapi.com/test/62515/profile?hapikey=demo" }
47
- end
48
-
49
- context "when configure hasn't been called" do
50
- before{ Hubspot::Config.reset! }
51
- it "raises a config exception" do
52
- expect{ subject }.to raise_error Hubspot::ConfigurationError
53
- end
54
- end
55
-
56
- context "with interpolations but no params" do
57
- let(:params){{}}
58
- it "raises an interpolation exception" do
59
- expect{ subject }.to raise_error Hubspot::MissingInterpolation
60
- end
61
- end
62
-
63
- context "with an interpolated param" do
64
- let(:params){ {email: "email@address.com"} }
65
- it{ should == "https://api.hubapi.com/test/email@address.com/profile?hapikey=demo" }
66
- end
67
-
68
- context "with multiple interpolated params" do
69
- let(:path){ "/test/:email/:id/profile" }
70
- let(:params){{email: "email@address.com", id: 1234}}
71
- it{ should == "https://api.hubapi.com/test/email@address.com/1234/profile?hapikey=demo" }
72
- end
73
-
74
- context "with query params" do
75
- let(:params){{email: "email@address.com", id: 1234}}
76
- it{ should == "https://api.hubapi.com/test/email@address.com/profile?id=1234&hapikey=demo" }
77
-
78
- context "containing a time" do
79
- let(:start_time) { Time.now }
80
- let(:params){{email: "email@address.com", id: 1234, start: start_time}}
81
- it{ should == "https://api.hubapi.com/test/email@address.com/profile?id=1234&start=#{start_time.to_i * 1000}&hapikey=demo" }
82
- end
83
-
84
- context "containing a range" do
85
- let(:start_time) { Time.now }
86
- let(:end_time) { Time.now + 1.year }
87
- let(:params){{email: "email@address.com", id: 1234, created__range: start_time..end_time }}
88
- it{ should == "https://api.hubapi.com/test/email@address.com/profile?id=1234&created__range=#{start_time.to_i * 1000}&created__range=#{end_time.to_i * 1000}&hapikey=demo" }
89
- end
90
- end
91
-
92
- context "with options" do
93
-
94
- let(:options){ {base_url: "https://cool.com", hapikey: false} }
95
- it{ should == "https://cool.com/test/test/profile"}
96
- end
97
- end
98
31
  end
@@ -0,0 +1,35 @@
1
+ describe "Deals API Live test", live: true do
2
+
3
+ before do
4
+ Hubspot.configure hapikey: "demo"
5
+ end
6
+
7
+ it 'should create, find, update and destroy' do
8
+ contact = Hubspot::Contact.find_by_email("create_delete_test@hsgemtest.com") rescue nil
9
+ contact ||= Hubspot::Contact.create!("create_delete_test@hsgemtest.com")
10
+
11
+ expect(contact).to be_present
12
+
13
+ deal = Hubspot::Deal.create!(62515, [], [contact.vid], { amount: 30, dealstage: 'closedwon' })
14
+ expect(deal).to be_present
15
+
16
+ expect(deal['dealstage']).to eql 'closedwon'
17
+
18
+ deal.update!({dealstage: 'closedlost'})
19
+
20
+ expect(deal['dealstage']).to eql 'closedlost'
21
+ expect(deal['amount']).to eql '30'
22
+
23
+ #to be sure it was updated
24
+ updated_deal = Hubspot::Deal.find(deal.deal_id)
25
+
26
+ expect(updated_deal['dealstage']).to eql 'closedlost'
27
+ expect(updated_deal['amount']).to eql '30'
28
+
29
+ expect(deal.destroy!).to be true
30
+ expect(contact.destroy!).to be true
31
+
32
+ # cant find anymore
33
+ expect { Hubspot::Deal.find(deal.deal_id) }.to raise_error
34
+ end
35
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,6 +7,7 @@ require 'simplecov'
7
7
  SimpleCov.root GEM_ROOT
8
8
  SimpleCov.start do
9
9
  add_filter "/spec/"
10
+ add_filter "/.bundle/"
10
11
  end
11
12
 
12
13
  require 'rspec'
@@ -39,4 +40,5 @@ RSpec.configure do |config|
39
40
  end
40
41
 
41
42
  config.extend CassetteHelper
43
+ config.extend TestsHelper
42
44
  end
@@ -0,0 +1,17 @@
1
+ module TestsHelper
2
+ def expect_count_and_offset(&block)
3
+ it 'returns only the number of objects specified by count' do
4
+ result = block.call(count: 2)
5
+ expect(result.size).to eql 2
6
+
7
+ result = block.call(count: 4)
8
+ expect(result.size).to eql 4
9
+ end
10
+
11
+ it 'returns objects by a specified offset' do
12
+ non_offset_objects = block.call(count: 2)
13
+ objects_with_offset = block.call(count: 2, offset: 2)
14
+ expect(non_offset_objects).to_not eql objects_with_offset
15
+ end
16
+ end
17
+ end
metadata CHANGED
@@ -1,195 +1,195 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubspot-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew DiMichele
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-12 00:00:00.000000000 Z
11
+ date: 2015-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.10.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.10.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rr
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: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - <
73
+ - - "<"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.10'
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: '1.10'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: vcr
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rdoc
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: jeweler
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: awesome_print
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: timecop
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: guard-rspec
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - '>='
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - '>='
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  description: hubspot-ruby is a wrapper for the HubSpot REST API
@@ -200,8 +200,8 @@ extra_rdoc_files:
200
200
  - LICENSE.txt
201
201
  - README.md
202
202
  files:
203
- - .document
204
- - .rspec
203
+ - ".document"
204
+ - ".rspec"
205
205
  - Gemfile
206
206
  - Gemfile.lock
207
207
  - Guardfile
@@ -213,13 +213,17 @@ files:
213
213
  - lib/hubspot-ruby.rb
214
214
  - lib/hubspot/blog.rb
215
215
  - lib/hubspot/config.rb
216
+ - lib/hubspot/connection.rb
216
217
  - lib/hubspot/contact.rb
218
+ - lib/hubspot/contact_list.rb
219
+ - lib/hubspot/contact_properties.rb
217
220
  - lib/hubspot/deal.rb
218
221
  - lib/hubspot/exceptions.rb
219
222
  - lib/hubspot/form.rb
220
223
  - lib/hubspot/topic.rb
221
224
  - lib/hubspot/utils.rb
222
225
  - lib/hubspot/version.rb
226
+ - spec/fixtures/vcr_cassettes/add_contacts_to_lists.yml
223
227
  - spec/fixtures/vcr_cassettes/blog_list.yml
224
228
  - spec/fixtures/vcr_cassettes/blog_posts.yml
225
229
  - spec/fixtures/vcr_cassettes/blog_posts_list.yml
@@ -230,31 +234,64 @@ files:
230
234
  - spec/fixtures/vcr_cassettes/contact_destroy.yml
231
235
  - spec/fixtures/vcr_cassettes/contact_example.yml
232
236
  - spec/fixtures/vcr_cassettes/contact_find_by_email.yml
237
+ - spec/fixtures/vcr_cassettes/contact_find_by_email_batch_mode.yml
233
238
  - spec/fixtures/vcr_cassettes/contact_find_by_id.yml
239
+ - spec/fixtures/vcr_cassettes/contact_find_by_id_batch_mode.yml
234
240
  - spec/fixtures/vcr_cassettes/contact_find_by_utk.yml
241
+ - spec/fixtures/vcr_cassettes/contact_find_by_utk_batch_mode.yml
242
+ - spec/fixtures/vcr_cassettes/contact_list_batch_find.yml
243
+ - spec/fixtures/vcr_cassettes/contact_list_destroy.yml
244
+ - spec/fixtures/vcr_cassettes/contact_list_example.yml
245
+ - spec/fixtures/vcr_cassettes/contact_list_find.yml
246
+ - spec/fixtures/vcr_cassettes/contact_list_refresh.yml
247
+ - spec/fixtures/vcr_cassettes/contact_list_update.yml
235
248
  - spec/fixtures/vcr_cassettes/contact_update.yml
249
+ - spec/fixtures/vcr_cassettes/contacts_among_list.yml
250
+ - spec/fixtures/vcr_cassettes/create_form.yml
251
+ - spec/fixtures/vcr_cassettes/create_list.yml
252
+ - spec/fixtures/vcr_cassettes/create_list_with_filters.yml
236
253
  - spec/fixtures/vcr_cassettes/deal_create.yml
237
254
  - spec/fixtures/vcr_cassettes/deal_example.yml
238
255
  - spec/fixtures/vcr_cassettes/deal_find.yml
239
256
  - spec/fixtures/vcr_cassettes/destroy_deal.yml
257
+ - spec/fixtures/vcr_cassettes/fail_to_create_form.yml
258
+ - spec/fixtures/vcr_cassettes/fail_to_create_list.yml
259
+ - spec/fixtures/vcr_cassettes/field_among_form.yml
260
+ - spec/fixtures/vcr_cassettes/fields_among_form.yml
240
261
  - spec/fixtures/vcr_cassettes/find_all_contacts.yml
262
+ - spec/fixtures/vcr_cassettes/find_all_dynamic_lists.yml
263
+ - spec/fixtures/vcr_cassettes/find_all_forms.yml
264
+ - spec/fixtures/vcr_cassettes/find_all_lists.yml
265
+ - spec/fixtures/vcr_cassettes/find_all_recent_contacts.yml
241
266
  - spec/fixtures/vcr_cassettes/find_all_recent_updated_deals.yml
267
+ - spec/fixtures/vcr_cassettes/find_all_stastic_lists.yml
268
+ - spec/fixtures/vcr_cassettes/form_destroy.yml
269
+ - spec/fixtures/vcr_cassettes/form_example.yml
270
+ - spec/fixtures/vcr_cassettes/form_find.yml
242
271
  - spec/fixtures/vcr_cassettes/form_post.yml
272
+ - spec/fixtures/vcr_cassettes/form_submit_data.yml
273
+ - spec/fixtures/vcr_cassettes/form_update.yml
243
274
  - spec/fixtures/vcr_cassettes/one_month_blog_posts_filter_state.yml
244
275
  - spec/fixtures/vcr_cassettes/one_month_blog_posts_list.yml
276
+ - spec/fixtures/vcr_cassettes/remove_contacts_from_lists.yml
245
277
  - spec/fixtures/vcr_cassettes/topic_list.yml
246
278
  - spec/fixtures/vcr_cassettes/topics_list.yml
247
279
  - spec/lib/hubspot-ruby_spec.rb
248
280
  - spec/lib/hubspot/blog_spec.rb
249
281
  - spec/lib/hubspot/config_spec.rb
282
+ - spec/lib/hubspot/connection_spec.rb
283
+ - spec/lib/hubspot/contact_list_spec.rb
284
+ - spec/lib/hubspot/contact_properties_spec.rb
250
285
  - spec/lib/hubspot/contact_spec.rb
251
286
  - spec/lib/hubspot/deal_spec.rb
252
287
  - spec/lib/hubspot/form_spec.rb
253
288
  - spec/lib/hubspot/topic_spec.rb
254
289
  - spec/lib/hubspot/utils_spec.rb
255
290
  - spec/live/contacts_integration_spec.rb
291
+ - spec/live/deals_integration_spec.rb
256
292
  - spec/spec_helper.rb
257
293
  - spec/support/cassette_helper.rb
294
+ - spec/support/tests_helper.rb
258
295
  homepage: http://github.com/omadahealth/hubspot-ruby
259
296
  licenses: []
260
297
  metadata: {}
@@ -264,17 +301,17 @@ require_paths:
264
301
  - lib
265
302
  required_ruby_version: !ruby/object:Gem::Requirement
266
303
  requirements:
267
- - - '>='
304
+ - - ">="
268
305
  - !ruby/object:Gem::Version
269
306
  version: '0'
270
307
  required_rubygems_version: !ruby/object:Gem::Requirement
271
308
  requirements:
272
- - - '>='
309
+ - - ">="
273
310
  - !ruby/object:Gem::Version
274
311
  version: '0'
275
312
  requirements: []
276
313
  rubyforge_project:
277
- rubygems_version: 2.4.1
314
+ rubygems_version: 2.2.2
278
315
  signing_key:
279
316
  specification_version: 4
280
317
  summary: hubspot-ruby is a wrapper for the HubSpot REST API