Source code for oioioi.newsfeed.tests

from django.urls import reverse, resolve

from oioioi.base.tests import TestCase


[docs]class TestNewsfeedVisibility(TestCase):
[docs] fixtures = ['test_users', 'newsfeed']
[docs] def test_newsfeed_visibility(self): url_newsfeed = reverse('newsfeed') self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Test news')
[docs] def test_newsfeed_options_visibility(self): url_newsfeed = reverse('newsfeed') url_add_news = reverse('add_news') url_edit_news = reverse('edit_news', kwargs={'news_id': 1}) url_delete_news = reverse('delete_news', kwargs={'news_id': 1}) self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) # superuser can see all newsfeed options self.assertContains(response, str(url_add_news)) self.assertContains(response, str(url_edit_news)) self.assertContains(response, str(url_delete_news)) self.assertTrue(self.client.login(username='test_user')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) # non-superuser cannot see any newsfeed options self.assertNotContains(response, str(url_add_news)) self.assertNotContains(response, str(url_edit_news)) self.assertNotContains(response, str(url_delete_news))
[docs]class TestNewsfeedPermissions(TestCase):
[docs] fixtures = ['test_users', 'newsfeed']
[docs] def test_add_permissions(self): url_add_news = reverse('add_news') self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_add_news) # superuser can add news self.assertEqual(response.status_code, 200) self.assertTrue(self.client.login(username='test_user')) response = self.client.get(url_add_news) # non-superuser cannot add news self.assertEqual(response.status_code, 403)
[docs] def test_edit_permissions(self): url_edit_news = reverse('edit_news', kwargs={'news_id': 1}) self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_edit_news) # superuser can edit news self.assertEqual(response.status_code, 200) self.assertTrue(self.client.login(username='test_user')) response = self.client.get(url_edit_news) # non-superuser cannot edit news self.assertEqual(response.status_code, 403)
[docs] def test_delete_permissions(self): url_delete_news = reverse('delete_news', kwargs={'news_id': 1}) self.assertTrue(self.client.login(username='test_user')) response = self.client.get(url_delete_news) # non-superuser cannot delete news self.assertEqual(response.status_code, 403) self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_delete_news, follow=True) # superuser can delete news self.assertEqual(response.status_code, 200)
[docs]class TestNewsfeedOptions(TestCase):
[docs] fixtures = ['test_users', 'newsfeed']
[docs] def _assert_redirect_to_newsfeed(self, response): self.assertEqual(response.status_code, 200) self.assertEqual( resolve(response.redirect_chain[-1][0]).view_name, 'newsfeed' )
[docs] def test_news_add(self): url_newsfeed = reverse('newsfeed') url_add_news = reverse('add_news') self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Test news') self.assertNotContains(response, 'Testing add') response = self.client.get(url_add_news) self.assertEqual(response.status_code, 200) post_data = { 'form-0-id': '', 'form-0-title': 'Testing add', 'form-0-content': 'Add tested', 'form-0-language': 'en', 'form-MAX_NUM_FORMS': 1, 'form-TOTAL_FORMS': 1, 'form-MIN_NUM_FORMS': 1, 'form-INITIAL_FORMS': 0, } response = self.client.post(url_add_news, post_data, follow=True) self._assert_redirect_to_newsfeed(response) self.assertContains(response, 'Test news') self.assertContains(response, 'Testing add')
[docs] def test_news_edit(self): url_newsfeed = reverse('newsfeed') url_edit_news = reverse('edit_news', kwargs={'news_id': 1}) self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Test news') self.assertNotContains(response, 'Test edited news') response = self.client.get(url_edit_news) self.assertEqual(response.status_code, 200) post_data = { 'form-0-id': '1', 'form-0-title': 'Test edited news', 'form-0-content': 'This is a test', 'form-0-language': 'en', 'form-MAX_NUM_FORMS': 1, 'form-TOTAL_FORMS': 1, 'form-MIN_NUM_FORMS': 1, 'form-INITIAL_FORMS': 1, } response = self.client.post(url_edit_news, post_data, follow=True) self._assert_redirect_to_newsfeed(response) self.assertContains(response, 'Test edited news') self.assertNotContains(response, 'Test news')
[docs] def test_news_delete(self): url_newsfeed = reverse('newsfeed') url_delete_news = reverse('delete_news', kwargs={'news_id': 1}) self.assertTrue(self.client.login(username='test_admin')) response = self.client.get(url_newsfeed) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Test news') response = self.client.get(url_delete_news, follow=True) self._assert_redirect_to_newsfeed(response) self.assertNotContains(response, 'Test news')