Ghost/ghost/offers/test/lib/domain/models/OfferDuration.test.js

73 lines
2.3 KiB
JavaScript
Raw Normal View History

const OfferDuration = require('../../../../lib/domain/models/OfferDuration');
describe('OfferDuration', function () {
describe('OfferDuration.create factory', function () {
it('Will only allow creating a once, repeating or forever duration', function () {
OfferDuration.create('once');
OfferDuration.create('forever');
OfferDuration.create('trial');
OfferDuration.create('repeating', 2);
try {
OfferDuration.create();
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
try {
OfferDuration.create('other');
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
try {
OfferDuration.create('repeating');
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
try {
OfferDuration.create('repeating', 1.5);
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
try {
OfferDuration.create('repeating', -12);
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
try {
OfferDuration.create('repeating', '2');
should.fail();
} catch (err) {
should.ok(
err instanceof OfferDuration.InvalidOfferDuration,
'expected an InvalidOfferDuration error'
);
}
});
});
});