UNPKG

@auttam/easycli

Version:

A quick and easy way of creating cli for your npm package.

130 lines (129 loc) 5.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const expect = require('chai').expect; const collection_1 = require("../../lib/config/collection"); const config_error_1 = require("../../lib/errors/config-error"); class CollectionTest extends collection_1.Collection { append(key, value) { super.append(key, value); } hasKey(key) { return super.hasKey(key); } get(key) { return super.get(key); } find(target, propertyName) { return super.find(target, propertyName); } validate(item) { return true; } itemAdded(item) { } verify() { } } describe('Collection Class Tests', function () { var collection; var testItem = { name: 'color', value: 'pink' }; beforeEach(function () { collection = new CollectionTest(); }); describe('add()', function () { it('allows only string as a key', function () { expect(() => collection.append("key", testItem)).to.not.throw(); expect(() => collection.append(1, testItem)).to.throw(config_error_1.ConfigurationError); }); it('allows symbol key', function () { expect(() => collection.append(Symbol(), 'value')).to.not.throw(config_error_1.ConfigurationError); }); it('throws error on adding duplicate key', function () { collection.append('key', 'value'); expect(() => collection.append('key', 'value')).to.throw(config_error_1.ConfigurationError); }); it('throws error on adding empty key', function () { expect(() => collection.append('', 'value')).to.throw(config_error_1.ConfigurationError); }); it('calls validate() before adding', function () { var testObj = collection; testObj.validate = function (item) { throw "Test"; }; expect(() => testObj.append('key', 'value')).to.throw("Test"); }); it('adds item if validate() returns true', function () { var testObj = collection; testObj.validate = function (item) { return true; }; testObj.append('key', 'value'); expect(testObj.get('key')).to.be.equal("value"); }); it('does not add item if validate() returns false', function () { var testObj = collection; testObj.validate = function (item) { return false; }; testObj.append('key', 'value'); expect(testObj.get('key')).to.be.an("undefined"); }); it('adds item if validate() returns truthy value', function () { var testObj = collection; testObj.validate = function (item) { return 'false'; }; testObj.append('key', 'value'); expect(collection.get('key')).to.be.equal("value"); }); }); describe('hasKey()', function () { it('returns true if key is present', function () { var symbol1 = Symbol(); collection.append(symbol1, 'value1'); collection.append('key', 'value'); expect(collection.hasKey('key')).to.be.equal(true); expect(collection.hasKey(symbol1)).to.be.equal(true); expect(collection.hasKey("undefined_key")).to.be.equal(false); }); }); describe('get()', function () { it('gets correct value for the key', function () { collection.append('key1', 'value1'); collection.append('key2', 'value2'); expect(collection.get('key1')).to.be.equal('value1'); expect(collection.get('key2')).to.be.equal('value2'); }); it('gets correct value for the symbol key', function () { var symbol1 = Symbol(); var symbol2 = Symbol(); collection.append(symbol1, 'value1'); collection.append('key2', 'value2'); collection.append(symbol2, 'value3'); expect(collection.get(symbol1)).to.be.equal('value1'); expect(collection.get('key2')).to.be.equal('value2'); expect(collection.get(symbol2)).to.be.equal('value3'); }); }); describe('findByProperty()', function () { it('finds item by looking into each value and matching its property', function () { collection.append('0', 1); collection.append('1', { size: 1, name: 'alpha' }); collection.append('2', { size: 2, name: 'beta' }); collection.append('3', { size: 3, name: 'gamma' }); expect(collection.find(3, 'size')) .to.be.an('object') .to.include({ size: 3, name: 'gamma' }); }); }); });