Source code for oioioi.problemsharing.tests

from django.contrib.auth.models import User
from django.urls import reverse

from oioioi.base.tests import TestCase
from oioioi.problemsharing.models import Friendship


[docs]class TestFriendshipManagement(TestCase):
[docs] fixtures = ['test_users', 'teachers']
[docs] url = reverse('problemsharing_friends')
[docs] def testAdd(self): self.assertTrue(self.client.login(username='test_user')) self.assertContains(self.client.get(self.url), "no friends") self.assertEqual(len(Friendship.objects.all()), 0) self._addToFriends('test_user') self.assertEqual(len(Friendship.objects.all()), 0) self._addToFriends('test_user2') self.assertEqual(len(Friendship.objects.all()), 1) self.assertContains(self.client.get(self.url), "test_user2")
[docs] def testRemove(self): self.assertTrue(self.client.login(username='test_user')) Friendship( creator=User.objects.get(username='test_user'), receiver=User.objects.get(username='test_user2'), ).save() self.assertEqual(len(Friendship.objects.all()), 1) self.assertContains(self.client.get(self.url), "test_user2") self._removeFromFriends(User.objects.get(username='test_user2').id) self.assertEqual(len(Friendship.objects.all()), 0) self.assertContains(self.client.get(self.url), "no friends")
[docs] def testOnlyTeachersCanUseFriends(self): self.assertTrue(self.client.login(username='test_user3')) # non teacher self.assertEqual(self.client.get(self.url).status_code, 403)
[docs] def testOnlyTeachersCanBeFriends(self): self.assertTrue(self.client.login(username='test_user')) self.assertContains( self.client.post(self.url, {'befriend': '', 'user': 'test_user3'}), "no friends", ) self.assertEqual(len(Friendship.objects.all()), 0)
[docs] def _addToFriends(self, name): self.assertEqual( self.client.post(self.url, {'befriend': '', 'user': name}).status_code, 200 )
[docs] def _removeFromFriends(self, id): self.assertEqual( self.client.post(self.url, {'unfriend': '', 'id': id}).status_code, 200 )