Skip to content

Commit a102bad

Browse files
committed
Adding support for Subscriptions (intercom#30).
1 parent c31fc1f commit a102bad

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

intercom/subscription.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from intercom.api_operations.find import Find
2+
from intercom.api_operations.delete import Delete
3+
from intercom.api_operations.find_all import FindAll
4+
from intercom.api_operations.save import Save
5+
from intercom.traits.api_resource import Resource
6+
7+
8+
class Subscription(Resource, Find, FindAll, Save, Delete):
9+
pass

tests/unit/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,3 +241,25 @@ def page_of_users(include_next_link=False):
241241
# end
242242
# array
243243
# end
244+
245+
test_subscription = {
246+
"type": "notification_subscription",
247+
"id": "nsub_123456789",
248+
"created_at": 1410368642,
249+
"updated_at": 1410368642,
250+
"service_type": "web",
251+
"app_id": "3qmk5gyg",
252+
"url": "http://example.com",
253+
"_self": "https://api.intercom.io/subscriptions/nsub_123456789",
254+
"topics": ["user.created", "conversation.user.replied", "conversation.admin.replied"],
255+
"active": True,
256+
"metadata": {},
257+
"hub_secret": None,
258+
"mode": "point",
259+
"links": {
260+
"sent": "https://api.intercom.io/subscriptions/nsub_123456789/sent",
261+
"retry": "https://api.intercom.io/subscriptions/nsub_123456789/retry",
262+
"errors": "https://api.intercom.io/subscriptions/nsub_123456789/errors"
263+
},
264+
"notes": []
265+
}

tests/unit/subscription_spec.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import httpretty
2+
import json
3+
import re
4+
5+
from describe import expect
6+
from intercom.subscription import Subscription
7+
from tests.unit import test_subscription
8+
9+
10+
get = httpretty.GET
11+
post = httpretty.POST
12+
13+
r = re.compile
14+
15+
16+
class DescribeIntercomSubscription:
17+
18+
@httpretty.activate
19+
def it_gets_a_subscription(self):
20+
body = json.dumps(test_subscription)
21+
22+
httpretty.register_uri(
23+
get, r(r"/subscriptions/nsub_123456789"),
24+
body=body)
25+
26+
subscription = Subscription.find(id="nsub_123456789")
27+
expect(subscription.topics[0]) == "user.created"
28+
expect(subscription.topics[1]) == "conversation.user.replied"
29+
30+
@httpretty.activate
31+
def it_creates_a_subscription(self):
32+
body = json.dumps(test_subscription)
33+
httpretty.register_uri(
34+
post, r(r"/subscriptions/"),
35+
body=body, match_querystring=True)
36+
37+
subscription = Subscription.create(
38+
url="http://example.com",
39+
topics=["user.created"]
40+
)
41+
expect(subscription.topics[0]) == "user.created"
42+
expect(subscription.url) == "http://example.com"

0 commit comments

Comments
 (0)