59naga/chopsticks

View on GitHub
test/use-options/default.js

Summary

Maintainability
A
0 mins
Test Coverage
// dependencies
import assert from 'assert';

// target
import parse from '../../src';

// environment
let params;

// specs
describe('use default option', () => {
  // @see github.com/substack/minimist/blob/1.2.0/test/dotted.js#L18-L22
  it('should set default value unless assign a value', () => {
    params = parse(
      [''],
      {
        default: {
          foo: 1,
        },
      },
    );
    assert(params._.length === 0);
    assert(params.flagCount === 1);
    assert(params.foo === 1);

    params = parse(
      ['--foo=1'],
      {
        default: {
          foo: 1,
        },
      },
    );
    assert(params._.length === 0);
    assert(params.flagCount === 1);
    assert(params.foo === 1);

    params = parse(
      ['--foo=bar', '--foo=bar'],
      {
        default: {
          foo: 'bar',
        },
      },
    );
    assert(params._.length === 0);
    assert(params.flagCount === 1);
    assert(params.foo.length === 2);

    params = parse(
      ['--no-foo'],
      {
        default: {
          foo: true,
          bar: true,
          baz: ['beep', 'boop', { kaboom: 1 }],
        },
      },
    );

    assert(params._.length === 0);
    assert(params.flagCount === 3);
    assert(params.foo === false);
    assert(params.bar === true);
    assert(params.baz.length === 3);
    assert(params.baz[0] === 'beep');
    assert(params.baz[1] === 'boop');
    assert(params.baz[2].kaboom === 1);
  });

  it('if the default flag name using dot, it should be handled as a key of the object', () => {
    params = parse(
      [''],
      {
        default: {
          'a.b': 59798,
        },
      },
    );
    assert(params._.length === 0);
    assert(params.flagCount === 1);
    assert(params.a.b === 59798);

    params = parse(
      ['--a.b', '59798'],
      {
        default: {
          'a.b': 11,
        },
      },
    );

    assert(params._.length === 0);
    assert(params.flagCount === 1);
    assert(params.a.b === 59798);

    params = parse(
      ['--a.b', '59', '--a.b=798', '--', '--a.b=59798'],
      {
        default: {
          'a.b': 11,
          'a.c': 33,
          'a[0]': null,
        },
      },
    );

    assert(params._.length === 1);
    assert(params.flagCount === 1);
    assert(params.a.b.length === 2);
    assert(params.a.b[0] === 59);
    assert(params.a.b[1] === 798);
    assert(params.a[0] === null);
    assert(params._[0] === '--a.b=59798');
  });
});