Ghost/test/unit/frontend/helpers/is.test.js
Hannah Wolfe 95d27e7f58
Moved frontend unit tests into their own folder
- this is a small part of a bit of cleanup of our test files
- the goal is to make the existing tests clearer with a view to making it easier to write more tests
- this makes the test structure follow the codebase structure more closely
- eventually we will colocate the frontend tests with the frontend code
2021-10-06 11:58:29 +01:00

69 lines
1.8 KiB
JavaScript

const sinon = require('sinon');
const is = require('../../../../core/frontend/helpers/is');
const logging = require('@tryghost/logging');
describe('{{#is}} helper', function () {
afterEach(function () {
sinon.restore();
});
// All positive tests
it('should match single context "index"', function () {
const fn = sinon.spy();
const inverse = sinon.spy();
is.call(
{},
'index',
{fn: fn, inverse: inverse, data: {root: {context: ['home', 'index']}}}
);
fn.called.should.be.true();
inverse.called.should.be.false();
});
it('should match OR context "index, paged"', function () {
const fn = sinon.spy();
const inverse = sinon.spy();
is.call(
{},
'index, paged',
{fn: fn, inverse: inverse, data: {root: {context: ['tag', 'paged']}}}
);
fn.called.should.be.true();
inverse.called.should.be.false();
});
it('should not match "paged"', function () {
const fn = sinon.spy();
const inverse = sinon.spy();
is.call(
{},
'paged',
{fn: fn, inverse: inverse, data: {root: {context: ['index', 'home']}}}
);
fn.called.should.be.false();
inverse.called.should.be.true();
});
it('should log warning with no args', function () {
const fn = sinon.spy();
const inverse = sinon.spy();
const logWarn = sinon.stub(logging, 'warn');
is.call(
{},
undefined,
{fn: fn, inverse: inverse, data: {root: {context: ['index', 'home']}}}
);
logWarn.called.should.be.true();
fn.called.should.be.false();
inverse.called.should.be.false();
});
});