Skip to content

Commit ce7149b

Browse files
authored
Collections Endpoint Support (#523)
* Added Collections endpoint SDK support * Added test coverage
1 parent 7109920 commit ce7149b

File tree

6 files changed

+104
-0
lines changed

6 files changed

+104
-0
lines changed

lib/intercom.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'intercom/version'
44
require 'intercom/service/admin'
55
require 'intercom/service/article'
6+
require 'intercom/service/collection'
67
require 'intercom/service/company'
78
require 'intercom/service/contact'
89
require 'intercom/service/conversation'
@@ -25,6 +26,7 @@
2526
require 'intercom/user'
2627
require 'intercom/lead'
2728
require 'intercom/count'
29+
require 'intercom/collection'
2830
require 'intercom/company'
2931
require 'intercom/service/data_attribute'
3032
require 'intercom/note'

lib/intercom/client.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ def data_attributes
112112
Intercom::Service::DataAttribute.new(self)
113113
end
114114

115+
def collections
116+
Intercom::Service::Collection.new(self)
117+
end
118+
115119
def get(path, params)
116120
execute_request Intercom::Request.get(path, params)
117121
end

lib/intercom/collection.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'intercom/traits/api_resource'
2+
3+
module Intercom
4+
class Collection
5+
include Traits::ApiResource
6+
end
7+
end

lib/intercom/service/collection.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
require 'intercom/service/base_service'
2+
require 'intercom/api_operations/list'
3+
require 'intercom/api_operations/find'
4+
require 'intercom/api_operations/delete'
5+
require 'intercom/api_operations/save'
6+
7+
module Intercom
8+
module Service
9+
class Collection < BaseService
10+
include ApiOperations::List
11+
include ApiOperations::Find
12+
include ApiOperations::Delete
13+
include ApiOperations::Save
14+
15+
def collection_class
16+
Intercom::Collection
17+
end
18+
19+
def collection_name
20+
"help_center/collections"
21+
end
22+
end
23+
end
24+
end

spec/spec_helper.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,41 @@ def test_contact(email = 'bob@example.com', role = 'user')
157157
}
158158
end
159159

160+
def test_collection
161+
{
162+
'id' => '1',
163+
'workspace_id' => 'tx2p130c',
164+
'name' => 'Collection 1',
165+
'url' => 'http://www.intercom.test/help/',
166+
'order' => 1,
167+
'type' => 'collection',
168+
'description' => 'Collection desc',
169+
'icon' => 'book-bookmark'
170+
}
171+
end
172+
173+
def test_collection_list
174+
{
175+
'type' => 'list',
176+
'total_count' => 1,
177+
'pages' => {
178+
'page' => 1,
179+
'per_page' => 20,
180+
'total_pages' => 1
181+
},
182+
'data' => [{
183+
'id' => '1',
184+
'workspace_id' => 'tx2p130c',
185+
'name' => 'Collection 1',
186+
'url' => 'http://www.intercom.test/help/',
187+
'order' => 1,
188+
'type' => 'collection',
189+
'description' => 'Collection desc',
190+
'icon' => 'book-bookmark'
191+
}]
192+
}
193+
end
194+
160195
def test_visitor
161196
{
162197
'type' => 'visitor',

spec/unit/intercom/collection_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
require 'spec_helper'
2+
3+
describe Intercom::Collection do
4+
let(:client) { Intercom::Client.new(token: 'token') }
5+
6+
it 'creates a collection' do
7+
client.expects(:post).with('/help_center/collections', { 'name' => 'Collection 1', 'description' => 'Collection desc' }).returns(test_collection)
8+
client.collections.create(:name => 'Collection 1', :description => 'Collection desc')
9+
end
10+
11+
it 'lists collections' do
12+
client.expects(:get).with('/help_center/collections', {}).returns(test_collection_list)
13+
client.collections.all.each { |t| }
14+
end
15+
16+
it 'finds a collection' do
17+
client.expects(:get).with('/help_center/collections/1', {}).returns(test_collection)
18+
client.collections.find(id: '1')
19+
end
20+
21+
it 'updates a collection' do
22+
collection = Intercom::Collection.new(id: '12345')
23+
client.expects(:put).with('/help_center/collections/12345', {})
24+
client.collections.save(collection)
25+
end
26+
27+
it 'deletes a collection' do
28+
collection = Intercom::Collection.new(id: '12345')
29+
client.expects(:delete).with('/help_center/collections/12345', {})
30+
client.collections.delete(collection)
31+
end
32+
end

0 commit comments

Comments
 (0)