diff --git a/courses/models.py b/courses/models.py index dd598da..63c8a12 100644 --- a/courses/models.py +++ b/courses/models.py @@ -91,7 +91,7 @@ Activity is something that has a deadline and has to be delivered by the student """ class Activity(Resource): topic = models.ForeignKey(Topic, verbose_name = _('Topic'), related_name='activities') - limit_date = models.DateTimeField(_('Deliver Date')) + limit_date = models.DateField(_('Deliver Date')) students = models.ManyToManyField(User, verbose_name = _('Students'), related_name='activities') all_students = models.BooleanField(_('All Students'), default=False) @@ -100,7 +100,7 @@ class ActivityFile(models.Model): diet = models.ForeignKey('Activity', related_name='files') name = models.CharField(max_length=100) - def __str__(self): + def __str__(self): return self.name class Meta: diff --git a/poll/tests/__init__.py b/poll/tests/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/poll/tests/__init__.py diff --git a/poll/tests/poll.py b/poll/tests/poll.py new file mode 100644 index 0000000..5ff0faa --- /dev/null +++ b/poll/tests/poll.py @@ -0,0 +1,118 @@ +# 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 Category, Course, Subject, Topic +from poll.models import Poll +from users.models import User + +class PollTestCase(TestCase): + def setUp(self): + self.client = Client() + + self.user_professor = User.objects.create_user( + username = 'professor', + email = 'professor@amadeus.com', + is_staff = False, + is_active = True, + password = 'testing', + type_profile = 1 + ) + assign_role(self.user_professor, 'professor') + + self.user_student = User.objects.create_user( + username = 'student', + email = 'student@amadeus.com', + is_staff = False, + is_active = True, + password = 'testing', + type_profile = 2 + ) + assign_role(self.user_student, 'student') + + self.category = Category( + name = 'Categoria Teste', + ) + self.category.save() + + self.course = Course( + name = 'Curso Teste', + max_students = 50, + objectivies = "", + content = "", + 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() + + self.subject = Subject( + name = 'Subject Test', + description = "description of the subject test", + visible = True, + course = self.course, + init_date = '2016-10-05', + end_date = '2017-10-05', + ) + self.subject.save() + + self.subject.professors.add(self.user_professor) + + self.topic = Topic( + name = 'Topic Test', + description = "description of the topic test", + subject = self.subject, + owner = self.user_professor, + visible = True, + ) + self.topic.save() + + self.poll = Poll( + name = 'Poll Test', + limit_date = '2016-10-05', + topic = self.topic, + ) + self.poll.save() + + def test_poll_create(self): + self.client.login(username='professor', password='testing') + poll = self.topic.activities.all().count() + url = reverse('course:poll:create_poll',kwargs={'slug':self.topic.slug}) + data = { + "name": 'create poll test', + "limit_date":'2016-10-06', + "all_students":True, + } + response = self.client.post(url, data) + self.assertEqual(poll + 1, self.topic.activities.all().count()) # create a new poll + self.client.login(username='student', password='testing') + poll = self.topic.activities.all().count() + response = self.client.post(url, data) + self.assertEqual(poll, self.topic.activities.all().count()) # don't create a new poll + + def test_poll_update(self): + self.client.login(username='professor', password='testing') + url = reverse('course:poll:update_poll',kwargs={'slug':self.poll.slug}) + title_poll = 'new poll name' + data = { + "name": title_poll, + "limit_date":'2016-11-06', + "all_students":True, + } + self.assertNotEqual(title_poll, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # old name + response = self.client.post(url, data) + self.assertEqual(title_poll,self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name + poll_student = 'new poll name student' + data = { + "name": poll_student, + "limit_date":'2016-11-06', + "all_students":True, + } + self.assertNotEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # old name + response = self.client.post(url, data) + self.assertEqual(poll_student, self.topic.activities.all()[self.topic.activities.all().count() - 1].name) # new name diff --git a/poll/views.py b/poll/views.py index ab5b87d..5722112 100644 --- a/poll/views.py +++ b/poll/views.py @@ -17,8 +17,9 @@ from core.mixins import NotificationMixin from users.models import User from courses.models import Course, Topic -class CreatePoll(LoginRequiredMixin,generic.CreateView): +class CreatePoll(LoginRequiredMixin,HasRoleMixin,generic.CreateView): + allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") redirect_field_name = 'next' model = Poll @@ -60,8 +61,9 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView): context['subjects'] = topic.subject.course.subjects.all() return context -class UpdatePoll(LoginRequiredMixin,generic.UpdateView): +class UpdatePoll(LoginRequiredMixin,HasRoleMixin,generic.UpdateView): + allowed_roles = ['professor', 'system_admin'] login_url = reverse_lazy("core:home") redirect_field_name = 'next' model = Poll -- libgit2 0.21.2