Closed unjust closed 5 months ago
Hice una prueba con playwright en el repo de fleet management
Necesitamos ser clara que estes tests no reemplaza la necesidad su propio unit y integracion tests, es solo una herramienta confirmar si tu API cumple criterios. Con GET
no necesitamos mockear un base de datos, pero hay que pensarlo cuando hacemos pruebas de POST
o DELETE
.
Cuando tengamos estos tests clara hay que definir mejor las rutas de endpoints y nombres de parametros en el readme.
Pros:
Cons:
Update: Decidmos usar Postman para tener un solocion que no agrega codigo al proyetco y tambien ayuda que ellas aprenden esta herramienta
Creo estas pruebas son para confirmar que su API conforme a los criterios, similar a los tests en BQ API (que tambien vamos a renovar). Por ejemplo, que devuelva data en una estructura array y con un status particular, obedece las parametros de paginacion y otros. Por eso debemos definir mejor que sus rutas estan definidos en algun manera y no deja abierto - por ejemplo /taxis /locations/[taxt_id]etc. Creo aun ellas pueden escribir unit tests, y tambien puede escribir tests de integracion en su propio framework (como con el Flask client o en Django) , quiza hay casos que no son cubiertos con los tests que entregamos. Creo lo que vamos entregar con el proyecto son solo para darnos y ellas un señal / respuesta rapida si van bien con su API o no, pero no reemplaza todo el testing.
He realizado una prueba de concepto que responde al punto:
La implementación y PR se encuentra aquí
@unjust creo que esto puede validar lo que hemos conversado y atacar las pruebas e2e de forma agnóstica al lenguaje de implementación y dejar las unitarias y de integridad de datos a cada lenguaje con su framework correspondiente. Para ponernos de acuerdo con las estructuras de consulta y respuesta podemos usar la documentación que compartió @ssinuco de todas maneras se puede convertir la documentación armada en Postman a Swagger con esta herramienta web
Teniendo como base esta documentación creo que hay algo que tenemos que terminar ponernos de acuerdo:
1) Puerto compartido para todas las estudiantes -> Sugerencia el 8080 2) Documentación del api. Según hemos venido conversando nos vamos a guiar de la siguiente documentación. Aquí tengo unas sugerencias
/auth
para que esté bajo un contexto
page
y limit
DD-MM-YYYY
Con estos cambios creo que podemos armar bien el contenido de las pruebas de postman. @unjust @ssinuco Compartir esto de igual manera con los responsables de los otros lenguajes para poder avanzar con esto
@cros410 estoy de acuerdo con casi todos los cambios (formato de fecha, consistencia de data en HU3 y HU$, omitir query como parametro)
Para mi trajectories/{{taxiId}}
creo semanticamente tiene sentido ponerlo en el url y me gusta que tienen experiencia con paramteros en el url y no solo search params. Podemos definir also como por defecto devuelva los trajectories de ultima dia o misma dia (pues la data es bien viejo enctonces no devuelva nada si es mismo dia). Pero estoy flexible en este idea si pensamos mejor dejarlo como query param.
Y no se si GET taxis
y GET trajectories
debe necesitar admin o solo un header con token suficiente. Los operaciones de post patch delete de users si.
@unjust @cros410 creo que trajectories/{{taxiId}}
no tiene mucho sentido... si en el path param va el taxi id, no debería ser taxis/{{taxiId}}/trajectories
? si trajectories es el recurso principal me parece que entonces si deberai ser /trajectories?taxiId={{taxiId}}
Ok entiendo @davidgranados. Veo los query params mas como filtros opcionales por eso tambien pensaba que tiene mas sentido como parte de path.
Me gusta la idea de taxis/{{taxiId}}/trajectories
porque no veo otro oportunidad usar path parameters en el proyecto. Pero quiza eso no es tan importante.
Si quedamos con trajectories/
, me pregunto si el endpoint trajectories/
sin query params debe retornar algo, no?
Ahora en la historia de usuario creo taxiId
y date
son requeridos y no definimos que trajectories/
retorna algo sin ellos. Me parece un poco rara.
@unjust dentro del contexto de usuario si hay oportunidad de usar path parameters
Estoy de acuerdo con @davidgranados sobre las dos opciones que tenemos para la HU3
a) /taxis/{{taxiId}}/trajectories?date=02-02-2008
b) /trajectories?taxiId={{taxiId}}&date=02-02-2008
Hasta el momento cuando me a tocado guiar a estudiantes he optado por la (b). Según los GIF que a sumado @ssinuco cobra más sentido la (a) porque no hay caso de uso para solo listar toas las trayectorias sino que siempre se necesitan en base a un taxi en especifico.
Lo que si recomendaría como comenta @unjust es mencionar que todos los parámetros por query son opcionales y de no enviar algunos tener valores con defecto como el pageSize
y pageNumber
y otro no como el date
y posiblemente el taxiId
Queremos probar integration tests de Fleet Management que idealmente son agnostica de lenguaje. Este puede ser mucho de pedit, pero vamos probando algunas ideas: