intercom 3.9.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +235 -222
  3. data/Rakefile +1 -1
  4. data/changes.txt +3 -0
  5. data/lib/intercom.rb +27 -22
  6. data/lib/intercom/api_operations/archive.rb +2 -1
  7. data/lib/intercom/api_operations/delete.rb +16 -0
  8. data/lib/intercom/api_operations/find.rb +5 -2
  9. data/lib/intercom/api_operations/find_all.rb +4 -3
  10. data/lib/intercom/api_operations/list.rb +4 -1
  11. data/lib/intercom/api_operations/load.rb +4 -2
  12. data/lib/intercom/api_operations/nested_resource.rb +70 -0
  13. data/lib/intercom/api_operations/save.rb +5 -4
  14. data/lib/intercom/api_operations/scroll.rb +4 -5
  15. data/lib/intercom/api_operations/search.rb +3 -2
  16. data/lib/intercom/base_collection_proxy.rb +72 -0
  17. data/lib/intercom/client.rb +20 -25
  18. data/lib/intercom/client_collection_proxy.rb +17 -39
  19. data/lib/intercom/company.rb +8 -0
  20. data/lib/intercom/contact.rb +21 -3
  21. data/lib/intercom/conversation.rb +4 -0
  22. data/lib/intercom/data_attribute.rb +7 -0
  23. data/lib/intercom/deprecated_leads_collection_proxy.rb +22 -0
  24. data/lib/intercom/deprecated_resources.rb +13 -0
  25. data/lib/intercom/errors.rb +3 -0
  26. data/lib/intercom/extended_api_operations/segments.rb +3 -1
  27. data/lib/intercom/extended_api_operations/tags.rb +3 -1
  28. data/lib/intercom/lead.rb +21 -0
  29. data/lib/intercom/lib/typed_json_deserializer.rb +42 -37
  30. data/lib/intercom/note.rb +4 -0
  31. data/lib/intercom/request.rb +37 -33
  32. data/lib/intercom/scroll_collection_proxy.rb +33 -38
  33. data/lib/intercom/search_collection_proxy.rb +30 -65
  34. data/lib/intercom/service/base_service.rb +7 -0
  35. data/lib/intercom/service/company.rb +0 -12
  36. data/lib/intercom/service/contact.rb +21 -10
  37. data/lib/intercom/service/conversation.rb +12 -3
  38. data/lib/intercom/service/data_attribute.rb +20 -0
  39. data/lib/intercom/service/lead.rb +41 -0
  40. data/lib/intercom/service/note.rb +4 -8
  41. data/lib/intercom/service/subscription.rb +2 -2
  42. data/lib/intercom/service/tag.rb +9 -9
  43. data/lib/intercom/service/visitor.rb +17 -8
  44. data/lib/intercom/tag.rb +4 -0
  45. data/lib/intercom/traits/api_resource.rb +28 -17
  46. data/lib/intercom/user.rb +12 -3
  47. data/lib/intercom/utils.rb +13 -2
  48. data/lib/intercom/version.rb +1 -1
  49. data/lib/intercom/visitor.rb +0 -2
  50. data/spec/spec_helper.rb +738 -513
  51. data/spec/unit/intercom/admin_spec.rb +2 -2
  52. data/spec/unit/intercom/base_collection_proxy_spec.rb +30 -0
  53. data/spec/unit/intercom/client_collection_proxy_spec.rb +41 -41
  54. data/spec/unit/intercom/client_spec.rb +25 -26
  55. data/spec/unit/intercom/company_spec.rb +13 -15
  56. data/spec/unit/intercom/contact_spec.rb +289 -33
  57. data/spec/unit/intercom/conversation_spec.rb +29 -7
  58. data/spec/unit/intercom/count_spec.rb +4 -4
  59. data/spec/unit/intercom/data_attribute_spec.rb +40 -0
  60. data/spec/unit/intercom/deprecated_leads_collection_proxy_spec.rb +17 -0
  61. data/spec/unit/intercom/event_spec.rb +9 -11
  62. data/spec/unit/intercom/job_spec.rb +24 -24
  63. data/spec/unit/intercom/lead_spec.rb +57 -0
  64. data/spec/unit/intercom/lib/flat_store_spec.rb +22 -20
  65. data/spec/unit/intercom/message_spec.rb +1 -1
  66. data/spec/unit/intercom/note_spec.rb +4 -10
  67. data/spec/unit/intercom/request_spec.rb +1 -1
  68. data/spec/unit/intercom/scroll_collection_proxy_spec.rb +40 -39
  69. data/spec/unit/intercom/search_collection_proxy_spec.rb +32 -28
  70. data/spec/unit/intercom/segment_spec.rb +2 -2
  71. data/spec/unit/intercom/subscription_spec.rb +5 -6
  72. data/spec/unit/intercom/tag_spec.rb +22 -14
  73. data/spec/unit/intercom/team_spec.rb +2 -2
  74. data/spec/unit/intercom/traits/api_resource_spec.rb +53 -51
  75. data/spec/unit/intercom/user_spec.rb +224 -226
  76. data/spec/unit/intercom/visitor_spec.rb +49 -0
  77. data/spec/unit/intercom_spec.rb +5 -3
  78. metadata +22 -7
  79. data/lib/intercom/customer.rb +0 -10
  80. data/lib/intercom/service/customer.rb +0 -14
  81. data/spec/unit/intercom/visitors_spec.rb +0 -61
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Intercom::Visitor' do
4
+ let (:client) { Intercom::Client.new(token: 'token') }
5
+
6
+ it 'can update a visitor with an id' do
7
+ visitor = Intercom::Visitor.new(:id => 'de45ae78gae1289cb')
8
+ client.expects(:put).with('/visitors/de45ae78gae1289cb', 'custom_attributes' => {})
9
+ client.visitors.save(visitor)
10
+ end
11
+
12
+ it 'can get a visitor' do
13
+ visitor = Intercom::Visitor.new(:id => 'de45ae78gae1289cb')
14
+ client.expects(:get).with('/visitors/de45ae78gae1289cb', {}).returns(test_visitor)
15
+ client.visitors.find(id: visitor.id)
16
+ end
17
+
18
+ describe 'converting' do
19
+ let(:visitor) { Intercom::Visitor.from_api(user_id: 'visitor_id') }
20
+ let(:user) { Intercom::Contact.from_api(id: 'user_id', role: 'user') }
21
+
22
+ it 'visitor to user' do
23
+ client.expects(:post).with(
24
+ '/visitors/convert',
25
+ visitor: { user_id: visitor.user_id },
26
+ user: { 'id' => user.id },
27
+ type: 'user'
28
+ ).returns(test_contact)
29
+
30
+ client.visitors.convert(visitor, user)
31
+ end
32
+
33
+ it 'visitor to lead' do
34
+ client.expects(:post).with(
35
+ '/visitors/convert',
36
+ visitor: { user_id: visitor.user_id },
37
+ type: 'lead'
38
+ ).returns(test_contact(role: 'lead'))
39
+
40
+ client.visitors.convert(visitor)
41
+ end
42
+ end
43
+
44
+ it 'deletes a visitor' do
45
+ visitor = Intercom::Visitor.new('id' => '1')
46
+ client.expects(:delete).with('/visitors/1', {}).returns(visitor)
47
+ client.visitors.delete(visitor)
48
+ end
49
+ end
@@ -1,7 +1,9 @@
1
- require "spec_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
2
4
 
