hubspot-ruby 0.1.8 → 0.2.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/Gemfile +2 -22
- data/Gemfile.lock +14 -11
- data/LICENSE.txt +0 -2
- data/README.md +8 -6
- data/RELEASING.md +4 -5
- data/Rakefile +2 -17
- data/hubspot-ruby.gemspec +20 -157
- data/lib/hubspot-ruby.rb +10 -0
- data/lib/hubspot/blog.rb +1 -2
- data/lib/hubspot/company.rb +149 -0
- data/lib/hubspot/company_properties.rb +59 -0
- data/lib/hubspot/config.rb +10 -4
- data/lib/hubspot/connection.rb +12 -4
- data/lib/hubspot/contact.rb +52 -31
- data/lib/hubspot/contact_list.rb +16 -16
- data/lib/hubspot/contact_properties.rb +53 -6
- data/lib/hubspot/deal.rb +2 -2
- data/lib/hubspot/deal_pipeline.rb +43 -0
- data/lib/hubspot/deal_properties.rb +59 -0
- data/lib/hubspot/engagement.rb +133 -0
- data/lib/hubspot/exceptions.rb +1 -1
- data/lib/hubspot/form.rb +20 -20
- data/lib/hubspot/owner.rb +49 -0
- data/lib/hubspot/properties.rb +119 -0
- data/lib/hubspot/railtie.rb +10 -0
- data/lib/hubspot/topic.rb +2 -2
- data/lib/hubspot/utils.rb +106 -3
- data/spec/lib/hubspot/blog_spec.rb +2 -0
- data/spec/lib/hubspot/company_properties_spec.rb +239 -0
- data/spec/lib/hubspot/company_spec.rb +190 -0
- data/spec/lib/hubspot/config_spec.rb +1 -1
- data/spec/lib/hubspot/connection_spec.rb +33 -27
- data/spec/lib/hubspot/contact_list_spec.rb +61 -61
- data/spec/lib/hubspot/contact_properties_spec.rb +234 -3
- data/spec/lib/hubspot/contact_spec.rb +140 -71
- data/spec/lib/hubspot/deal_properties_spec.rb +254 -0
- data/spec/lib/hubspot/engagement_spec.rb +87 -0
- data/spec/lib/hubspot/form_spec.rb +72 -60
- data/spec/lib/hubspot/owner_spec.rb +56 -0
- data/spec/lib/hubspot/properties_spec.rb +45 -0
- data/spec/lib/hubspot/topic_spec.rb +0 -1
- data/spec/lib/hubspot/utils_spec.rb +113 -15
- data/spec/lib/tasks/properties_spec.rb +90 -0
- data/spec/live/companies_integration_spec.rb +23 -0
- data/spec/live/companies_properties_integration_spec.rb +120 -0
- data/spec/live/contacts_integration_spec.rb +1 -1
- data/spec/live/contacts_properties_integration_spec.rb +120 -0
- data/spec/live/deal_properties_integration_spec.rb +123 -0
- data/spec/live/deals_integration_spec.rb +1 -1
- data/spec/support/cassette_helper.rb +1 -1
- data/spec/support/tests_helper.rb +3 -3
- metadata +39 -78
- data/.document +0 -5
- data/lib/hubspot/version.rb +0 -9
- data/spec/fixtures/vcr_cassettes/add_contacts_to_lists.yml +0 -281
- data/spec/fixtures/vcr_cassettes/blog_list.yml +0 -180
- data/spec/fixtures/vcr_cassettes/blog_posts.yml +0 -107
- data/spec/fixtures/vcr_cassettes/blog_posts_list.yml +0 -6463
- data/spec/fixtures/vcr_cassettes/contact_create.yml +0 -64
- data/spec/fixtures/vcr_cassettes/contact_create_existing_email.yml +0 -62
- data/spec/fixtures/vcr_cassettes/contact_create_invalid_email.yml +0 -63
- data/spec/fixtures/vcr_cassettes/contact_create_with_params.yml +0 -64
- data/spec/fixtures/vcr_cassettes/contact_destroy.yml +0 -131
- data/spec/fixtures/vcr_cassettes/contact_example.yml +0 -32
- data/spec/fixtures/vcr_cassettes/contact_find_by_email.yml +0 -59
- data/spec/fixtures/vcr_cassettes/contact_find_by_email_batch_mode.yml +0 -509
- data/spec/fixtures/vcr_cassettes/contact_find_by_id.yml +0 -59
- data/spec/fixtures/vcr_cassettes/contact_find_by_id_batch_mode.yml +0 -33
- data/spec/fixtures/vcr_cassettes/contact_find_by_utk.yml +0 -83
- data/spec/fixtures/vcr_cassettes/contact_find_by_utk_batch_mode.yml +0 -33
- data/spec/fixtures/vcr_cassettes/contact_list_batch_find.yml +0 -65
- data/spec/fixtures/vcr_cassettes/contact_list_destroy.yml +0 -63
- data/spec/fixtures/vcr_cassettes/contact_list_example.yml +0 -33
- data/spec/fixtures/vcr_cassettes/contact_list_find.yml +0 -96
- data/spec/fixtures/vcr_cassettes/contact_list_refresh.yml +0 -33
- data/spec/fixtures/vcr_cassettes/contact_list_update.yml +0 -36
- data/spec/fixtures/vcr_cassettes/contact_update.yml +0 -66
- data/spec/fixtures/vcr_cassettes/contacts_among_list.yml +0 -189
- data/spec/fixtures/vcr_cassettes/create_form.yml +0 -39
- data/spec/fixtures/vcr_cassettes/create_list.yml +0 -36
- data/spec/fixtures/vcr_cassettes/create_list_with_filters.yml +0 -36
- data/spec/fixtures/vcr_cassettes/deal_create.yml +0 -61
- data/spec/fixtures/vcr_cassettes/deal_example.yml +0 -166
- data/spec/fixtures/vcr_cassettes/deal_find.yml +0 -115
- data/spec/fixtures/vcr_cassettes/destroy_deal.yml +0 -221
- data/spec/fixtures/vcr_cassettes/fail_to_create_form.yml +0 -35
- data/spec/fixtures/vcr_cassettes/fail_to_create_list.yml +0 -35
- data/spec/fixtures/vcr_cassettes/field_among_form.yml +0 -34
- data/spec/fixtures/vcr_cassettes/fields_among_form.yml +0 -35
- data/spec/fixtures/vcr_cassettes/find_all_contacts.yml +0 -297
- data/spec/fixtures/vcr_cassettes/find_all_dynamic_lists.yml +0 -104
- data/spec/fixtures/vcr_cassettes/find_all_forms.yml +0 -15378
- data/spec/fixtures/vcr_cassettes/find_all_lists.yml +0 -138
- data/spec/fixtures/vcr_cassettes/find_all_recent_contacts.yml +0 -33
- data/spec/fixtures/vcr_cassettes/find_all_recent_updated_deals.yml +0 -130
- data/spec/fixtures/vcr_cassettes/find_all_stastic_lists.yml +0 -21876
- data/spec/fixtures/vcr_cassettes/form_destroy.yml +0 -64
- data/spec/fixtures/vcr_cassettes/form_example.yml +0 -39
- data/spec/fixtures/vcr_cassettes/form_find.yml +0 -69
- data/spec/fixtures/vcr_cassettes/form_post.yml +0 -31
- data/spec/fixtures/vcr_cassettes/form_submit_data.yml +0 -130
- data/spec/fixtures/vcr_cassettes/form_update.yml +0 -77
- data/spec/fixtures/vcr_cassettes/one_month_blog_posts_filter_state.yml +0 -19127
- data/spec/fixtures/vcr_cassettes/one_month_blog_posts_list.yml +0 -34963
- data/spec/fixtures/vcr_cassettes/remove_contacts_from_lists.yml +0 -315
- data/spec/fixtures/vcr_cassettes/topic_list.yml +0 -48
- data/spec/fixtures/vcr_cassettes/topics_list.yml +0 -86
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
|
|
4
|
+
describe 'properties rake tasks', live: true do
|
|
5
|
+
before :all do
|
|
6
|
+
Rake.application.rake_require 'tasks/properties'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context 'Contact Properties' do
|
|
10
|
+
let(:file) { '/tmp/contact-demo-props.json' }
|
|
11
|
+
let(:hapikey) { 'demo' }
|
|
12
|
+
|
|
13
|
+
describe 'hubspot:dump_properties' do
|
|
14
|
+
let :run_rake_task do
|
|
15
|
+
Rake::Task['hubspot:dump_properties'].reenable
|
|
16
|
+
Rake.application.invoke_task "hubspot:dump_properties[contact,#{file},#{hapikey}]"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'saves the properties to a file' do
|
|
20
|
+
run_rake_task
|
|
21
|
+
|
|
22
|
+
props = JSON.parse(File.read(file))
|
|
23
|
+
expect(props.count).to be > 0
|
|
24
|
+
expect(props['groups'].count).to be > 0
|
|
25
|
+
expect(props['properties'].count).to be > 0
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'hubspot:restore_properties' do
|
|
30
|
+
let :run_rake_task do
|
|
31
|
+
Rake::Task['hubspot:restore_properties'].reenable
|
|
32
|
+
Rake.application.invoke_task "hubspot:restore_properties[contact,#{file},#{hapikey}]"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it 'should not need to make any changes' do
|
|
36
|
+
results = capture_stdout { run_rake_task }
|
|
37
|
+
expect(results.include?('Created: ')).to be_false
|
|
38
|
+
expect(results.include?('Updated: ')).to be_false
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'Deal Properties' do
|
|
45
|
+
let(:file) { '/tmp/deal-demo-props.json' }
|
|
46
|
+
let(:hapikey) { 'demo' }
|
|
47
|
+
|
|
48
|
+
describe 'hubspot:dump_properties' do
|
|
49
|
+
let :run_rake_task do
|
|
50
|
+
Rake::Task['hubspot:dump_properties'].reenable
|
|
51
|
+
Rake.application.invoke_task "hubspot:dump_properties[deal,#{file},#{hapikey}]"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it 'saves the properties to a file' do
|
|
55
|
+
pending 'Hubspot disabled this call using the demo hapikey'
|
|
56
|
+
|
|
57
|
+
run_rake_task
|
|
58
|
+
|
|
59
|
+
props = JSON.parse(File.read(file))
|
|
60
|
+
expect(props.count).to be > 0
|
|
61
|
+
expect(props['groups'].count).to be > 0
|
|
62
|
+
expect(props['properties'].count).to be > 0
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe 'hubspot:restore_properties' do
|
|
67
|
+
let :run_rake_task do
|
|
68
|
+
Rake::Task['hubspot:restore_properties'].reenable
|
|
69
|
+
Rake.application.invoke_task "hubspot:restore_properties[deal,#{file},#{hapikey}]"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'should not need to make any changes' do
|
|
73
|
+
pending 'Hubspot disabled this call using the demo hapikey'
|
|
74
|
+
|
|
75
|
+
results = capture_stdout { run_rake_task }
|
|
76
|
+
expect(results.include?('Created: ')).to be_false
|
|
77
|
+
expect(results.include?('Updated: ')).to be_false
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def capture_stdout
|
|
84
|
+
previous, $stdout = $stdout, StringIO.new
|
|
85
|
+
yield
|
|
86
|
+
$stdout.string
|
|
87
|
+
ensure
|
|
88
|
+
$stdout = previous
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
describe "Companies API Live test", live: true do
|
|
2
|
+
# Let's try to hit all the API endpoints at least once
|
|
3
|
+
|
|
4
|
+
before do
|
|
5
|
+
Hubspot.configure hapikey: "demo"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'find, update and destroy a company' do
|
|
9
|
+
companies = Hubspot::Company.find_by_domain("create-delete-test.com")
|
|
10
|
+
companies.first.destroy! if companies.any?
|
|
11
|
+
|
|
12
|
+
company = Hubspot::Company.create!("Create Delete Test", domain: "create-delete-test.com")
|
|
13
|
+
expect(company).to be_present
|
|
14
|
+
|
|
15
|
+
company.update! name: "Create Delete Test 2"
|
|
16
|
+
company = Hubspot::Company.find_by_id(company.vid)
|
|
17
|
+
|
|
18
|
+
expect(company["name"]).to eql "Create Delete Test 2"
|
|
19
|
+
|
|
20
|
+
expect(company.destroy!).to be_true
|
|
21
|
+
expect(Hubspot::Company.find_by_domain("create-delete-test.com")).to eq []
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
describe 'Company Properties API Live test', live: true do
|
|
2
|
+
# Let's try to hit all the API endpoints at least once
|
|
3
|
+
|
|
4
|
+
before do
|
|
5
|
+
Hubspot.configure hapikey: "demo"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should return a list of properties' do
|
|
9
|
+
result = Hubspot::CompanyProperties.all
|
|
10
|
+
|
|
11
|
+
expect(result.count).to be > 0
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'should return a list of properties for the specified groups' do
|
|
15
|
+
group_names = %w(companyinformation)
|
|
16
|
+
|
|
17
|
+
result = Hubspot::CompanyProperties.all({}, { include: group_names })
|
|
18
|
+
expect(result.count).to be > 0
|
|
19
|
+
result.each do |entry|
|
|
20
|
+
expect(group_names.include?(entry['groupName']))
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'should return a list of properties except for the specified groups' do
|
|
25
|
+
group_names = %w(companyinformation)
|
|
26
|
+
|
|
27
|
+
result = Hubspot::CompanyProperties.all({}, { exclude: group_names })
|
|
28
|
+
expect(result.count).to be > 0
|
|
29
|
+
result.each do |entry|
|
|
30
|
+
expect(group_names.include?(entry['groupName'])).to be_false
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'should return a list of groups' do
|
|
35
|
+
result = Hubspot::CompanyProperties.groups
|
|
36
|
+
|
|
37
|
+
expect(result.count).to be > 0
|
|
38
|
+
expect(result[0].slice(*%w(name displayName displayOrder)).count).to eq(3)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should return list of groups and their properties' do
|
|
42
|
+
result = Hubspot::CompanyProperties.groups({ includeProperties: true })
|
|
43
|
+
|
|
44
|
+
expect(result.count).to be > 0
|
|
45
|
+
expect(result[0].slice(*%w(name displayName displayOrder properties)).count).to eq(4)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'should return only the requested groups' do
|
|
49
|
+
group_names = %w(companyinformation )
|
|
50
|
+
result = Hubspot::CompanyProperties.groups({}, { include: group_names })
|
|
51
|
+
|
|
52
|
+
expect(result.count).to eq(group_names.count)
|
|
53
|
+
result.each do |entry|
|
|
54
|
+
expect(group_names.include?(entry['name']))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'should filter out the excluded groups' do
|
|
59
|
+
group_names = %w(companyinformation )
|
|
60
|
+
result = Hubspot::CompanyProperties.groups({}, { exclude: group_names })
|
|
61
|
+
|
|
62
|
+
result.each do |entry|
|
|
63
|
+
expect(group_names.include?(entry['name'])).to be_false
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe 'should create, update, and delete properties' do
|
|
68
|
+
let(:data) {
|
|
69
|
+
{ 'name' => 'testfield909',
|
|
70
|
+
'label' => 'A test property',
|
|
71
|
+
'description' => 'This is a test property',
|
|
72
|
+
'groupName' => 'companyinformation',
|
|
73
|
+
'type' => 'string',
|
|
74
|
+
'fieldType' => 'text',
|
|
75
|
+
'formField' => false }
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
it 'should create a new property' do
|
|
79
|
+
response = Hubspot::CompanyProperties.create!(data)
|
|
80
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'should update an existing property' do
|
|
84
|
+
data['label'] = 'An updated test property'
|
|
85
|
+
|
|
86
|
+
response = Hubspot::CompanyProperties.update!(data['name'], data)
|
|
87
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'should delete an existing property' do
|
|
91
|
+
response = Hubspot::CompanyProperties.delete!(data['name'])
|
|
92
|
+
expect(response).to be nil
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'should create, update, and delete property groups' do
|
|
97
|
+
let(:data) {
|
|
98
|
+
{ 'name' => 'testgroup99',
|
|
99
|
+
'displayName' => 'Test Group 99'
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
it 'should create a new property group' do
|
|
104
|
+
response = Hubspot::CompanyProperties.create_group!(data)
|
|
105
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it 'should update an existing property group' do
|
|
109
|
+
data['displayName'] = 'Test Group 99 Modified'
|
|
110
|
+
|
|
111
|
+
response = Hubspot::CompanyProperties.update_group!(data['name'], data)
|
|
112
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'should delete an existing property group' do
|
|
116
|
+
response = Hubspot::CompanyProperties.delete_group!(data['name'])
|
|
117
|
+
expect(response).to be nil
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
describe 'Contact Properties API Live test', live: true do
|
|
2
|
+
# Let's try to hit all the API endpoints at least once
|
|
3
|
+
|
|
4
|
+
before do
|
|
5
|
+
Hubspot.configure hapikey: "demo"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should return a list of properties' do
|
|
9
|
+
result = Hubspot::ContactProperties.all
|
|
10
|
+
|
|
11
|
+
expect(result.count).to be > 0
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'should return a list of properties for the specified groups' do
|
|
15
|
+
group_names = %w(contactinformation salesforceinformation)
|
|
16
|
+
|
|
17
|
+
result = Hubspot::ContactProperties.all({}, { include: group_names })
|
|
18
|
+
expect(result.count).to be > 0
|
|
19
|
+
result.each do |entry|
|
|
20
|
+
expect(group_names.include?(entry['groupName']))
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'should return a list of properties except for the specified groups' do
|
|
25
|
+
group_names = %w(contactinformation salesforceinformation)
|
|
26
|
+
|
|
27
|
+
result = Hubspot::ContactProperties.all({}, { exclude: group_names })
|
|
28
|
+
expect(result.count).to be > 0
|
|
29
|
+
result.each do |entry|
|
|
30
|
+
expect(group_names.include?(entry['groupName'])).to be_false
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'should return a list of groups' do
|
|
35
|
+
result = Hubspot::ContactProperties.groups
|
|
36
|
+
|
|
37
|
+
expect(result.count).to be > 0
|
|
38
|
+
expect(result[0].slice(*%w(name displayName displayOrder)).count).to eq(3)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it 'should return list of groups and their properties' do
|
|
42
|
+
result = Hubspot::ContactProperties.groups({ includeProperties: true })
|
|
43
|
+
|
|
44
|
+
expect(result.count).to be > 0
|
|
45
|
+
expect(result[0].slice(*%w(name displayName displayOrder properties)).count).to eq(4)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'should return only the requested groups' do
|
|
49
|
+
group_names = %w(contactinformation salesforceinformation)
|
|
50
|
+
result = Hubspot::ContactProperties.groups({}, { include: group_names })
|
|
51
|
+
|
|
52
|
+
expect(result.count).to eq(group_names.count)
|
|
53
|
+
result.each do |entry|
|
|
54
|
+
expect(group_names.include?(entry['name']))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'should filter out the excluded groups' do
|
|
59
|
+
group_names = %w(contactinformation salesforceinformation)
|
|
60
|
+
result = Hubspot::ContactProperties.groups({}, { exclude: group_names })
|
|
61
|
+
|
|
62
|
+
result.each do |entry|
|
|
63
|
+
expect(group_names.include?(entry['name'])).to be_false
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe 'should create, update, and delete properties' do
|
|
68
|
+
let(:data) {
|
|
69
|
+
{ 'name' => 'testfield909',
|
|
70
|
+
'label' => 'A test property',
|
|
71
|
+
'description' => 'This is a test property',
|
|
72
|
+
'groupName' => 'contactinformation',
|
|
73
|
+
'type' => 'string',
|
|
74
|
+
'fieldType' => 'text',
|
|
75
|
+
'formField' => false }
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
it 'should create a new property' do
|
|
79
|
+
response = Hubspot::ContactProperties.create!(data)
|
|
80
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'should update an existing property' do
|
|
84
|
+
data['label'] = 'An updated test property'
|
|
85
|
+
|
|
86
|
+
response = Hubspot::ContactProperties.update!(data['name'], data)
|
|
87
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'should delete an existing property' do
|
|
91
|
+
response = Hubspot::ContactProperties.delete!(data['name'])
|
|
92
|
+
expect(response).to be nil
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'should create, update, and delete property groups' do
|
|
97
|
+
let(:data) {
|
|
98
|
+
{ 'name' => 'testgroup99',
|
|
99
|
+
'displayName' => 'Test Group 99'
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
it 'should create a new property group' do
|
|
104
|
+
response = Hubspot::ContactProperties.create_group!(data)
|
|
105
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it 'should update an existing property group' do
|
|
109
|
+
data['displayName'] = 'Test Group 99 Modified'
|
|
110
|
+
|
|
111
|
+
response = Hubspot::ContactProperties.update_group!(data['name'], data)
|
|
112
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'should delete an existing property group' do
|
|
116
|
+
response = Hubspot::ContactProperties.delete_group!(data['name'])
|
|
117
|
+
expect(response).to be nil
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
describe 'Deal Properties API Live test', live: true do
|
|
2
|
+
# Let's try to hit all the API endpoints at least once
|
|
3
|
+
|
|
4
|
+
before do
|
|
5
|
+
Hubspot.configure hapikey: 'demo'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should return a list of properties' do
|
|
9
|
+
pending 'Broken by Hubspot'
|
|
10
|
+
result = Hubspot::DealProperties.all
|
|
11
|
+
|
|
12
|
+
expect(result.count).to be > 0
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'should return a list of properties for the specified groups' do
|
|
16
|
+
pending 'Broken by Hubspot'
|
|
17
|
+
group_names = %w(dealinformation)
|
|
18
|
+
|
|
19
|
+
result = Hubspot::DealProperties.all({}, { include: group_names })
|
|
20
|
+
expect(result.count).to be > 0
|
|
21
|
+
result.each do |entry|
|
|
22
|
+
expect(group_names.include?(entry['groupName']))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'should return a list of properties except for the specified groups' do
|
|
27
|
+
pending 'Broken by Hubspot'
|
|
28
|
+
group_names = %w(dealinformation)
|
|
29
|
+
|
|
30
|
+
result = Hubspot::DealProperties.all({}, { exclude: group_names })
|
|
31
|
+
expect(result.count).to be > 0
|
|
32
|
+
result.each do |entry|
|
|
33
|
+
expect(group_names.include?(entry['groupName'])).to be_false
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'should return a list of groups' do
|
|
38
|
+
result = Hubspot::DealProperties.groups
|
|
39
|
+
|
|
40
|
+
expect(result.count).to be > 0
|
|
41
|
+
expect(result[0].keys).to eql(%w(name displayName displayOrder hubspotDefined))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'should return list of groups and their properties' do
|
|
45
|
+
result = Hubspot::DealProperties.groups({ includeProperties: true })
|
|
46
|
+
|
|
47
|
+
expect(result.count).to be > 0
|
|
48
|
+
expect(result[0].keys).to eql(%w(name displayName displayOrder hubspotDefined properties))
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it 'should return only the requested groups' do
|
|
52
|
+
group_names = %w(dealinformation)
|
|
53
|
+
result = Hubspot::DealProperties.groups({}, { include: group_names })
|
|
54
|
+
|
|
55
|
+
expect(result.count).to eq(group_names.count)
|
|
56
|
+
result.each do |entry|
|
|
57
|
+
expect(group_names.include?(entry['name']))
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it 'should filter out the excluded groups' do
|
|
62
|
+
group_names = %w(dealinformation)
|
|
63
|
+
result = Hubspot::DealProperties.groups({}, { exclude: group_names })
|
|
64
|
+
|
|
65
|
+
result.each do |entry|
|
|
66
|
+
expect(group_names.include?(entry['name'])).to be_false
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'should create, update, and delete properties' do
|
|
71
|
+
let(:data) {
|
|
72
|
+
{ 'name' => 'testfield909',
|
|
73
|
+
'label' => 'A test property',
|
|
74
|
+
'description' => 'This is a test property',
|
|
75
|
+
'groupName' => 'dealinformation',
|
|
76
|
+
'type' => 'string',
|
|
77
|
+
'fieldType' => 'text',
|
|
78
|
+
'formField' => false }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
it 'should create a new property' do
|
|
82
|
+
response = Hubspot::DealProperties.create!(data)
|
|
83
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'should update an existing property' do
|
|
87
|
+
data['label'] = 'An updated test property'
|
|
88
|
+
|
|
89
|
+
response = Hubspot::DealProperties.update!(data['name'], data)
|
|
90
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'should delete an existing property' do
|
|
94
|
+
response = Hubspot::DealProperties.delete!(data['name'])
|
|
95
|
+
expect(response).to be nil
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe 'should create, update, and delete property groups' do
|
|
100
|
+
let(:data) {
|
|
101
|
+
{ 'name' => 'testgroup99',
|
|
102
|
+
'displayName' => 'Test Group 99'
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
it 'should create a new property group' do
|
|
107
|
+
response = Hubspot::DealProperties.create_group!(data)
|
|
108
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it 'should update an existing property group' do
|
|
112
|
+
data['displayName'] = 'Test Group 99 Modified'
|
|
113
|
+
|
|
114
|
+
response = Hubspot::DealProperties.update_group!(data['name'], data)
|
|
115
|
+
data.map { |key, val| expect(response[key]).to eql(val) }
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it 'should delete an existing property group' do
|
|
119
|
+
response = Hubspot::DealProperties.delete_group!(data['name'])
|
|
120
|
+
expect(response).to be nil
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|