Ghost/ghost/offers/test/lib/domain/models/OfferDuration.test.js
Rishabh 66970e5002 Updated offers setup to allow trial values
refs https://github.com/TryGhost/Team/issues/1726

- updates offer setup to allow new `trial` as discount type, was prev only `fixed` and `percent`
- updates offer setup to allow `amount` as free trial days value
- updates offer setup to allow `trial` as discount duration value for trial offers, was prev only `once`/`forever`/`repeating`
2022-08-11 11:04:39 +05:30

73 lines
2.3 KiB
JavaScript

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'
);
}
});
});
});