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