Esempio n. 1
0
def proyecto(usuario, gerente, rol_de_proyecto):
    return proyecto_factory({
        'nombre':
        'Proyecto de Prueba',
        'descripcion':
        'Descripcion de Prueba',
        'creador':
        usuario.username,
        'gerente':
        gerente.username,
        'estado':
        EstadoDeProyecto.CONFIGURACION,
        'fases': [{
            'nombre': 'Analisis',
            'descripcion': 'Analisis de Requerimientos'
        }, {
            'nombre': 'Desarrollo',
            'descripcion': 'Desarrollo de Software'
        }, {
            'nombre': 'Pruebas',
            'descripcion': 'Pruebas de Software'
        }],
        'participantes': [{
            'usuario': usuario.username,
            'rol_de_proyecto': 'Desarrollador',
            'permisos': {}
        }]
    })
Esempio n. 2
0
    def test_cerrar_fase(self, rol_de_proyecto, rs_admin, fase,
                         resultado_esperado):
        """
        Prueba unitaria encargada de probar el funcionamiento del metodo cerrar de la clase Fase,
        encargada de verificar si una fase del proyecto puede ser cerrada.

        Resultado Esperado:
            -Que el atributo de la Fase fase_cerrada cambie su valor a True

        Mensajes de Error:
            -La fase anterior {self.fase_anterior.nombre} todavia esta sin cerrar, si la fase anterior no esta cerrada
            -El item {item.version.nombre} no esta en una Linea Base, si el item no esta en una linea base
            -El item {item.version.nombre} no es trazable a la siguiente fase, si el item no tiene sucesores
        """
        rol_de_proyecto_factory(tc.rol_de_proyecto)
        user_factory(tc.user['username'], tc.user['password'],
                     tc.user['email'], rs_admin.nombre)
        user_factory(tc.user2['username'], tc.user2['password'],
                     tc.user2['email'], rs_admin.nombre)
        user_factory(tc.gerente['username'], tc.gerente['password'],
                     tc.gerente['email'], rs_admin.nombre)
        proyecto = proyecto_factory(tc.proyecto)
        fase = Fase.objects.get(nombre=fase)
        with pytest.raises(Exception) as excinfo:
            fase.cerrar()
        condicion = all(mensaje in resultado_esperado
                        for mensaje in list(excinfo.value.args)[0])
        assert condicion, f'El metodo no lanza las exceptiones corresponientes, se espera los siguientes mensajes: \n' \
                          f'{resultado_esperado}'
Esempio n. 3
0
def proyecto(usuario):
    return proyecto_factory({
        'nombre': 'Proyecto de Prueba',
        'descripcion': 'Descripcion de Prueba',
        'creador': usuario.username,
        'gerente': usuario.username,
        'estado': EstadoDeProyecto.CONFIGURACION,
    })
Esempio n. 4
0
def proyecto(usuario):
    return proyecto_factory({
        'nombre':
        'Proyecto de Prueba',
        'descripcion':
        'Descripcion de Prueba',
        'creador':
        usuario.username,
        'gerente':
        usuario.username,
        'estado':
        EstadoDeProyecto.CONFIGURACION,
        'fases': [{
            'nombre': 'Analisis',
            'descripcion': 'Analisis de Requerimientos'
        }, {
            'nombre': 'Desarrollo',
            'descripcion': 'Desarrollo de Software'
        }, {
            'nombre': 'Pruebas',
            'descripcion': 'Pruebas de Software'
        }],
    })
Esempio n. 5
0
    def test_es_ultima_fase(self, rol_de_proyecto, rs_admin, fase,
                            resultado_esperado):
        """
        Prueba unitaria encargada de probar el funcionamiento del metodo es_ultima_fase, de la clase Fase,
        encargada de verificar si la fase del proyecto es la ultima.

        Resultado Esperado:
            -Que retorne verdadero si la fase es la ultima del proyecto

        Mensajes de Error:
            -'El metodo lanza una respuesta incorrecta, se esperaba un {resultado_esperado}, pero devuelve un {condicion}
        """
        rol_de_proyecto_factory(tc.rol_de_proyecto)
        user_factory(tc.user['username'], tc.user['password'],
                     tc.user['email'], rs_admin.nombre)
        user_factory(tc.user2['username'], tc.user2['password'],
                     tc.user2['email'], rs_admin.nombre)
        user_factory(tc.gerente['username'], tc.gerente['password'],
                     tc.gerente['email'], rs_admin.nombre)
        proyecto = proyecto_factory(tc.proyecto)
        fase = Fase.objects.get(nombre=fase)
        condicion = fase.es_ultima_fase()
        assert condicion == resultado_esperado, f'El metodo lanza una respuesta incorrecta, se esperaba un {resultado_esperado}' \
                                                f' pero devuelve un {condicion}'
Esempio n. 6
0
def proyecto(usuario1, usuario2, gerente, rol_de_proyecto):
    return proyecto_factory(tc.proyecto)
Esempio n. 7
0
    def test_visualizar_proyecto_view(self, gerente_loggeado, gerente, usuario,
                                      usuario2):
        """
        Prueba unitaria que comprueba que no exista error al acceder a la URL de visualizar proyecto.

        Resultado Esperado:
            - Una respuesta HTTP con codigo de estado 200

        Mensaje de Error:
            - Hubo un error al tratar de acceder a la URL

        """
        rol_de_proyecto = rol_de_proyecto_factory({
            'nombre':
            'rol',
            'descripcion':
            'descripcion',
            'permisos': [
                'pp_ver_participante', 'pp_agregar_participante',
                'pp_eliminar_participante'
            ]
        })
        proyecto = proyecto_factory({
            'gerente':
            'gerente',
            'nombre':
            'Proyecto',
            'estado':
            'Iniciado',
            'descripcion':
            'Proyecto de prueba',
            'creador':
            'gerente',
            'fases': [{
                'nombre': 'Fase 1',
                'descripcion': 'Descripcion fase 1',
                'puede_cerrarse': False,
                'fase_cerrada': False,
            }, {
                'nombre': 'Fase 2',
                'descripcion': 'Descripcion fase 2',
                'puede_cerrarse': False,
                'fase_cerrada': False,
            }, {
                'nombre': 'Fase 3',
                'descripcion': 'Descripcion fase 3',
                'puede_cerrarse': False,
                'fase_cerrada': False,
            }],
            'participantes': [{
                'usuario': 'usuario_test',
                'rol_de_proyecto': 'rol',
                'permisos': {
                    'Fase 1':
                    ['pp_ver_participante', 'pp_agregar_participante'],
                    'Fase 2':
                    ['pp_ver_participante', 'pp_agregar_participante'],
                    'Fase 3': [
                        'pp_ver_participante', 'pp_agregar_participante',
                        'pp_eliminar_participante'
                    ]
                }
            }, {
                'usuario': 'usuario2_test',
                'rol_de_proyecto': 'rol',
                'permisos': {
                    'Fase 1':
                    ['pp_ver_participante', 'pp_agregar_participante'],
                    'Fase 2':
                    ['pp_ver_participante', 'pp_agregar_participante'],
                    'Fase 3': [
                        'pp_ver_participante', 'pp_agregar_participante',
                        'pp_eliminar_participante'
                    ]
                }
            }],
            'comite_de_cambios': [
                'gerente',
                'usuario_test',
                'usuario2_test',
            ]
        })
        response = gerente_loggeado.get(
            reverse('visualizar_proyecto', args=(proyecto.id, )))
        assert response.status_code == HTTPStatus.OK, 'Hubo un error al tratar de acceder a la URL'