Skip to content

Commit d37e150

Browse files
authored
Merge branch 'master' into sp/delete_contact
2 parents 4fd8f0a + 2661f8c commit d37e150

File tree

5 files changed

+31
-0
lines changed

5 files changed

+31
-0
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,13 @@ tag = intercom.tags.tag(name: 'blue', companies: [{company_id: "42ea2f1b93891f6a
305305

306306
# Untag Companies
307307
tag = intercom.tags.untag(name: 'blue', companies: [{ company_id: "42ea2f1b93891f6a99000427" }])
308+
309+
310+
# Delete Tags
311+
312+
# Note : If there any depedent objects for the tag we are trying to delete, then an error TagHasDependentObjects will be thrown.
313+
tag = intercom.tags.find(id:"123")
314+
intercom.tags.delete(tag)
308315
```
309316

310317
#### Notes

lib/intercom/errors.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ class InvalidDocumentError < IntercomError; end
9999
# Raised when a merge is invalid
100100
class InvalidMergeError < IntercomError; end
101101

102+
# Raised when a tag has dependent objects
103+
class TagHasDependentObjects < IntercomError; end
104+
102105
#
103106
# Non-public errors (internal to the gem)
104107
#

lib/intercom/request.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ def execute(target_base_url = nil, token:, read_timeout: 90, open_timeout: 30, a
222222
raise Intercom::ApiVersionInvalid.new(error_details['message'], error_context)
223223
when 'scroll_exists'
224224
raise Intercom::ScrollAlreadyExistsError.new(error_details['message'], error_context)
225+
when 'tag_has_dependent_objects'
226+
raise Intercom::TagHasDependentObjects.new(error_details['message'], error_context)
225227
when nil, ''
226228
raise Intercom::UnexpectedError.new(message_for_unexpected_error_without_type(error_details, parsed_http_code), error_context)
227229
else

spec/unit/intercom/request_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ def execute!
124124
let(:uri) {"https://api.intercom.io/conversations/reply"}
125125
let(:req) { Intercom::Request.put(uri, {}) }
126126

127+
let(:tag_uri) {"https://api.intercom.io/tags/"}
128+
let(:del_req) { Intercom::Request.delete(tag_uri, {}) }
129+
127130
it 'should raise ResourceNotUniqueError error on resource_conflict code' do
128131
stub_request(:put, uri).to_return(
129132
status: [409, "Resource Already Exists"],
@@ -153,5 +156,15 @@ def execute!
153156

154157
expect { execute! }.must_raise(Intercom::ResourceNotFound)
155158
end
159+
160+
it 'should raise TagHasDependentObjects error on tag_has_dependent_objects code' do
161+
stub_request(:delete, tag_uri).to_return(
162+
status: [400, "Bad Request"],
163+
headers: { 'X-RateLimit-Reset' => (Time.now.utc + 10).to_i.to_s },
164+
body: { type: "error.list", errors: [ code: "tag_has_dependent_objects" ] }.to_json
165+
)
166+
167+
expect { del_req.execute(tag_uri, token: 'test-token') }.must_raise(Intercom::TagHasDependentObjects)
168+
end
156169
end
157170
end

spec/unit/intercom/tag_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@
2828
client.expects(:post).with('/tags', 'name' => 'Test Tag', 'companies' => [{ company_id: 'abc123', untag: true }, { company_id: 'def456', untag: true }], 'tag_or_untag' => 'untag').returns(test_tag)
2929
client.tags.untag(name: 'Test Tag', companies: [{ company_id: 'abc123' }, { company_id: 'def456' }])
3030
end
31+
32+
it 'delete tags' do
33+
tag = Intercom::Tag.new('id' => '1')
34+
client.expects(:delete).with('/tags/1', {}).returns(tag)
35+
client.tags.delete(tag)
36+
end
3137
end

0 commit comments

Comments
 (0)