Files
@ acfd700770cc
Branch filter:
Location: kallithea/kallithea/tests/models/test_notifications.py
acfd700770cc
6.4 KiB
text/x-python
pytest migration: merge TestControllerPytest with BaseTestController
There is no need anymore for a separate BaseTestController class.
Simplify the code by removing it.
There is no need anymore for a separate BaseTestController class.
Simplify the code by removing it.
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(TestControllerPytest):
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
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
|