Ejemplo n.º 1
0
 def test_post_when_user_doesnt_own_plan(self):
     request = RequestFactory().post('/', self.data)
     request.user = self.user
     request = add_middleware_to_request(request)
     response = plan_clase_update(
         request, pk=self.another_plan.pk, slug=self.another_plan.slug)
     assert response.status_code == 302, 'Should return a redirection'
     assert response.url == reverse('plan_clase_list')
Ejemplo n.º 2
0
 def test_post_when_user_doesnt_own_plan(self):
     request = RequestFactory().post('/', self.data)
     request.user = self.user
     request = add_middleware_to_request(request)
     response = PlanAnualDeleteView.as_view()(request,
                                              pk=self.another_plan.pk)
     assert response.status_code == 302, 'Should return a redirection'
     assert response.url == reverse('plan_anual_list')
     # It should still exist
     self.plan_anual.refresh_from_db()
Ejemplo n.º 3
0
 def test_post_when_user_doesnt_own_plan(self):
     request = RequestFactory().post('/', self.data)
     request.user = self.user
     request = add_middleware_to_request(request)
     response = PlanAnualDuplicateView.as_view()(request,
                                                 pk=self.another_plan.pk)
     assert response.status_code == 302, 'Should return a redirection'
     assert response.url == reverse('plan_anual_list')
     copias = PlanAnual.objects.filter(
         name='{} (copia)'.format(self.another_plan.name))
     assert len(copias) == 0, 'Should be no copies'
Ejemplo n.º 4
0
 def test_empty_data(self):
     """Tests the view when sending empty data"""
     request = RequestFactory().post('/', data={})
     request.user = self.user
     request = add_middleware_to_request(request)
     response = PlanDestrezasCreateView.as_view()(request)
     assert response.status_code == 200, 'Should return a success response'
     assert 'Por favor corrija los campos resaltados en rojo.' \
         in response.rendered_content, 'Should have an error message'
     assert 'alert-danger' in response.rendered_content, \
         'Should return an error message'
Ejemplo n.º 5
0
    def test_invalid_data(self):
        """Tests the view when sending invalid data"""
        self.data['name'] = ''

        request = RequestFactory().post('/', data=self.data)
        request.user = self.user
        request = add_middleware_to_request(request)
        response = PlanAnualCreateView.as_view()(request)

        assert response.status_code == 200, 'Should get a success response'
        assert 'Por favor corrija los campos resaltados en rojo.' \
            in str(response.content), 'Should have an error message'
Ejemplo n.º 6
0
    def test_invalid_data(self):
        """Tests the view when sending invalid data"""

        self.data['name'] = ''

        request = RequestFactory().post('/', data=self.data)
        request.user = self.user
        request = add_middleware_to_request(request)
        response = PlanDestrezasUpdateView.as_view()(
            request, pk=self.plan_destrezas.pk, slug=self.plan_destrezas.slug)

        assert response.status_code == 200, 'Should return a success response'
        assert 'Por favor corrija los campos resaltados en rojo.' \
            in str(response.content), 'Should have an error message'
        assert 'alert-danger' in str(response.content), \
            'Should return an error message'
Ejemplo n.º 7
0
    def test_success_plan_duplication(self):
        """Tests a plan has been successfuly duplicated"""

        self.plan_anual.objetivos_curso.set([self.objetivo_1, self.objetivo_2])
        self.plan_anual.objetivos_generales_curso.set(
            [self.general_1, self.general_2])
        self.plan_anual.objetivos_generales.set(
            [self.general_1, self.general_2])

        desarrollo_unidad_1 = mixer.blend(DesarrolloUnidad,
                                          plan_anual=self.plan_anual,
                                          unidad=self.unidad_1)
        desarrollo_unidad_1.destrezas.set([self.destreza_1, self.destreza_2])

        desarrollo_unidad_2 = mixer.blend(DesarrolloUnidad,
                                          plan_anual=self.plan_anual,
                                          unidad=self.unidad_2)
        desarrollo_unidad_2.destrezas.set([self.destreza_1, self.destreza_2])

        self.client.login(
            username='******',
            password='******',
        )
        url = reverse('plan_anual_duplicate',
                      kwargs={'pk': self.plan_anual.pk})
        response = self.client.post(url, {}, follow=True)

        assert response.status_code == 200, 'Should return a success code'

        # Test success message
        messages = list(response.context.get('messages'))
        assert len(messages) == 1, 'Should return one message'
        assert messages[0].message == 'Plan Anual duplicado exitosamente.',\
            'Should return a success message'
        assert messages[0].tags == 'alert-success', \
            'Should return a success message'
        self.assertRedirects(response, reverse('plan_anual_list'))

        # Test plan anual
        plan_anual_new = PlanAnual.objects.last()
        desarrollo_unidad_new = DesarrolloUnidad.objects.last()
        assert self.plan_anual.pk != plan_anual_new.pk, \
            'Should be another instance'
        assert plan_anual_new.name == '{} (copia)'.format(
            self.plan_anual.name), 'Should have a new name'
        assert plan_anual_new.curso == self.plan_anual.curso, \
            'Should have the same property values'
        # Debe tener igual todos los campos many to many al original
        assert plan_anual_new.objetivos_curso.first() == self.objetivo_1
        assert plan_anual_new.objetivos_curso.last() == self.objetivo_2
        assert plan_anual_new.objetivos_generales_curso.first() == \
            self.general_1
        assert plan_anual_new.objetivos_generales_curso.last() == \
            self.general_2
        assert plan_anual_new.objetivos_generales.first() == self.general_1
        assert plan_anual_new.objetivos_generales.last() == self.general_2

        assert self.plan_anual.updated_at != plan_anual_new.updated_at, \
            'The updated_at field should not be copied'

        # Tests elemento curricular
        desarrollo_unidad_new = plan_anual_new.desarrollo_unidades.first()

        assert desarrollo_unidad_new.pk != desarrollo_unidad_1.pk, \
            'Should be another instance'
        assert desarrollo_unidad_new.plan_anual == plan_anual_new
        assert desarrollo_unidad_new.unidad == \
            desarrollo_unidad_1.unidad

        # Debe tener igual todos los campos many to many
        # al desarrollo de unidad original
        assert desarrollo_unidad_new.destrezas.first() == self.destreza_1
        assert desarrollo_unidad_new.destrezas.last() == self.destreza_2

        # Test second duplication

        request = RequestFactory().post('/', {})
        request.user = self.user
        request = add_middleware_to_request(request)

        PlanAnualDuplicateView.as_view()(request, pk=self.plan_anual.pk)

        plan_anual_new = PlanAnual.objects.last()
        assert plan_anual_new.name == '{} (copia 2)'.format(
            self.plan_anual.name)
        assert plan_anual_new.curso == self.plan_anual.curso

        # Test third duplication

        PlanAnualDuplicateView.as_view()(request, pk=self.plan_anual.pk)

        plan_anual_new = PlanAnual.objects.last()
        assert plan_anual_new.name == '{} (copia 3)'.format(
            self.plan_anual.name)
        assert plan_anual_new.curso == self.plan_anual.curso