3
5
  describe Intercom do
4
- it "has a version number" do
5
- Intercom::VERSION.must_match(/\d+\.\d+\.\d+/)
6
+ it 'has a version number' do
7
+ _(Intercom::VERSION).must_match(/\d+\.\d+\.\d+/)
6
8
  end
7
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.5
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben McRedmond
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2019-11-14 00:00:00.000000000 Z
18
+ date: 2020-01-30 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: minitest
@@ -150,26 +150,32 @@ files:
150
150
  - lib/intercom/api_operations/bulk/load_error_feed.rb
151
151
  - lib/intercom/api_operations/bulk/submit.rb
152
152
  - lib/intercom/api_operations/convert.rb
153
+ - lib/intercom/api_operations/delete.rb
153
154
  - lib/intercom/api_operations/find.rb
154
155
  - lib/intercom/api_operations/find_all.rb
155
156
  - lib/intercom/api_operations/list.rb
156
157
  - lib/intercom/api_operations/load.rb
158
+ - lib/intercom/api_operations/nested_resource.rb
157
159
  - lib/intercom/api_operations/request_hard_delete.rb
158
160
  - lib/intercom/api_operations/save.rb
159
161
  - lib/intercom/api_operations/scroll.rb
160
162
  - lib/intercom/api_operations/search.rb
