'use strict'; const chai = require('chai'); const sinon = require('sinon'); const sinonChai = require('sinon-chai'); const expect = chai.expect; chai.use(sinonChai); describe('Testing parser', function () { var Parser = require('../src/parser'); it('Availability of the class', function () { expect(Parser).not.to.be.undefined; expect(Parser).not.to.be.null; }); it('Instantiate with default params', function () { var instance = new Parser(); expect(instance).not.to.be.null; }); describe('getKeyValue', function () { var instance = new Parser({ keep_quotes: true }); it('Returning key value not matching', function () { var wrapper = function () { instance.getKeyValue('key'); }; expect(wrapper).to.throw; }); }); describe('getMultiKeyValue', function () { var instance = new Parser({ keep_quotes: true }); it('Returning key value not matching', function () { var wrapper = function () { instance.getMultiKeyValue(''); }; expect(wrapper).to.throw; }); }); describe('getMultiLineEndValue', function () { var instance = new Parser({ keep_quotes: true }); it('Returning key value not matching', function () { var wrapper = function () { instance.getMultiLineEndValue(''); }; expect(wrapper).to.throw; }); }); describe('handleSection', function () { var instance = new Parser({ keep_quotes: true }); it('Same section appears twice', function () { var ctx = { ini: {} }; instance.handleSection(ctx, '[multi]'); instance.handleSection(ctx, '[another]'); instance.handleSection(ctx, '[multi]'); expect(ctx.ini.multi).to.be.defined; expect(ctx.ini.another).to.be.defined; expect(ctx.current).to.equal(ctx.ini.multi); }); it('Section inherits from other section', function () { var ctx = { ini: {} }; instance.handleSection(ctx, '[parent]'); instance.handleSection(ctx, '[child:parent]'); expect(ctx.ini.parent).to.be.defined; expect(ctx.ini.child).to.be.defined; }); }); });