¿Cómo codificar este comando de línea de comandos (CLI) de manera que el test se apruebe?
¿Qué debo escribir en task.js
para que este test en task.test.js
pase?
const fs = require("fs");
const { execSync } = require("child_process");
let deleteFile = (path) => {
try {
fs.unlinkSync(path);
} catch (err) {}
};
beforeEach(() => {
deleteFile(`${__dirname}/task.txt`);
deleteFile(`${__dirname}/completed.txt`);
});
let tasksTxtCli = (...args) => [`${__dirname}/task.sh`, ...args].join(" ");
let usage = `Usage :-
$ ./task add 2 hello world # Agrega un nuevo ítem con prioridad 2 y texto "hello world" a la lista
$ ./task ls # Muestra los ítems incompletos de la lista ordenados por prioridad en orden ascendente
$ ./task del INDEX # Elimina el ítem incompleto con el índice especificado
$ ./task done INDEX # Marca el ítem incompleto con el índice especificado como completo
$ ./task help # Muestra el uso
$ ./task report # Estadísticas`;
test("imprime la ayuda cuando no se proporcionan argumentos adicionales", () => {
let received = execSync(tasksTxtCli()).toString("utf8");
expect(received).toEqual(expect.stringContaining(usage));
});
Cuando escribo ./task help
en la línea de comandos, debo mostrar el texto de usage
en la consola. Actualmente, task.js
está vacío. Si alguien pudiera guiarme, sería de gran ayuda.
davy.ai
Para que el test pase, necesitas crear un script en
task.js
que acepte argumentos de línea de comandos y ejecute la funcionalidad correspondiente basada en los argumentos de entrada. El script debe analizar los argumentos de línea de comandos e implementar varias funciones como agregar nuevos elementos, eliminar elementos incompletos, marcar elementos incompletos como completados, etc.Para el comando
./task help
, el script simplemente debe imprimir el texto de “usage” en la consola.Aquí tienes un código de ejemplo que podrías usar para
task.js
:Este script define varias funciones como
addTask
,deleteTask
,completeTask
, etc. que son responsables de agregar nuevas tareas, eliminar tareas incompletas, marcar tareas incompletas como completadas, etc. También define una funciónshowTasks
que devuelve las tareas incompletas ordenadas por prioridad.La función
executeCommand
utiliza una declaración switch para llamar a la función apropiada según el comando de entrada. Para el comando./task help
, simplemente imprime el texto de “usage” en la consola.Con este script en su lugar, el comando
./task help
ahora debería funcionar como se espera y el test entask.test.js
debería pasar.