Después de evaluar tiempo y esfuerzos, el equipo de Launch X ha decidido crear la aplicación Twitter
. Para ello han definido la primera etapa del sprint con los siguientes requerimientos a desarrollar:
✔️ Requerimiento 1: Se necesita un modelo User
para guardar la información de un usuario de nuestra app: id
, username
, name
,bio
, dateCreated
y lastUpdated
.
Solución
🔵 Prueba para el requerimiento
Mediante el uso de la técnica TDD, escribe el código para la prueba de acuerdo al requerimiento y posteriormente, ejecuta la prueba.
🔵 Clase para el requerimiento
Para corregir el error arrojado al ejecutar la prueba, se crea un script nuevo con la clase User y un constructor que guarde los parámetros solicitados en el requerimiento.
✔️ Requerimiento 2: Las propiedades dateCreated
y lastUpdated
deberán ser datos de tipo fecha que guarden el momento en que se instancie un nuevo objeto de la clase User
.
Solución
Modifica el constructor de la clase creada y asigna un valor por defecto a estos atributos usando
new Date()
.
🔵 Prueba para el requerimiento
🔵 Clase para el requerimiento
✔️ Requerimiento 3: Cada objeto tipo user
necesita los siguietes gettes: getUsername
, getBio
, getDateCreated
, getLastUpdated
.
Solución
Agrega los getters regresando la propiedad indicada, no olvides usar
this
.
🔵 Prueba para el requerimiento
🔵 Clase para el requerimiento
✔️ Requerimiento 4: Cada objeto necesita los siguientes setters: setUsername
y setBio
, para actualizar dichas propiedades.
Solución
Agrega los setters usando la palabra
set
y modificando el atributo indicado.
🔵 Prueba para el requerimiento
🔵 Clase para el requerimiento
✔️ Requerimiento 1: Crear un nuevo usuario con lo ya definido en el sprint anterior, usando una nueva clase llamada UserService
.
Criterios de aceptación:
- Esta clase deberá tener un método
create
que se pueda usar sin instanciar (static method), y que reciba solo los parámetros delid
,username
yname
. - El valor de
bio
deberá ser por default para todos losuser
creados.
✔️ Requerimiento 2: Agregar un nuevo método estático en UserService
llamado getInfo
que al recibir un objeto de la clase User
, me regrese una lista con todos los valores de los atributos de dicho objeto.
✔️ Requerimiento 3: Agregar un nuevo método estático en UserService
llamado updateUserUsername
, que reciba un objeto de la clase User
y un nuevo string, que actualizará el valor de username
.
✔️ Requerimiento 4: Agregar un nuevo método estático en UserService
llamado getAllUsernames
, que recibirá una lista de objetos de la clase User
, y regresará la lista de todos los usernames de dichos objetos.
Crea una clase llamada
UserView
que servirá para interactuar con el modeloUser
a través deUserService
. Crea un método en esta clase llamadocreateUser
que sirva para crear un nuevo objetouser
a partir de unpayload
, es decir, un objeto que contenga información para crearlo.
✔️ Requerimiento 1: Valida que al enviar en el payload
un valor null
, obtenga un objeto con la llave error
y el valor indique payload no existe
.
✔️ Requerimiento 2: Valida que un payload
contenga en alguna de las llaves username
, name
, o id
un valor en null
. Si hay un valor null
regresa un objeto con la llave error
y que indique el texto: necesitan tener un valor válido
.
✔️ Requerimiento 3: Valida que un payload
con algunas de las propiedades necesarias regrese un objeto con la llave error
indicando necesitan tener un valor válido
.
✔️ Requerimiento 4: Verifica que se pueda crear un objeto User
, al enviar un payload con las siguientes propiedades: username
, id
y name
.