예제 #1
0
def test_controller_get_valid_mesociclo(db, client, token):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)

    # Act
    mesociclo = client.get(
        f"/api/usuarios/{1}/mesociclos?activo=False",
        follow_redirects=True,
        headers={
            "Authorization": f"Bearer {token}"
        },
    ).get_json()

    # Assert
    assert mesociclo[0]["idMesociclo"] == 1
    assert mesociclo[0]["usuario"]["username"] == "usuarioprueba"
    assert mesociclo[0]["estado"]["descripcion"] == "Activo"
    assert mesociclo[0]["objetivo"][
        "descripcion"] == "Acondicionamiento General"
    assert mesociclo[0]["organizacion"]["idOrganizacion"] == 1
    assert mesociclo[0]["principalTrenInferior"][
        "nombre"] == "Bulgarian Squats"
    assert mesociclo[0]["semanasPorMesociclo"] == 4
    assert len(mesociclo[0]["sesiones"]) == 2
def test_controller_update_valid_mesociclo(db, client, token):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)

    id_mesociclo = 1

    mesociclo_data = {
        "idMesociclo": 1,
        "usuario": {"idUsuario": 1},
        "estado": {"idEstadoMesociclo": 3, "descripcion":""},  ## Cambio estado de pendiente a terminado
        "objetivo": {"idObjetivo": 3},  ## Cambio objetivo de Acondicionamiento a Fuerza
        "principalTrenSuperior": {"idEjercicio": 2},
        "principalTrenInferior": {"idEjercicio": 5},
        "fechaFinReal": str(datetime.utcnow()),
        "aumentoMotivacion": "True",
        "masCercaObjetivos": "False",
        "sentimiento": 2,
        "durmiendo": 3,
        "alimentado": 4,
    }

    # Act
    response = client.put(
        f"/api/mesociclos/{id_mesociclo}",
        json=mesociclo_data,
        follow_redirects=True,
        headers={"Authorization": f"Bearer {token}"},
    ).get_json()

    # Assert
    mesociclo = Mesociclo.query.first()

    assert mesociclo.id_mesociclo == 1
    assert mesociclo.usuario.username == "usuarioprueba"
    assert mesociclo.estado.descripcion == "Cancelado"
    assert mesociclo.objetivo.descripcion == "Fuerza"
    assert mesociclo.organizacion.descripcion == "Full Body"
    assert mesociclo.principal_tren_superior.nombre == "Diamond Push-ups"
    assert mesociclo.principal_tren_inferior.nombre == "Bulgarian Squats"
    assert mesociclo.semanas_por_mesociclo == 4
    assert len(mesociclo.sesiones) == 2
    assert len(mesociclo.sesiones[0].bloques) == 2
    assert len(mesociclo.sesiones[0].bloques[0].ejercicios) == 3
    assert (
        mesociclo.sesiones[0].bloques[0].ejercicios[0].ejercicio.patron.nombre
        == "Tren Superior"
    )
    assert mesociclo.fecha_fin_real != None
    assert mesociclo.sentimiento == 2
    assert mesociclo.aumento_motivacion
    assert not mesociclo.mas_cerca_objetivos
    assert mesociclo.alimentado == 4
    assert mesociclo.actualizado_en.date() == datetime.utcnow().date()
예제 #3
0
def test_controller_delete_sesion(db, client, token):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)
    id_sesion = 1

    # Act
    rv = client.delete(
        f"/api/sesiones/{id_sesion}",
        follow_redirects=True,
        headers={"Authorization": f"Bearer {token}"},
    ).get_json()

    # Assert
    sesion = Sesion.query.get(id_sesion)

    assert sesion == None
예제 #4
0
def test_get_sesion_hoy_usuario(db, client):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)

    usuario = Usuario.query.get(1)

    # Act
    response = client.get(
        f"/api/usuarios/{usuario.id_usuario}/mesociclos/sesionHoy",
        follow_redirects=True,
    ).get_json()

    # Assert
    assert response != None
    assert parser.parse(
        response["fechaEmpezado"]).date() == datetime.utcnow().date()
    assert len(response["bloques"]) == 2
예제 #5
0
def test_crear_bloque_valido(db, token, client):

    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)

    bloque_update_body = {
        "idBloque":
        1,
        "numBloque":
        3,  # el num_bloque pasaria de 1 a 3
        "series":
        5,  # las series deberian pasar de 4 a 5
        "ejercicios": [{
            "idEjerciciosxbloque": 1,  # Cambio el primer ejercicio
            "repeticiones": 20,  # Paso de 10 reps a 20
            "carga": 150,  # paso de 30kg a 150kg
            "ejercicio": {
                "idEjercicio":
                5,  # Paso de Traditional Push-ups a Bulgarian Squats
            },
        }],
    }

    # Act

    bloque_response = client.put(
        "/api/bloques",
        json=bloque_update_body,
        follow_redirects=True,
        headers={
            "Authorization": f"Bearer {token}"
        },
    ).get_json()

    # Assert
    bloque = Bloque.query.filter_by(id_bloque=1).first()

    assert bloque_response != None
    assert bloque.id_bloque == 1
    assert bloque.num_bloque == 3
    assert bloque.series == 5
    assert bloque.ejercicios[0].repeticiones == 20
