const should = require('should');
const helpers = require('../../../core/frontend/helpers');
const handlebars = require('../../../core/frontend/services/themes/engine').handlebars;

function compile(templateString) {
    const template = handlebars.compile(templateString);
    template.with = (locals = {}, globals) => {
        return template(locals, globals);
    };

    return template;
}

describe('{{price}} helper', function () {
    before(function () {
        handlebars.registerHelper('price', helpers.price);
    });

    it('throws an error for no provided parameters', function () {
        (function compileWith() {
            compile('{{price}}')
                .with({});
        }).should.throw();
    });

    it('throws an error for undefined parameter', function () {
        (function compileWith() {
            compile('{{price @dont.exist}}')
                .with({});
        }).should.throw();
    });

    it('throws if argument is not a number', function () {
        (function compileWith() {
            compile('{{price "not_a_number"}}')
                .with({});
        }).should.throw();
    });

    it('will format decimal adjusted amount', function () {
        compile('{{price 2000}}')
            .with({})
            .should.equal('20');
    });
});
