frlp-utn-ingsoft / orderingg

Aplicación utilizada en la cursada 2018 de Ingenieria de Software. UTN-FRLP
4 stars 20 forks source link

Test de unidad del GET #51

Closed TeoBotta closed 6 years ago

TeoBotta commented 6 years ago

Buenas, realizando un test para probar el funcionamiento del método GET en el endpoint /order//product/, llegué al siguiente código:

def test_funcionamiento_get(self):
    # Creo la orden
    o = Order(id=1)
    db.session.add(o)

    # Creo el producto
    p = Product(id=1, name='Cuchillo', price=60)
    db.session.add(p)

    # Creo la relación entre producto y orden
    orderProduct = OrderProduct(order_id=1, product_id=1, quantity=1, product=p)
    db.session.add(orderProduct)
    db.session.commit()

    # Comparo
    resp = self.client.get('order/1/product/1')
    data = json.loads(resp.data)
    self.assertEqual(len(data),1,"No trae nada")

Cuando ejecuto el pytest, me dice que sale por error del assertEqual, pero lo hace por 5 != 1, cuando en realidad ahí me tendría que devolver un solo elemento en len(data). Estaría mal el código o hay un bug a resolver por ahí metido?

RodrigoJacznik commented 6 years ago

Porque data tiene el objeto que representa el producto, este objeto tiene 5 atributos. Deberías controlar que la respuesta sea 200 ok y que los datos del producto sean los correctos (nombre y precio, cantidad) no que data tenga un length de 1. Podes ver el objeto que retorna haciendo un print(data)

TeoBotta commented 6 years ago

Ah, joya. Me imaginé que la mano iba por la cantidad de atributos. Ahí puse el print y me mostró los 5. Cambié el assertEqual() por assert200() y ahora anda perfecto. Cierro el issue, muchas gracias!

RodrigoJacznik commented 6 years ago

Esta bien. Fíjate esta parte de mi respuesta

que los datos del producto sean los correctos (nombre y precio, cantidad)

Eso también hay que testearlo para que el test este completo

TeoBotta commented 6 years ago

Listo, ahí lo verifiqué y corrió sin problemas. Gracias