예제 #6
0
def test_controller_create_sesion(db, client, token):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)
    sesion_body = {
        "idMesociclo": 1,
        "fechaEmpezado": str(datetime.utcnow()),
        "numSesion": 3,
        "bloques": [
            {
                "numBloque": 1,
                "series": 4,
                "ejercicios": [
                    {
                        "ejercicio": {"idEjercicio": 1},
                        "numEjercicio": 1,
                        "repeticiones": 10,
                        "carga": 20.1,
                    }
                ],
            }
        ],
    }

    # Act
    rv = client.post(
        "/api/sesiones",
        json=sesion_body,
        follow_redirects=True,
        headers={"Authorization": f"Bearer {token}"},
    ).get_json()

    # Assert
    mesociclo = Mesociclo.query.first()

    assert len(mesociclo.sesiones) == 3
    sesion = sorted(mesociclo.sesiones, key=lambda s: s.id_sesion)[2]
    assert len(sesion.bloques[0].ejercicios) == 1
    assert sesion.bloques[0].ejercicios[0].ejercicio.patron.nombre == "Tren Superior"
예제 #7
0
def test_controller_update_sesion(db, client, token):
    # Arrange
    create_usuario_db(db)
    create_mesociclo_db(db)
    id_sesion = 1

    sesion_body = {
        "idMesociclo": 1,
        "idSesion": 1,
        "fechaFinalizado": str(datetime.utcnow() + timedelta(hours=1)),
        "fechaEmpezado": str(datetime(2020, 11, 1)),
        "bloques": [
            {
                "idBloque": 1,
                "numBloque": 1,
                "series": 5,
                "ejercicios": [
                    {
                        "idEjerciciosxbloque": 1,
                        "numEjercicio": 5,
                        "ejercicio": {"idEjercicio": 2},
                        "repeticiones": 16,
                        "carga": 20.1,
                    },
                    {"idEjerciciosxbloque": 2},
                    {"idEjerciciosxbloque": 3},
                    # Agrego un ej
                    {
                        "ejercicio": {"idEjercicio": 2},
                        "numEjercicio": 4,
                        "repeticiones": 20,
                        "carga": 22,
                    },
                ],
            },
            ## {"idBloque": 2},  No mando el bloque2 ("eliminado")
            ## Agrego un nuevo bloque
            {
                "numBloque": 2,
                "series": 6,
                "ejercicios": [
                    {
                        "ejercicio": {"idEjercicio": 2},
                        "numEjercicio": 1,
                        "repeticiones": 20,
                        "carga": 22,
                    },
                    {
                        "ejercicio": {"idEjercicio": 1},
                        "numEjercicio": 2,
                        "repeticiones": 21,
                        "carga": 23,
                    },
                    {
                        "ejercicio": {"idEjercicio": 3},
                        "numEjercicio": 3,
                        "repeticiones": 22,
                        "carga": 24,
                    },
                ],
            },
        ],
    }

    # Act
    rv = client.put(
        f"/api/sesiones/{str(id_sesion)}",
        json=sesion_body,
        follow_redirects=True,
        headers={"Authorization": f"Bearer {token}"},
    ).get_json()

    sesion = Sesion.query.get(1)

    # Assert
    assert sesion.fecha_finalizado != None
    assert sesion.fecha_empezado.date() == datetime(2020, 11, 1).date()
    assert len(sesion.bloques) == 2
    assert len(sesion.bloques[0].ejercicios) == 4
    bloques = sorted(sesion.bloques, key=lambda k: k.id_bloque)
    bloque1_ejercicios = sorted(
        bloques[0].ejercicios, key=lambda k: k.id_ejerciciosxbloque
    )
    bloque2_ejercicios = sorted(
        bloques[1].ejercicios, key=lambda k: k.id_ejerciciosxbloque
    )
    assert bloque1_ejercicios[0].repeticiones == 16
    assert bloque1_ejercicios[0].carga == 20.1
    assert bloque1_ejercicios[0].num_ejercicio == 5
    assert bloque1_ejercicios[0].ejercicio.nombre == "Diamond Push-ups"
    assert bloque1_ejercicios[0].ejercicio.patron.nombre == "Tren Superior"
    assert bloque2_ejercicios[0].carga == 22
    assert bloque2_ejercicios[0].ejercicio.nombre == "Diamond Push-ups"
    assert bloque2_ejercicios[0].ejercicio.patron.nombre == "Tren Superior"
    assert bloque2_ejercicios[0].repeticiones == 20