Mercurial > kallithea
view kallithea/tests/functional/test_admin_notifications.py @ 5214:9b2c5e8b37ea
notification tests: delete notifications before (not after) tests
Don't clean notifications (and changeset comments) *after* the test,
but *before* the test. Other unit tests don't care if they leave
notifications in the database, and neither should these. Rather,
they should ensure their *own* preconditions before testing.
Admittedly, currently only one test leaves a notification in the
database, but more could come along at any time (and why worry?):
TestPullrequestsController.test_create_with_existing_reviewer
author | Søren Løvborg <kwi@kwi.dk> |
---|---|
date | Wed, 01 Jul 2015 18:28:28 +0200 |
parents | 76abae776a3e |
children | 7d0727d11104 |
line wrap: on
line source
from kallithea.tests import * from kallithea.model.db import Notification, User from kallithea.model.user import UserModel from kallithea.model.notification import NotificationModel from kallithea.model.meta import Session from kallithea.lib import helpers as h class TestNotificationsController(TestController): def setUp(self): self.remove_all_notifications() def test_index(self): self.log_user() u1 = UserModel().create_or_update(username='u1', password='qweqwe', email='u1@example.com', firstname='u1', lastname='u1') u1 = u1.user_id response = self.app.get(url('notifications')) response.mustcontain('<div class="table">No notifications here yet</div>') cur_user = self._get_logged_user() notif = NotificationModel().create(created_by=u1, subject=u'test_notification_1', body=u'notification_1', recipients=[cur_user]) Session().commit() response = self.app.get(url('notifications')) response.mustcontain('id="notification_%s"' % notif.notification_id) def test_delete(self): self.log_user() cur_user = self._get_logged_user() u1 = UserModel().create_or_update(username='u1', password='qweqwe', email='u1@example.com', firstname='u1', lastname='u1') u2 = UserModel().create_or_update(username='u2', password='qweqwe', email='u2@example.com', firstname='u2', lastname='u2') # make notifications notification = NotificationModel().create(created_by=cur_user, subject=u'test', body=u'hi there', recipients=[cur_user, u1, u2]) Session().commit() u1 = User.get(u1.user_id) u2 = User.get(u2.user_id) # check DB get_notif = lambda un: [x.notification for x in un] self.assertEqual(get_notif(cur_user.notifications), [notification]) self.assertEqual(get_notif(u1.notifications), [notification]) self.assertEqual(get_notif(u2.notifications), [notification]) cur_usr_id = cur_user.user_id response = self.app.delete(url('notification', notification_id= notification.notification_id)) self.assertEqual(response.body, 'ok') cur_user = User.get(cur_usr_id) self.assertEqual(cur_user.notifications, []) def test_show(self): self.log_user() cur_user = self._get_logged_user() u1 = UserModel().create_or_update(username='u1', password='qweqwe', email='u1@example.com', firstname='u1', lastname='u1') u2 = UserModel().create_or_update(username='u2', password='qweqwe', email='u2@example.com', firstname='u2', lastname='u2') subject = u'test' notif_body = u'hi there' notification = NotificationModel().create(created_by=cur_user, subject=subject, body=notif_body, recipients=[cur_user, u1, u2]) response = self.app.get(url('notification', notification_id=notification.notification_id)) response.mustcontain(subject) response.mustcontain(notif_body) def test_description_with_age(self): self.log_user() cur_user = self._get_logged_user() subject = u'test' notify_body = u'hi there' notification = NotificationModel().create(created_by = cur_user, subject = subject, body = notify_body) description = NotificationModel().make_description(notification) self.assertEqual( description, "{0} sent message {1}".format( cur_user.username, h.age(notification.created_on) ) ) def test_description_with_datetime(self): self.log_user() cur_user = self._get_logged_user() subject = u'test' notify_body = u'hi there' notification = NotificationModel().create(created_by = cur_user, subject = subject, body = notify_body) description = NotificationModel().make_description(notification, False) self.assertEqual( description, "{0} sent message at {1}".format( cur_user.username, h.fmt_date(notification.created_on) ) )