Ejemplo n.º 8
0
    def test_success_plan_duplication(self):
        """Tests a plan has been successfuly duplicated"""

        self.plan_clase.objetivos.set([self.objetivo_1, self.objetivo_2])
        self.plan_clase.objetivos_generales.set(
            [self.general_1, self.general_2])
        self.plan_clase.cursos.set([self.curso_1, self.curso_2])

        elemento_curricular_1 = mixer.blend(ElementoCurricular,
                                            plan_clase=self.plan_clase,
                                            destreza=self.destreza_1)

        proceso_didactico_1 = mixer.blend(
            ProcesoDidactico,
            elemento_curricular=elemento_curricular_1
        )
        self.client.login(username='******',
                          password='******',)
        url = reverse('plan_clase_duplicate',
                      kwargs={'pk': self.plan_clase.pk})
        response = self.client.post(url, {}, follow=True)

        assert response.status_code == 200, 'Should return a success code'

        # Test success message
        messages = list(response.context.get('messages'))
        assert len(messages) == 1, 'Should return one message'
        assert messages[0].message == 'Plan de clase duplicado exitosamente.',\
            'Should return a success message'
        assert messages[0].tags == 'alert-success', \
            'Should return a success message'
        self.assertRedirects(response, reverse('plan_clase_list'))

        # Test plan de clase
        plan_clase_new = PlanClase.objects.last()
        elemento_curricular_new = ElementoCurricular.objects.last()
        proceso_didactico_new = ProcesoDidactico.objects.last()
        assert self.plan_clase.pk != plan_clase_new.pk, \
            'Should be another instance'
        assert plan_clase_new.name == '{} (copia)'.format(
            self.plan_clase.name), 'Should have a new name'
        assert plan_clase_new.tema == self.plan_clase.tema, \
            'Should have the same property values'
        # Debe tener igual todos los campos many to many al original
        assert plan_clase_new.objetivos.first() == self.objetivo_1
        assert plan_clase_new.objetivos.last() == self.objetivo_2
        assert plan_clase_new.objetivos_generales.first() == self.general_1
        assert plan_clase_new.objetivos_generales.last() == self.general_2
        assert plan_clase_new.cursos.first() == self.curso_1
        assert plan_clase_new.cursos.last() == self.curso_2
        assert self.plan_clase.updated_at != plan_clase_new.updated_at, \
            'The updated_at field should not be copied'

        # Tests elemento curricular
        elemento_curricular_new = plan_clase_new.elementos_curriculares.first()

        assert elemento_curricular_new.pk != elemento_curricular_1.pk, \
            'Should be another instance'
        assert elemento_curricular_new.plan_clase == plan_clase_new
        assert elemento_curricular_new.conocimientos_asociados == \
            elemento_curricular_1.conocimientos_asociados
        assert elemento_curricular_new.destreza == self.destreza_1

        proceso_didactico_new = elemento_curricular_new.procesos_didacticos\
            .first()

        # Tests proceso didáctico
        assert proceso_didactico_new.pk != proceso_didactico_1.pk, \
            'Should be another instance'
        assert proceso_didactico_new.elemento_curricular == \
            elemento_curricular_new
        assert proceso_didactico_new.name == proceso_didactico_1.name

        # Test second duplication

        request = RequestFactory().post('/', {})
        request.user = self.user
        request = add_middleware_to_request(request)

        PlanClaseDuplicateView.as_view()(request,
                                         pk=self.plan_clase.pk)

        plan_clase_new = PlanClase.objects.last()
        assert plan_clase_new.name == '{} (copia 2)'.format(
            self.plan_clase.name)
        assert plan_clase_new.tema == self.plan_clase.tema

        # Test third duplication

        PlanClaseDuplicateView.as_view()(request,
                                         pk=self.plan_clase.pk)

        plan_clase_new = PlanClase.objects.last()
        assert plan_clase_new.name == '{} (copia 3)'.format(
            self.plan_clase.name)
        assert plan_clase_new.tema == self.plan_clase.tema