Files
@ 7f2aa3ec2931
Branch filter:
Location: kallithea/kallithea/tests/models/test_notifications.py
7f2aa3ec2931
6.4 KiB
text/x-python
pytest migration: rename TestControllerPytest back to TestController
The name TestControllerPytest was introduced to allow a temporary situation
where nose/unittest and pytest-based tests could coexist.
This situation is now over, so the base test class can be renamed again.
The name TestControllerPytest was introduced to allow a temporary situation
where nose/unittest and pytest-based tests could coexist.
This situation is now over, so the base test class can be renamed again.
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | from kallithea.tests import *
from kallithea.model.db import User, Notification, UserNotification
from kallithea.model.user import UserModel
from kallithea.model.meta import Session
from kallithea.model.notification import NotificationModel
class TestNotifications(TestController):
def setup_method(self, method):
Session.remove()
self.u1 = UserModel().create_or_update(username=u'u1',
password=u'qweqwe',
email=u'u1@example.com',
firstname=u'u1', lastname=u'u1')
Session().commit()
self.u1 = self.u1.user_id
self.u2 = UserModel().create_or_update(username=u'u2',
password=u'qweqwe',
email=u'u2@example.com',
firstname=u'u2', lastname=u'u3')
Session().commit()
self.u2 = self.u2.user_id
self.u3 = UserModel().create_or_update(username=u'u3',
password=u'qweqwe',
email=u'u3@example.com',
firstname=u'u3', lastname=u'u3')
Session().commit()
self.u3 = self.u3.user_id
self.remove_all_notifications()
assert [] == Notification.query().all()
assert [] == UserNotification.query().all()
def test_create_notification(self):
usrs = [self.u1, self.u2]
notification = NotificationModel().create(created_by=self.u1,
subject=u'subj', body=u'hi there',
recipients=usrs)
Session().commit()
u1 = User.get(self.u1)
u2 = User.get(self.u2)
u3 = User.get(self.u3)
notifications = Notification.query().all()
assert len(notifications) == 1
assert notifications[0].recipients == [u1, u2]
assert notification.notification_id == notifications[0].notification_id
unotification = UserNotification.query() \
.filter(UserNotification.notification == notification).all()
assert len(unotification) == len(usrs)
assert set([x.user.user_id for x in unotification]) == set(usrs)
def test_user_notifications(self):
notification1 = NotificationModel().create(created_by=self.u1,
subject=u'subj', body=u'hi there1',
recipients=[self.u3])
Session().commit()
notification2 = NotificationModel().create(created_by=self.u1,
subject=u'subj', body=u'hi there2',
recipients=[self.u3])
Session().commit()
u3 = Session().query(User).get(self.u3)
assert sorted([x.notification for x in u3.notifications]) == sorted([notification2, notification1])
def test_delete_notifications(self):
notification = NotificationModel().create(created_by=self.u1,
subject=u'title', body=u'hi there3',
recipients=[self.u3, self.u1, self.u2])
Session().commit()
notifications = Notification.query().all()
assert notification in notifications
Notification.delete(notification.notification_id)
Session().commit()
notifications = Notification.query().all()
assert not notification in notifications
un = UserNotification.query().filter(UserNotification.notification
== notification).all()
assert un == []
def test_delete_association(self):
notification = NotificationModel().create(created_by=self.u1,
subject=u'title', body=u'hi there3',
recipients=[self.u3, self.u1, self.u2])
Session().commit()
unotification = UserNotification.query() \
.filter(UserNotification.notification ==
notification) \
.filter(UserNotification.user_id == self.u3) \
.scalar()
assert unotification.user_id == self.u3
NotificationModel().delete(self.u3,
notification.notification_id)
Session().commit()
u3notification = UserNotification.query() \
.filter(UserNotification.notification ==
notification) \
.filter(UserNotification.user_id == self.u3) \
.scalar()
assert u3notification == None
# notification object is still there
assert Notification.query().all() == [notification]
#u1 and u2 still have assignments
u1notification = UserNotification.query() \
.filter(UserNotification.notification ==
notification) \
.filter(UserNotification.user_id == self.u1) \
.scalar()
assert u1notification != None
u2notification = UserNotification.query() \
.filter(UserNotification.notification ==
notification) \
.filter(UserNotification.user_id == self.u2) \
.scalar()
assert u2notification != None
def test_notification_counter(self):
NotificationModel().create(created_by=self.u1,
subject=u'title', body=u'hi there_delete',
recipients=[self.u3, self.u1])
Session().commit()
assert NotificationModel().get_unread_cnt_for_user(self.u1) == 0
assert NotificationModel().get_unread_cnt_for_user(self.u2) == 0
assert NotificationModel().get_unread_cnt_for_user(self.u3) == 1
notification = NotificationModel().create(created_by=self.u1,
subject=u'title', body=u'hi there3',
recipients=[self.u3, self.u1, self.u2])
Session().commit()
assert NotificationModel().get_unread_cnt_for_user(self.u1) == 0
assert NotificationModel().get_unread_cnt_for_user(self.u2) == 1
assert NotificationModel().get_unread_cnt_for_user(self.u3) == 2
|