ezylean/nuxt-renderer-extractor

View on GitHub
src/cli/run.spec.ts

Summary

Maintainability
C
1 day
Test Coverage
// tslint:disable:no-expression-statement
import test from 'ava';
import * as messages from './messages';
import { create as createRun } from './run';

test('list command - not found', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.resolve(),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: ['list'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, [messages.noVersion]);
  });
});

test('list command', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.resolve(),
    log: (text: string) => logs.push(text),
    ls: () => ['1.0.0', '2.0.0'],
    parseCLArgs: () => ({
      flags: {},
      input: ['list'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, [messages.listVersions(['1.0.0', '2.0.0'])]);
  });
});

test('generate command - nuxt not found', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.reject(messages.nuxtNotFound),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: ['generate'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, [messages.nuxtNotFound]);
  });
});

test('generate command - failed', t => {
  const logs = [];
  const err = new Error('something just break');

  const run = createRun({
    generate: () => Promise.reject(err),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: ['generate'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().catch(error => {
    t.deepEqual(
      error.message,
      messages.operationFailedForUnexpectedReason(err.toString())
    );
  });
});

test('generate command', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.resolve(),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: ['generate'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, []);
  });
});

test('command - not found', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.resolve(),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: [],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, [messages.commandNotFound, messages.help]);
  });
});

test('command - not recognized', t => {
  const logs = [];

  const run = createRun({
    generate: () => Promise.resolve(),
    log: (text: string) => logs.push(text),
    ls: () => [],
    parseCLArgs: () => ({
      flags: {},
      input: ['ghost'],
      showHelp: () => logs.push(messages.help)
    })
  });

  return run().then(() => {
    t.deepEqual(logs, [messages.commandNotRecognized('ghost'), messages.help]);
  });
});