From 3d940f7d6916f0960e044814879d8fe731253bbb Mon Sep 17 00:00:00 2001 From: Izel Nakri Date: Mon, 27 Jan 2020 18:53:03 +0100 Subject: [PATCH] Basic cli tests added --- src/test/cli/index.ts | 186 +++++++++++++++++++++--------------------- 1 file changed, 91 insertions(+), 95 deletions(-) diff --git a/src/test/cli/index.ts b/src/test/cli/index.ts index a9b471d..d191655 100644 --- a/src/test/cli/index.ts +++ b/src/test/cli/index.ts @@ -1,9 +1,10 @@ import test from "ava"; import fs from "fs-extra"; +import util from "util"; import child_process from "child_process"; const CWD = process.cwd(); -const shell = child_process.exec; +const shell = util.promisify(child_process.exec); test.afterEach.always(async () => { if (await fs.pathExists(`${CWD}/memserver`)) { @@ -11,14 +12,13 @@ test.afterEach.always(async () => { } }); -test.serial.cb( +test.serial( "$ memserver | and $ memserver helper | and $ memserver h | without arguments shows help screen", - async t => { + async (t) => { t.plan(3); - const version = JSON.parse( - (await fs.readFile("../../package.json")).toString() - ).version; + const jsonDataBuffer = await fs.readFile(`${CWD}/package.json`); + const version = JSON.parse(jsonDataBuffer.toString()).version; const expectedOutput = `[MemServer CLI v${version}] Usage: memserver memserver init | new # Sets up the initial memserver folder structure @@ -26,100 +26,96 @@ memserver generate model [ModelName] # Generates the initial files for a MemS memserver generate fixtures # Outputs your initial MemServer state as pure javascript fixture files memserver generate fixtures [ModelName] # Outputs your initial MemServer state for certain model as pure javascript fixture memserver console # Starts a MemServer console in node.js [alias: "memserver c"] -memserver serve | server [outputFile] # Builds an ES5 javascript bundle with all your memserver code continuosly on watch [alias: "memserver s"] -memserver build | rollup [outputFile] # Builds an ES5 javascript bundle with all your memserver code -memserver version | v # Displays memserver version - `; - shell(`node ${CWD}/cli.js`, (error, stdout) => { - t.true(stdout.includes(expectedOutput)); + let result = await shell(`node ${CWD}/dist/cli.js`); + + t.true(result.stdout.includes(expectedOutput)); + + result = await shell(`node ${CWD}/dist/cli.js help`); - shell(`node ${CWD}/cli.js help`, (error, stdout) => { - t.true(stdout.includes(expectedOutput)); + t.true(result.stdout.includes(expectedOutput)); - shell(`node ${CWD}/cli.js help`, (error, stdout) => { - t.true(stdout.includes(expectedOutput)); + result = await shell(`node ${CWD}/dist/cli.js h`); - t.end(); - }); - }); - }); + t.true(result.stdout.includes(expectedOutput)); } ); -// test.serial.cb('$ memserver init | sets up the initial folder structure', (t) => { -// t.plan(6); - -// t.true(!fs.existsSync(`${CWD}/memserver`)); - -// const expectedOutput = '[MemServer CLI] /memserver/server.js created\n' + -// '[MemServer CLI] /memserver/initializer.js created\n' + -// '[MemServer CLI] /memserver/fixtures folder created\n' + -// '[MemServer CLI] /memserver/models folder created\n'; - -// shell(`node ${process.cwd()}/cli.js init`, async (error, stdout) => { -// t.is(stdout, expectedOutput); - -// const [ -// serverBuffer, initializerBuffer, fixturesFolderExistence, modelsFolderExists -// ] = await Promise.all([ -// fs.readFile(`${CWD}/memserver/server.js`), -// fs.readFile(`${CWD}/memserver/initializer.js`), -// fs.exists(`${CWD}/memserver/fixtures`), -// fs.exists(`${CWD}/memserver/models`) -// ]); - -// t.is(serverBuffer.toString(), 'export default function(Models) {\n}'); -// t.is(initializerBuffer.toString(), 'export default function(Models) {\n}'); -// t.true(fixturesFolderExistence); -// t.true(modelsFolderExists); - -// t.end(); -// }); -// }); - -// test.serial.cb('$ memserver new | sets up the initial folder structure', (t) => { -// t.plan(6); - -// t.true(!fs.existsSync(`${CWD}/memserver`)); - -// const expectedOutput = '[MemServer CLI] /memserver/server.js created\n' + -// '[MemServer CLI] /memserver/initializer.js created\n' + -// '[MemServer CLI] /memserver/fixtures folder created\n' + -// '[MemServer CLI] /memserver/models folder created\n'; - -// shell(`node ${CWD}/cli.js new`, async (error, stdout) => { -// t.is(stdout, expectedOutput); - -// const [ -// serverBuffer, initializerBuffer, fixturesFolderExistence, modelsFolderExists -// ] = await Promise.all([ -// fs.readFile(`${CWD}/memserver/server.js`), -// fs.readFile(`${CWD}/memserver/initializer.js`), -// fs.exists(`${CWD}/memserver/fixtures`), -// fs.exists(`${CWD}/memserver/models`) -// ]); - -// t.is(serverBuffer.toString(), 'export default function(Models) {\n}'); -// t.is(initializerBuffer.toString(), 'export default function(Models) {\n}'); -// t.true(fixturesFolderExistence); -// t.true(modelsFolderExists); - -// t.end(); -// }); -// }); - -// test.serial.cb('$ memserver version | and $ memserver v', (t) => { -// t.plan(2); - -// shell(`node ${CWD}/cli.js v`, (error, stdout) => { -// t.is(stdout, `[MemServer CLI] ${require(CWD + '/package.json').version}\n`); - -// shell(`node ${CWD}/cli.js version`, (error, stdout) => { -// t.is(stdout, `[MemServer CLI] ${require(CWD + '/package.json').version}\n`); - -// t.end(); -// }); -// }); -// }); +test.serial("$ memserver init | sets up the initial folder structure", async (t) => { + t.plan(6); + + t.true(!fs.pathExistsSync(`${CWD}/memserver`)); + + const expectedOutput = + "[MemServer CLI] /memserver/server.js created\n" + + "[MemServer CLI] /memserver/initializer.js created\n" + + "[MemServer CLI] /memserver/fixtures folder created\n" + + "[MemServer CLI] /memserver/models folder created\n"; + + const { stdout } = await shell(`node ${CWD}/dist/cli.js init`); + + t.is(stdout, expectedOutput); + + const [ + serverBuffer, + initializerBuffer, + fixturesFolderExistence, + modelsFolderExists + ] = await Promise.all([ + fs.readFile(`${CWD}/memserver/server.js`), + fs.readFile(`${CWD}/memserver/initializer.js`), + fs.pathExists(`${CWD}/memserver/fixtures`), + fs.pathExists(`${CWD}/memserver/models`) + ]); + + t.is(serverBuffer.toString(), "export default function(Models) {\n}"); + t.is(initializerBuffer.toString(), "export default function(Models) {\n}"); + t.true(fixturesFolderExistence); + t.true(modelsFolderExists); +}); + +test.serial("$ memserver new | sets up the initial folder structure", async (t) => { + t.plan(6); + + t.true(!fs.pathExistsSync(`${CWD}/memserver`)); + + const expectedOutput = + "[MemServer CLI] /memserver/server.js created\n" + + "[MemServer CLI] /memserver/initializer.js created\n" + + "[MemServer CLI] /memserver/fixtures folder created\n" + + "[MemServer CLI] /memserver/models folder created\n"; + + const { stdout } = await shell(`node ${CWD}/dist/cli.js new`); + + t.is(stdout, expectedOutput); + + const [ + serverBuffer, + initializerBuffer, + fixturesFolderExistence, + modelsFolderExists + ] = await Promise.all([ + fs.readFile(`${CWD}/memserver/server.js`), + fs.readFile(`${CWD}/memserver/initializer.js`), + fs.pathExists(`${CWD}/memserver/fixtures`), + fs.pathExists(`${CWD}/memserver/models`) + ]); + + t.is(serverBuffer.toString(), "export default function(Models) {\n}"); + t.is(initializerBuffer.toString(), "export default function(Models) {\n}"); + t.true(fixturesFolderExistence); + t.true(modelsFolderExists); +}); + +test.serial("$ memserver version | and $ memserver v", async (t) => { + t.plan(2); + + let result = await shell(`node ${CWD}/dist/cli.js v`); + + t.is(result.stdout, `[MemServer CLI] ${require(`${CWD}/package.json`).version}\n`); + + result = await shell(`node ${CWD}/dist/cli.js version`); + + t.is(result.stdout, `[MemServer CLI] ${require(`${CWD}/package.json`).version}\n`); +});