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()
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
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
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
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"
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