-
Notifications
You must be signed in to change notification settings - Fork 146
/
Copy pathtest_notification.py
101 lines (84 loc) · 3.71 KB
/
test_notification.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# -*- coding: utf-8 -*-
import unittest
from intercom.notification import Notification
from intercom.utils import define_lightweight_class
from nose.tools import eq_
from nose.tools import istest
from tests.unit import test_conversation_notification
from tests.unit import test_user_notification
class NotificationTest(unittest.TestCase):
@istest
def it_converts_notification_hash_to_object(self):
payload = Notification(**test_user_notification)
self.assertIsInstance(payload, Notification)
@istest
def it_returns_correct_resource_type_for_part(self):
payload = Notification(**test_user_notification)
User = define_lightweight_class('user', 'User') # noqa
self.assertIsInstance(payload.model.__class__, User.__class__)
eq_(payload.model_type.__class__, User.__class__)
@istest
def it_returns_correct_user_notification_topic(self):
payload = Notification(**test_user_notification)
eq_(payload.topic, "user.created")
@istest
def it_returns_instance_of_user(self):
User = define_lightweight_class('user', 'User') # noqa
payload = Notification(**test_user_notification)
self.assertIsInstance(payload.model.__class__, User.__class__)
@istest
def it_returns_instance_of_conversation(self):
Conversation = define_lightweight_class('conversation', 'Conversation') # noqa
payload = Notification(**test_conversation_notification)
self.assertIsInstance(payload.model.__class__, Conversation.__class__)
@istest
def it_returns_correct_model_type_for_conversation(self):
Conversation = define_lightweight_class('conversation', 'Conversation') # noqa
payload = Notification(**test_conversation_notification)
eq_(payload.model_type.__class__, Conversation.__class__)
@istest
def it_returns_correct_conversation_notification_topic(self):
payload = Notification(**test_conversation_notification)
eq_(payload.topic, "conversation.user.created")
@istest
def it_returns_inner_user_object_for_conversation(self):
User = define_lightweight_class('user', 'User') # noqa
payload = Notification(**test_conversation_notification)
self.assertIsInstance(payload.model.user.__class__, User.__class__)
@istest
def it_returns_inner_conversation_parts_for_conversation(self):
payload = Notification(**test_conversation_notification)
conversation_parts = payload.data.item.conversation_parts
eq_(1, len(conversation_parts))
eq_('conversation_part', conversation_parts[0].resource_type)
@istest
def it_returns_datetimes_for_conversations(self):
payload = Notification(**test_conversation_notification)
eq_(2014, payload.data.item.created_at.year)
eq_(2017, payload.data.item.waiting_since.year)
@istest
def it_returns_inner_user_object_with_nil_tags(self):
user_notification = {
"type": "notification_event",
"app_id": "aa11aa",
"data": {
"type": "notification_event_data",
"item": {
"type": "user",
"id": "abc123def",
"user_id": "666",
"email": "[email protected]",
"name": "Joe",
"tags": {
"type": "tag.list",
"tags": None
}
}
}
}
payload = Notification(**user_notification)
eq_(payload.model.tags, [])
@istest
def it_has_self_attribute(self):
payload = Notification(**test_conversation_notification)
eq_('http://example.com/resource/url/', payload.self)