From a713bef9f8340e41e9474f9f1b7e5e26595fce03 Mon Sep 17 00:00:00 2001 From: Rahul D'souza Date: Mon, 18 May 2020 12:00:55 +0530 Subject: [PATCH 1/2] Added Collections endpoint SDK support --- lib/intercom.rb | 2 ++ lib/intercom/client.rb | 4 ++++ lib/intercom/collection.rb | 7 +++++++ lib/intercom/service/collection.rb | 24 ++++++++++++++++++++++++ spec/spec_helper.rb | 2 +- 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 lib/intercom/collection.rb create mode 100644 lib/intercom/service/collection.rb diff --git a/lib/intercom.rb b/lib/intercom.rb index ba217475..e6d76f2f 100644 --- a/lib/intercom.rb +++ b/lib/intercom.rb @@ -3,6 +3,7 @@ require 'intercom/version' require 'intercom/service/admin' require 'intercom/service/article' +require 'intercom/service/collection' require 'intercom/service/company' require 'intercom/service/contact' require 'intercom/service/conversation' @@ -25,6 +26,7 @@ require 'intercom/user' require 'intercom/lead' require 'intercom/count' +require 'intercom/collection' require 'intercom/company' require 'intercom/service/data_attribute' require 'intercom/note' diff --git a/lib/intercom/client.rb b/lib/intercom/client.rb index 612e6f9c..d889be55 100644 --- a/lib/intercom/client.rb +++ b/lib/intercom/client.rb @@ -112,6 +112,10 @@ def data_attributes Intercom::Service::DataAttribute.new(self) end + def collections + Intercom::Service::Collection.new(self) + end + def get(path, params) execute_request Intercom::Request.get(path, params) end diff --git a/lib/intercom/collection.rb b/lib/intercom/collection.rb new file mode 100644 index 00000000..3fc7ab26 --- /dev/null +++ b/lib/intercom/collection.rb @@ -0,0 +1,7 @@ +require 'intercom/traits/api_resource' + +module Intercom + class Collection + include Traits::ApiResource + end +end diff --git a/lib/intercom/service/collection.rb b/lib/intercom/service/collection.rb new file mode 100644 index 00000000..cbe7a6f2 --- /dev/null +++ b/lib/intercom/service/collection.rb @@ -0,0 +1,24 @@ +require 'intercom/service/base_service' +require 'intercom/api_operations/list' +require 'intercom/api_operations/find' +require 'intercom/api_operations/delete' +require 'intercom/api_operations/save' + +module Intercom + module Service + class Collection < BaseService + include ApiOperations::List + include ApiOperations::Find + include ApiOperations::Delete + include ApiOperations::Save + + def collection_class + Intercom::Collection + end + + def collection_name + "help_center/collections" + end + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5733d825..44d812a8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -157,7 +157,7 @@ def test_contact(email = 'bob@example.com', role = 'user') } end -def test_visitor + def test_visitor { 'type' => 'visitor', 'id' => '123', From 8010b21e3b2fa4d1648402361227fc1a6bace955 Mon Sep 17 00:00:00 2001 From: Rahul D'souza Date: Mon, 18 May 2020 12:56:22 +0530 Subject: [PATCH 2/2] Added test coverage --- spec/spec_helper.rb | 37 ++++++++++++++++++++++++++- spec/unit/intercom/collection_spec.rb | 32 +++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 spec/unit/intercom/collection_spec.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 44d812a8..7a7a721e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -157,7 +157,42 @@ def test_contact(email = 'bob@example.com', role = 'user') } end - def test_visitor +def test_collection + { + 'id' => '1', + 'workspace_id' => 'tx2p130c', + 'name' => 'Collection 1', + 'url' => 'http://www.intercom.test/help/', + 'order' => 1, + 'type' => 'collection', + 'description' => 'Collection desc', + 'icon' => 'book-bookmark' + } +end + +def test_collection_list + { + 'type' => 'list', + 'total_count' => 1, + 'pages' => { + 'page' => 1, + 'per_page' => 20, + 'total_pages' => 1 + }, + 'data' => [{ + 'id' => '1', + 'workspace_id' => 'tx2p130c', + 'name' => 'Collection 1', + 'url' => 'http://www.intercom.test/help/', + 'order' => 1, + 'type' => 'collection', + 'description' => 'Collection desc', + 'icon' => 'book-bookmark' + }] + } +end + +def test_visitor { 'type' => 'visitor', 'id' => '123', diff --git a/spec/unit/intercom/collection_spec.rb b/spec/unit/intercom/collection_spec.rb new file mode 100644 index 00000000..87388c9c --- /dev/null +++ b/spec/unit/intercom/collection_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe Intercom::Collection do + let(:client) { Intercom::Client.new(token: 'token') } + + it 'creates a collection' do + client.expects(:post).with('/help_center/collections', { 'name' => 'Collection 1', 'description' => 'Collection desc' }).returns(test_collection) + client.collections.create(:name => 'Collection 1', :description => 'Collection desc') + end + + it 'lists collections' do + client.expects(:get).with('/help_center/collections', {}).returns(test_collection_list) + client.collections.all.each { |t| } + end + + it 'finds a collection' do + client.expects(:get).with('/help_center/collections/1', {}).returns(test_collection) + client.collections.find(id: '1') + end + + it 'updates a collection' do + collection = Intercom::Collection.new(id: '12345') + client.expects(:put).with('/help_center/collections/12345', {}) + client.collections.save(collection) + end + + it 'deletes a collection' do + collection = Intercom::Collection.new(id: '12345') + client.expects(:delete).with('/help_center/collections/12345', {}) + client.collections.delete(collection) + end +end \ No newline at end of file