El objetivo de esta práctica es aprender y poner en práctica los conceptos fundamentales de JavaScript.
El repositorio base de la práctica está disponible en: https://github.com/pedroprieto/practica_dwec_gestor_presupuesto
En esta segunda práctica se debe configurar el repositorio personal (el que se creó haciendo un fork del repositorio base) para añadir un segundo repositorio remoto. De esta manera, tu repositorio tendrá dos remotos:
- El remoto principal, llamado
origin
, que estará conectado con tu repositorio de tu cuenta de GitHub. Es el que utilizarás normalmente para subir periódicamente los cambios (mediantegit push
) o para actualizarlo o clonarlo en otro equipo. - Un remoto secundario, llamado
profesor
, que será de solo lectura. Estará conectado con el repositorio base y solo se utilizará para incorporar a tu repositorio personal los enunciados y archivos base de las siguientes prácticas que vayamos realizando.
En el apartado de Preparación se indica cómo proceder para realizar estas tareas.
Recuerda que en todo momento estarás usando el mismo repositorio. Lo único que harás será incorporar nuevos cambios con los archivos de las siguientes prácticas.
Para poder realizar esta práctica y que funcione adecuadamente el entorno de test será necesario instalar el siguiente software en el equipo:
Para realizar la práctica se seguirán los principios del Desarrollo Guiado por Test. Para ello se proporciona en el repositorio una serie de ficheros que permiten ejecutar tests. Dichos tests comprobarán que el programa cumple con algunos de los requisitos de la práctica.
El repositorio se ha configurado para que se ejecuten los tests automáticamente en la nube de GitHub cuando se realice un push o una pull request. Para ello se hará uso del servicio GitHub Actions. Los ficheros presentes en la carpeta .github/workflows/
contienen la configuración necesaria para activar la acción de ejecución de tests. Dichos ficheros están convenientemente comentados. Se puede ver el resultado de la ejecución de los tests en la pestaña Actions
del repositorio o bien en su página principal (un aspa roja indica fallo en algún test y un icono verde indica que se han superado). Fuente: https://docs.github.com/en/actions/guides/building-and-testing-nodejs
¡IMPORTANTE! Para que el servicio GitHub Actions se active en tu repositorio debes acceder a la pestaña
Actions
y activarlo.
- Instalar los requisitos de software indicados
- Abrir un terminal
- Situarse en la carpeta del repositorio personal de la práctica
- Añadir el remoto secundario a tu repositorio personal. Para ello hay que ejecutar el comando:
git remote add profesor https://github.com/pedroprieto/practica_dwec_gestor_presupuesto.git
- Incorporar a tu repositorio personal los cambios realizados por el profesor correspondientes a los archivos de esta práctica. Para ello hay que ejecutar:
git pull profesor master
- Este comando descarga los cambios que ha realizado el profesor en el repositorio base y los integra en tu repositorio personal. Tras realizar este paso, seguramente git abra el editor configurado por defecto para que introduzcas un mensaje para crear un nuevo commit que integre tus cambios y los cambios del profesor. Debes introducir el texto y guardar los cambios.
- En principio no deben producirse conflictos. En caso de que se produzcan (por ejemplo, porque has editado el fichero
.gitignore
y yo también porque lo exigía la práctica), resuélvelos y notifícamelo a través de un Issue. - Ejecuta el comando
git push
para subir los cambios a tu repositorio personal (el remoto principal) en GitHub y que queden guardados ahí también. - Ejecutar el comando
npm install
. Este comando instalará todas las librerías de Node necesarias para ejecutar los tests. Dichas librerías se guardarán en una carpeta con nombrenode_modules
dentro del repositorio. Nótese que dicha carpeta está excluida del repositorio en el archivo.gitignore
. - Ejecutar el comando
npm run test1
para lanzar los tests de esta práctica. Este comando podrá ejecutarse tantas veces como sea necesario. Por pantalla se mostrarán los tests que se pasan y los que no, de manera que se tendrá información sobre las acciones que hay que realizar. Los tests también se ejecutarán automáticamente en GitHub Actions al subir los cambios al repositorio y al realizar la pull request. - Si se está utilizando VS Code se puede lanzar la ejecución de los tests desde el propio editor y utilizar breakpoints para interrumpir la ejecución y depurar el programa. Las configuraciones de lanzamiento creadas para ello están en el archivo
.vscode/launch.json
. - Opcionalmente (recomendable), ejecutar el comando
npm test
para lanzar todos los tests presentes en el repositorio. Se deberá comprobar que se pasan los tests de las prácticas anteriores a la que se esté realizando. Lógicamente, si el repositorio incluye los tests de prácticas posteriores a la que se esté realizando, dichos tests no se pasarán (ya que el trabajo está todavía por hacer). Este último caso puede darse si la persona no está realizando la práctica propuesta en la semana actual (va con “retraso”, por así decirlo). En GitHub Actions se ejecutarán todos los tests en tareas independientes: así se podrá comprobar si el test de la práctica que se está realizando se ha pasado.
Lee atentamente los siguientes artículos y sus correspondientes subsecciones en caso de que las tengan:
- https://es.javascript.info/first-steps
- https://es.javascript.info/code-quality
- https://es.javascript.info/object-basics
- https://es.javascript.info/primitives-methods
- https://es.javascript.info/number
- https://es.javascript.info/string
Crea un fichero llamado gestionPresupuesto.js
en la carpeta js
del repositorio. A no ser que se indique lo contrario, todo el código que se cree deberá guardarse en este fichero.
Crea las siguientes variables:
presupuesto
- Valor inicial:0
Crea las siguientes funciones:
actualizarPresupuesto
- Función de 1 parámetro que se encargará de actualizar la variable globalpresupuesto
. Esta función comprobará que el valor introducido es un número no negativo: en caso de que sea un dato válido, actualizará la variablepresupuesto
y devolverá el valor del mismo; en caso contrario, mostrará un error por pantalla y devolverá el valor -1.mostrarPresupuesto
- Función sin parámetros que se encargará de devolver el texto siguiente:Tu presupuesto actual es de X €
, siendoX
el valor de la variable globalpresupuesto
.CrearGasto
- Función constructora que se encargará de crear un objeto gasto. Esta función devolverá un objeto de tipo gasto. Deberá comprobar que el valor introducido sea un núḿero no negativo; en caso contrario, asignará a la propiedadvalor
el valor 0.
descripcion
- Almacenará la descripción del gasto en formato cadenavalor
- Almacenará el valor del gasto en formato numérico
mostrarGasto
- Función sin parámetros que muestre el texto:Gasto correspondiente a DESCRIPCION con valor VALOR €
, siendoVALOR
yDESCRIPCION
las propiedades del objeto correspondientes.actualizarDescripcion
- Función de 1 parámetro que actualizará la descripción del objeto.actualizarValor
- Función de 1 parámetro que actualizará el valor del objeto. Se encargará de comprobar que el valor introducido sea un número no negativo; en caso contrario, dejará el valor como estaba.
- Cada persona trabajará en su repositorio personal que habrá creado tras realizar el fork del repositorio base.
- Todos los archivos de la práctica se guardarán en el repositorio y se subirán a GitHub periódicamente. Es conveniente ir subiendo los cambios aunque no sean definitivos. No se admitirán entregas de tareas que tengan un solo commit.
- Como mínimo se debe realizar un commit por cada elemento de la lista de tareas a realizar (si es que estas exigen crear código, claro está).
- Para cualquier tipo de duda o consulta se pueden abrir
Issues
haciendo referencia al profesor mediante el texto@pedroprieto
dentro del texto delIssue
. Losissues
deben crearse en tu repositorio: si no se muestra la pestaña deIssues
puedes activarla en losSettings
de tu repositorio. - Una vez finalizada la tarea se debe realizar una
Pull Request
al repositorio base indicando tu nombre y apellidos en el mensaje.