import { expect } from 'chai'; import { RedeemableToken } from '../../../src/models/redeemable-token'; describe('RedeemableToken', () => { const tokenData = { id: 'tokenId', creationDateTime: '2019-05-30T11:10:55.132Z', accessDuration: null, accessLicenceId: 'accessLicenceId', status: 'AVAILABLE', validUntil: '2020-01-01T01:02:03.000Z', redeemability: 'UNLIMITED', type: 'something' }; const redeemableToken = new RedeemableToken(tokenData); describe('on initialise', () => { it('sets this.id', () => { expect(redeemableToken.id).to.eql(tokenData.id); }); it('sets this.creationDateTime', () => { expect(redeemableToken.creationDateTime).to.eql(tokenData.creationDateTime); }); it('sets this.accessDuration', () => { expect(redeemableToken.accessDuration).to.equal(tokenData.accessDuration); }); it('sets this.accessLicenceId', () => { expect(redeemableToken.accessLicenceId).to.equal(tokenData.accessLicenceId); }); it('sets this.type', () => { expect(redeemableToken.type).to.equal(tokenData.type); }); it('sets this.status', () => { expect(redeemableToken.status).to.equal(tokenData.status); }); it('sets this.validUntil', () => { expect(redeemableToken.validUntil).to.eql(tokenData.validUntil); }); it('sets this.redeemability', () => { expect(redeemableToken.redeemability).to.eql(tokenData.redeemability); }); }); describe('isValidToken', () => { it('returns TRUE when status is AVAILABLE', () => { redeemableToken.status = 'AVAILABLE'; expect(redeemableToken.isValid()).to.be.true; }); it('returns TRUE when status is available', () => { redeemableToken.status = 'available'; expect(redeemableToken.isValid()).to.be.true; }); it('returns FALSE when status is NOT AVAILABLE', () => { redeemableToken.status = 'SOMETHING ELSE'; expect(redeemableToken.isValid()).to.be.false; }); }); describe('isSingleUseToken', () => { it('returns TRUE when status is SINGLE_USE', () => { redeemableToken.redeemability = 'SINGLE_USE'; expect(redeemableToken.isSingleUseToken()).to.be.true; }); it('returns TRUE when status is single_use', () => { redeemableToken.redeemability = 'single_use'; expect(redeemableToken.isSingleUseToken()).to.be.true; }); it('returns FALSE when status is NOT SINGLE_USE', () => { redeemableToken.redeemability = 'SOMETHING ELSE'; expect(redeemableToken.isSingleUseToken()).to.be.false; }); }); });