diff --git a/courses/templates/course/update.html b/courses/templates/course/update.html
index ba0d3ba..005a49c 100644
--- a/courses/templates/course/update.html
+++ b/courses/templates/course/update.html
@@ -18,7 +18,7 @@
{% trans 'Manage Modules' %}
-
+
{% trans 'Participants' %}
diff --git a/courses/templates/course/view.html b/courses/templates/course/view.html
index c609050..4ffa0a5 100644
--- a/courses/templates/course/view.html
+++ b/courses/templates/course/view.html
@@ -27,7 +27,7 @@
{% trans 'Edit Course' %}
-
+
{% trans 'Participants' %}
diff --git a/courses/tests/test_views.py b/courses/tests/test_views.py
index 1b5b1e4..841f84e 100644
--- a/courses/tests/test_views.py
+++ b/courses/tests/test_views.py
@@ -3,20 +3,119 @@
from django.test import TestCase, Client
from django.core.urlresolvers import reverse
+from rolepermissions.shortcuts import assign_role
+
+from courses.models import Course, Category
+from users.models import User
+
class CourseViewTestCase(TestCase):
def setUp(self):
self.client = Client()
- self.url = reverse('app:course:manage')
+
+ 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')
+
+ category = Category(name = 'Categoria Teste', slug = 'categoria_teste')
+ category.save()
- #def tearDown(self):
- # pass
+ 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 = category)
+ course.save()
- def test_course_ok(self):
- response = self.client.get(self.url)
+ self.category = category
+ self.course = course
+
+ def test_index(self):
+ self.client.login(username='test', password='testing')
+
+ url = reverse('app:course:manage')
+
+ response = self.client.get(url)
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'course/index.html')
- def test_course_error(self):
- pass
\ No newline at end of file
+ def test_index_not_logged(self):
+ url = reverse('app:course:manage')
+
+ response = self.client.get(url, follow = True)
+
+ self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200)
+
+ def test_create(self):
+ self.client.login(username='test', password='testing')
+
+ url = reverse('app:course:create')
+
+ response = self.client.get(url)
+
+ self.assertEquals(response.status_code, 200)
+ self.assertTemplateUsed(response, 'course/create.html')
+
+ def test_create_not_logged(self):
+ url = reverse('app:course:create')
+
+ response = self.client.get(url, follow = True)
+
+ self.assertRedirects(response, '%s?next=%s' % (reverse('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('app: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('app:course:update', kwargs = {'slug': self.course.slug})
+
+ response = self.client.get(url)
+
+ self.assertEquals(response.status_code, 200)
+ self.assertTemplateUsed(response, 'course/update.html')
+
+ def test_update_not_logged(self):
+ url = reverse('app:course:update', kwargs = {'slug': self.course.slug})
+
+ response = self.client.get(url, follow = True)
+
+ self.assertRedirects(response, '%s?next=%s' % (reverse('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('app: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('app: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('app:course:view', kwargs = {'slug': self.course.slug})
+
+ response = self.client.get(url, follow = True)
+
+ self.assertRedirects(response, '%s?next=%s' % (reverse('home'), url), 302, 200)
\ No newline at end of file
diff --git a/courses/views.py b/courses/views.py
index 521bc74..0428ee6 100644
--- a/courses/views.py
+++ b/courses/views.py
@@ -28,7 +28,7 @@ class IndexView(LoginRequiredMixin, generic.ListView):
return context
-class CreateView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
+class CreateView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -49,7 +49,7 @@ class CreateView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-class UpdateView(HasRoleMixin, LoginRequiredMixin, generic.UpdateView):
+class UpdateView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -79,7 +79,7 @@ class View(LoginRequiredMixin, generic.DetailView):
context_object_name = 'course'
template_name = 'course/view.html'
-class DeleteView(HasRoleMixin, LoginRequiredMixin, generic.DeleteView):
+class DeleteView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -122,7 +122,7 @@ class IndexCatView(LoginRequiredMixin, generic.ListView):
context_object_name = 'categories'
paginate_by = 3
-class CreateCatView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
+class CreateCatView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -143,7 +143,7 @@ class CreateCatView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-class UpdateCatView(HasRoleMixin, LoginRequiredMixin, generic.UpdateView):
+class UpdateCatView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -172,7 +172,7 @@ class ViewCat(LoginRequiredMixin, generic.DetailView):
template_name = 'category/view.html'
context_object_name = 'category'
-class DeleteCatView(HasRoleMixin, LoginRequiredMixin, generic.DeleteView):
+class DeleteCatView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -205,7 +205,7 @@ class ModulesView(LoginRequiredMixin, generic.ListView):
return context
-class CreateModView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
+class CreateModView(LoginRequiredMixin, HasRoleMixin, generic.edit.CreateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -238,7 +238,7 @@ class CreateModView(HasRoleMixin, LoginRequiredMixin, generic.edit.CreateView):
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-class UpdateModView(HasRoleMixin, LoginRequiredMixin, generic.UpdateView):
+class UpdateModView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
@@ -269,7 +269,7 @@ class UpdateModView(HasRoleMixin, LoginRequiredMixin, generic.UpdateView):
return self.response_class(request=self.request, template=self.get_template_names(), context=context, using=self.template_engine)
-class DeleteModView(HasRoleMixin, LoginRequiredMixin, generic.DeleteView):
+class DeleteModView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
allowed_roles = ['professor', 'system_admin']
login_url = '/'
--
libgit2 0.21.2