mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-29 16:37:56 +00:00
98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
from django.core.urlresolvers import reverse
|
|
from django.test import TestCase, Client
|
|
|
|
from models import Notification
|
|
from base.accounts import User
|
|
|
|
class NotificationTestCase(TestCase):
|
|
"""
|
|
Helper base class for all the follow test cases.
|
|
"""
|
|
def setUp(self):
|
|
self.new_notification = 'This is a new notification!'
|
|
self.user = User.objects.create_superuser('admin@admin.com', 'testpassword')
|
|
|
|
def tearDown(self):
|
|
self.user.delete()
|
|
|
|
class NotificationTest(NotificationTestCase):
|
|
|
|
def login(self):
|
|
response = self.client.post('/accounts/login/', {
|
|
'username': 'admin@admin.com',
|
|
'password': 'testpassword',
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
def test_add_new_notification(self):
|
|
self.login()
|
|
r = self.client.get('/sys/notificationadmin/')
|
|
# Check that response is 200 OK
|
|
self.assertEqual(r.status_code, 200)
|
|
|
|
# now there are no notifications
|
|
self.assertEqual(len(r.context['notes']), 0)
|
|
|
|
# try add one notification
|
|
r = self.client.post('/notification/add/', {
|
|
'message': self.new_notification,
|
|
})
|
|
# Redirect only if it worked
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
# look up in database
|
|
notifications = Notification.objects.all()
|
|
self.assertEqual(notifications.count(), 1)
|
|
|
|
# check this notification is not set primary, thus will not showed
|
|
# in top bar
|
|
n = Notification.objects.all()[0]
|
|
self.assertFalse(n.primary)
|
|
|
|
def test_set_primary(self):
|
|
n = Notification()
|
|
n.message = self.new_notification
|
|
n.primary = False
|
|
n.save()
|
|
|
|
# set primary
|
|
self.login()
|
|
r = self.client.get(reverse('set_primary', args=[n.id]), {})
|
|
# Redirect only if it worked
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
# now check it's primary
|
|
n = Notification.objects.all()[0]
|
|
self.assertTrue(n.primary)
|
|
|
|
# check it's showed in top bar
|
|
r = self.client.get('/sys/notificationadmin/')
|
|
self.assert_('This is a new notification!' in str(r))
|
|
|
|
# and it's still there when reach other pages
|
|
r = self.client.get('/home/my/')
|
|
self.assert_('This is a new notification!' in str(r))
|
|
|
|
def test_close_notification(self):
|
|
n = Notification()
|
|
n.message = self.new_notification
|
|
n.primary = True
|
|
n.save()
|
|
|
|
self.login()
|
|
r = self.client.get('/home/my/')
|
|
self.assert_('This is a new notification!' in str(r))
|
|
|
|
# now close notification
|
|
r = self.client.get(reverse('notification_close', args=[1]), {})
|
|
# Redirect only if it worked
|
|
self.assertEqual(r.status_code, 302)
|
|
|
|
# it's gone
|
|
self.assert_('This is a new notification!' not in str(r))
|
|
|
|
# and it's gone when reach other pages
|
|
r = self.client.get('/home/my/')
|
|
self.assert_('This is a new notification!' not in str(r))
|
|
|