'use strict'; const test = require('tape'); const clean = require('clear-module'); const DIR = '../../'; const UtilPath = DIR + 'common/util'; const Util = require(UtilPath); const { getStrBigFirst, kebabToCamelCase, findObjByNameInArr, getRegExp, escapeRegExp, } = Util; test('getExt: no extension', (t) => { const EXT = ''; const name = 'file-withot-extension'; const ext = Util.getExt(name); t.equal(ext, EXT, 'should return "" when extension is none'); t.end(); }); test('getExt: return extension', (t) => { const EXT = '.png'; const name = 'picture.png'; const ext = Util.getExt(name); t.equal(ext, EXT, 'should return ".png" in files "picture.png"'); t.end(); }); test('util: getExt: no name', (t) => { const ext = Util.getExt(); t.equal(ext, '', 'should return empty string'); t.end(); }); test('getStrBigFirst: args', (t) => { t.throws(getStrBigFirst, /str could not be empty!/, 'should throw when no str'); t.end(); }); test('getStrBigFirst', (t) => { t.equal(getStrBigFirst('hello'), 'Hello', 'should return str'); t.end(); }); test('kebabToCamelCase: args', (t) => { t.throws(kebabToCamelCase, /str could not be empty!/, 'should throw when no str'); t.end(); }); test('kebabToCamelCase', (t) => { t.equal(kebabToCamelCase('hello-world'), 'HelloWorld', 'should convert kebab to camel case'); t.end(); }); test('util: findObjByNameInArr: no array', (t) => { t.throws(findObjByNameInArr, /array should be array!/, 'should throw when no array'); t.end(); }); test('util: findObjByNameInArr: no name', (t) => { const fn = () => findObjByNameInArr([]); t.throws(fn, /name should be string!/, 'should throw when no name'); t.end(); }); test('util: findObjByNameInArr: object', (t) => { const name = 'hello'; const obj = { name, }; const array = [ obj, ]; const result = findObjByNameInArr(array, name); t.equal(result, obj, 'should return obj'); t.end(); }); test('util: findObjByNameInArr: array', (t) => { const name = 'hello'; const data = 'abc'; const item = { name, data, }; const obj = { name: 'world', }; const array = [ name, [ obj, item, ] ]; const result = findObjByNameInArr(array, name); t.equal(result, data, 'should return data'); t.end(); }); test('util: getRegExp', (t) => { const reg = getRegExp('hel?o.*'); t.deepEqual(reg, RegExp('^hel.?\\..*$'), 'should return regexp'); t.end(); }); test('util: getRegExp: no', (t) => { const reg = getRegExp(''); t.deepEqual(reg, RegExp('^.*$'), 'should return regexp'); t.end(); }); test('util: escapeRegExp: no str', (t) => { t.equal(escapeRegExp(1), 1, 'should equal'); t.end(); }); test('util: escapeRegExp', (t) => { t.equal(escapeRegExp('#hello'), '\\#hello', 'should equal'); t.end(); }); test('util: scope', (t) => { global.window = {}; clean(UtilPath); require(UtilPath); t.pass('should set window in scope'); delete global.window; t.end(); });