163
+ - lib/intercom/base_collection_proxy.rb
161
164
  - lib/intercom/client.rb
162
165
  - lib/intercom/client_collection_proxy.rb
163
166
  - lib/intercom/company.rb
164
167
  - lib/intercom/contact.rb
165
168
  - lib/intercom/conversation.rb
166
169
  - lib/intercom/count.rb
167
- - lib/intercom/customer.rb
170
+ - lib/intercom/data_attribute.rb
171
+ - lib/intercom/deprecated_leads_collection_proxy.rb
172
+ - lib/intercom/deprecated_resources.rb
168
173
  - lib/intercom/errors.rb
169
174
  - lib/intercom/event.rb
170
175
  - lib/intercom/extended_api_operations/segments.rb
171
176
  - lib/intercom/extended_api_operations/tags.rb
172
177
  - lib/intercom/job.rb
178
+ - lib/intercom/lead.rb
173
179
  - lib/intercom/lib/dynamic_accessors.rb
174
180
  - lib/intercom/lib/dynamic_accessors_on_method_missing.rb
175
181
  - lib/intercom/lib/flat_store.rb
@@ -187,9 +193,10 @@ files:
187
193
  - lib/intercom/service/contact.rb
188
194
  - lib/intercom/service/conversation.rb
189
195
  - lib/intercom/service/count.rb
190
- - lib/intercom/service/customer.rb
196
+ - lib/intercom/service/data_attribute.rb
191
197
  - lib/intercom/service/event.rb
192
198
  - lib/intercom/service/job.rb
199
+ - lib/intercom/service/lead.rb
193
200
  - lib/intercom/service/message.rb
194
201
  - lib/intercom/service/note.rb
195
202
  - lib/intercom/service/segment.rb
@@ -210,14 +217,18 @@ files:
210
217
  - lib/intercom/visitor.rb
211
218
  - spec/spec_helper.rb
212
219
  - spec/unit/intercom/admin_spec.rb
220
+ - spec/unit/intercom/base_collection_proxy_spec.rb
213
221
  - spec/unit/intercom/client_collection_proxy_spec.rb
214
222
  - spec/unit/intercom/client_spec.rb
215
223
  - spec/unit/intercom/company_spec.rb
216
224
  - spec/unit/intercom/contact_spec.rb
217
225
  - spec/unit/intercom/conversation_spec.rb
218
226
  - spec/unit/intercom/count_spec.rb
227
+ - spec/unit/intercom/data_attribute_spec.rb
228
+ - spec/unit/intercom/deprecated_leads_collection_proxy_spec.rb
219
229
  - spec/unit/intercom/event_spec.rb
220
230
  - spec/unit/intercom/job_spec.rb
231
+ - spec/unit/intercom/lead_spec.rb
221
232
  - spec/unit/intercom/lib/flat_store_spec.rb
222
233
  - spec/unit/intercom/message_spec.rb
223
234
  - spec/unit/intercom/note_spec.rb
@@ -230,7 +241,7 @@ files:
230
241
  - spec/unit/intercom/team_spec.rb
231
242
  - spec/unit/intercom/traits/api_resource_spec.rb
232
243
  - spec/unit/intercom/user_spec.rb
233
- - spec/unit/intercom/visitors_spec.rb
244
+ - spec/unit/intercom/visitor_spec.rb
234
245
  - spec/unit/intercom_spec.rb
235
246
  homepage: https://www.intercom.io
236
247
  licenses:
@@ -252,21 +263,25 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
263
  version: '0'
253
264
  requirements: []
254
265
  rubyforge_project:
255
- rubygems_version: 2.7.6.2
266
+ rubygems_version: 2.5.2.3
256
267
  signing_key:
257
268
  specification_version: 4
258
269
  summary: Ruby bindings for the Intercom API
259
270
  test_files:
260
271
  - spec/spec_helper.rb
261
272
  - spec/unit/intercom/admin_spec.rb
