Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fun-apps / universities_api / tests / test_api.py
Size: Mime:
# -*- coding: utf-8 -*-

import json

from django.core.urlresolvers import reverse
from django.test import TestCase

from student.tests.factories import UserFactory

from fun.tests.utils import skipUnlessLms
from universities.tests.factories import UniversityFactory


@skipUnlessLms
class UniversityAPITest(TestCase):

    def setUp(self):
        self.api_url = reverse('fun-universities-api:universities-list')
        self.user = UserFactory(username='user', password='password')  # user with profile
        self.univ_1 = UniversityFactory(code='test-university-1')
        self.univ_2 = UniversityFactory(code='test-university-2')

    def login_as_admin(self):
        self.user.is_staff = True
        self.user.save()
        self.client.login(username='user', password='password')

    def test_course_list_api_response_loads(self):
        self.login_as_admin()
        response = self.client.get(self.api_url)
        data = json.loads(response.content)
        self.assertIn('results', data)

    def test_can_update_university_score_as_admin(self):
        self.login_as_admin()
        self.univ_1.score = 0
        self.univ_1.save()
        data = json.dumps({'score': 100})
        url = reverse('fun-universities-api:universities-detail',
            args=[self.univ_1.id]
        )
        response = self.client.put(url, data, content_type='application/json')
        response_data = json.loads(response.content)
        self.assertEqual(100, response_data['score'])

    def test_cannot_update_university_if_set_as_prevent_auto_update(self):
        self.login_as_admin()
        self.univ_1.prevent_auto_update = True
        self.univ_1.save()
        data = {'score': 100}
        url = reverse('fun-universities-api:universities-detail',
            args=[self.univ_1.id]
        )
        response = self.client.put(url, data)
        self.assertNotEqual(response.status_code, 200)

    def test_cannot_update_course_score_if_not_logged_in(self):
        self.client.logout()
        data = {'score': 100}
        url = reverse('fun-universities-api:universities-detail',
            args=[self.univ_1.id]
        )
        response = self.client.put(url, data)
        self.assertNotEqual(response.status_code, 200)