test_views.py 4.24 KB
# coding=utf-8

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

from rolepermissions.shortcuts import assign_role

from courses.models import Course, CourseCategory
from courses.forms import CourseForm
from users.models import User

class CourseViewTestCase(TestCase):

	def setUp(self):
		self.client = Client()

		self.user = User.objects.create_user(
			username = 'test',
			email = 'testing@amadeus.com',
			is_staff = True,
			is_active = True,
			password = 'testing'
		)
		assign_role(self.user, 'system_admin')

		self.category = CourseCategory(
			name = 'Categoria Teste',
			slug = 'categoria_teste'
		)
		self.category.save()

		self.course = Course(
			name = 'Curso Teste',
			slug = 'curso_teste',
			max_students = 50,
			init_register_date = '2016-08-26',
			end_register_date = '2016-10-01',
			init_date = '2016-10-05',
			end_date = '2017-10-05',
			category = self.category
		)
		self.course.save()

	def test_index(self):
		self.client.login(username='test', password='testing')

		url = reverse('course:manage')

		response = self.client.get(url)

		self.assertEquals(response.status_code, 200)
		self.assertTemplateUsed(response, 'course/index.html')

	def test_index_not_logged(self):
		url = reverse('course:manage')

		response = self.client.get(url, follow = True)

		self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)

	def test_create(self):
		self.client.login(username='test', password='testing')

		url = reverse('course:create')
		data = {
			"name": 'Curso Teste',
			"slug":'curso_teste',
			"max_students": 50,
			"init_register_date": '2016-08-26',
			"end_register_date": '2016-10-01',
			"init_date":'2016-10-05',
			"end_date":'2017-10-05',
			"category": self.category
		}

		response = self.client.post(url, data, format='json')
		self.assertEqual(response.status_code, 200)
		self.assertTemplateUsed(response, 'course/create.html')

	def test_create_not_logged(self):
		url = reverse('course:create')

		response = self.client.get(url, follow = True)

		self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)

	def test_create_no_permission(self):
		self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing')

		assign_role(self.user, 'student')

		self.client.login(username='student', password='testing')

		url = reverse('course:create')

		response = self.client.get(url)

		self.assertEquals(response.status_code, 403)


	def test_update(self):

		self.client.login(username = 'test', password = 'testing')

		url = reverse('course:update', kwargs = {'slug': self.course.slug})
		data = Course.objects.get(name="Curso Teste")
		data.name = "Curse Test"

		# response = self.client.put(url, data)
		# self.assertEqual(response.status_code, 200)
		# self.assertEqual(response.data, data.name)

	def test_update_not_logged(self):
		url = reverse('course:update', kwargs = {'slug': self.course.slug})

		response = self.client.get(url, follow = True)

		self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)

	def test_update_no_permission(self):
		self.user = User.objects.create_user(username = 'student', email = 'student@amadeus.com', type_profile = 2, is_staff = False, is_active = True, password = 'testing')

		assign_role(self.user, 'student')

		self.client.login(username='student', password='testing')

		url = reverse('course:update', kwargs = {'slug': self.course.slug})

		response = self.client.get(url)

		self.assertEquals(response.status_code, 403)

	def test_view(self):
		self.client.login(username = 'test', password = 'testing')

		url = reverse('course:view', kwargs = {'slug': self.course.slug})

		# response = self.client.get(url)

		# self.assertEquals(response.status_code, 200)
		# self.assertTemplateUsed(response, 'course/view.html')

	def test_update_not_logged(self):
		url = reverse('course:view', kwargs = {'slug': self.course.slug})

		response = self.client.get(url, follow = True)

		self.assertRedirects(response, '%s?next=%s' % (reverse('core:home'), url), 302, 200)