273
+ - spec/unit/intercom/base_collection_proxy_spec.rb
262
274
  - spec/unit/intercom/client_collection_proxy_spec.rb
263
275
  - spec/unit/intercom/client_spec.rb
264
276
  - spec/unit/intercom/company_spec.rb
265
277
  - spec/unit/intercom/contact_spec.rb
266
278
  - spec/unit/intercom/conversation_spec.rb
267
279
  - spec/unit/intercom/count_spec.rb
280
+ - spec/unit/intercom/data_attribute_spec.rb
281
+ - spec/unit/intercom/deprecated_leads_collection_proxy_spec.rb
268
282
  - spec/unit/intercom/event_spec.rb
269
283
  - spec/unit/intercom/job_spec.rb
284
+ - spec/unit/intercom/lead_spec.rb
270
285
  - spec/unit/intercom/lib/flat_store_spec.rb
271
286
  - spec/unit/intercom/message_spec.rb
272
287
  - spec/unit/intercom/note_spec.rb
@@ -279,5 +294,5 @@ test_files:
279
294
  - spec/unit/intercom/team_spec.rb
280
295
  - spec/unit/intercom/traits/api_resource_spec.rb
281
296
  - spec/unit/intercom/user_spec.rb
282
- - spec/unit/intercom/visitors_spec.rb
297
+ - spec/unit/intercom/visitor_spec.rb
283
298
  - spec/unit/intercom_spec.rb
@@ -1,10 +0,0 @@
1
- require 'intercom/traits/api_resource'
2
-
3
- module Intercom
4
- class Customer
5
- include Traits::ApiResource
6
-
7
- def identity_vars ; [:id, :email, :user_id] ; end
8
- def flat_store_attributes ; [:custom_attributes] ; end
9
- end
10
- end
@@ -1,14 +0,0 @@
1
- require 'intercom/service/base_service'
2
- require 'intercom/api_operations/search'
3
-
4
- module Intercom
5
- module Service
6
- class Customer < BaseService
7
- include ApiOperations::Search
8
-
9
- def collection_class
10
- Intercom::Customer
11
- end
12
- end
13
- end
14
- end
@@ -1,61 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "Intercom::Visitors" do
4
- let (:client) { Intercom::Client.new(app_id: 'app_id', api_key: 'api_key') }
5
-
6
- it 'should be listable' do
7
- proxy = client.visitors.all
8
- proxy.resource_name.must_equal 'visitors'
9
- proxy.finder_url.must_equal '/visitors'
10
- proxy.resource_class.must_equal Intercom::Visitor
11
- end
12
-
13
- it 'can update a visitor with an id' do
14
- visitor = Intercom::Visitor.new(:id => "de45ae78gae1289cb")
15
- client.expects(:put).with("/visitors/de45ae78gae1289cb", {'custom_attributes' => {}})
16
- client.visitors.save(visitor)
17
- end
18
-
19
- describe 'converting' do
20
- let(:visitor) { Intercom::Visitor.from_api(user_id: 'visitor_id') }
21
- let(:user) { Intercom::User.from_api(id: 'user_id') }
22
-
23
- it 'visitor to user' do
24
- client.expects(:post).with(
25
- "/visitors/convert",
26
- {
27
- visitor: { user_id: visitor.user_id },
28
- user: { 'id' => user.id },
29
- type:'user'
30
- }
31
- ).returns(test_user)
32
-
33
- client.visitors.convert(visitor, user)
34
- end
35
-
36
- it 'visitor to lead' do
37
- client.expects(:post).with(
38
- "/visitors/convert",
39
- {
40
- visitor: { user_id: visitor.user_id },
41
- type:'lead'
42
- }
43
- ).returns(test_user)
44
-
45
- client.visitors.convert(visitor)
46
- end
47
- end
48
-
49
- it "returns a ClientCollectionProxy for all without making any requests" do
50
- client.expects(:execute_request).never
51
- all = client.visitors.all
52
- all.must_be_instance_of(Intercom::ClientCollectionProxy)
53
- end
54
-
55
- it "deletes a visitor" do
56
- visitor = Intercom::Visitor.new("id" => "1")
57
- client.expects(:delete).with("/visitors/1", {}).returns(visitor)
58
- client.visitors.delete(visitor)
59
- end
60
-
61
- end