import { expect } from 'chai'; import { mapRedeemableTokenResponse } from '../../../src/mappers/redeemable-token'; describe('mapRedeemableTokenResponse', () => { let tokenData: any; let redeemableToken: any; let expectedResult: any; beforeEach(() => { tokenData = { id: 'tokenId', redeemableFor: { accessDuration: null, licenceId: 'accessLicenceId', type: 'type' }, status: 'AVAILABLE', redeemability: 'SINGLE_USE' }; redeemableToken = mapRedeemableTokenResponse(tokenData); expectedResult = { id: tokenData.id, accessDuration: tokenData.redeemableFor.accessDuration, accessLicenceId: tokenData.redeemableFor.licenceId, type: tokenData.redeemableFor.type, status: tokenData.status, redeemability: tokenData.redeemability }; }); it('sets redeemableToken.id', () => { expect(redeemableToken.id).to.eql('tokenId'); }); it('sets redeemableToken.accessDuration', () => { expect(redeemableToken.accessDuration).to.equal(null); }); it('sets redeemableToken.accessLicenceId', () => { expect(redeemableToken.accessLicenceId).to.equal('accessLicenceId'); }); it('sets redeemableToken.type', () => { expect(redeemableToken.type).to.equal('type'); }); it('sets redeemableToken.status', () => { expect(redeemableToken.status).to.equal('AVAILABLE'); }); it('sets redeemableToken.redeemability', () => { expect(redeemableToken.redeemability).to.equal('SINGLE_USE'); }); it('returns fully mapped redeemableToken instance', () => { expect(redeemableToken).to.eql(expectedResult); }); context('errors', () => { it('throws with mappedTokenData when it contains an undefined value', () => { tokenData.id = undefined; expectedResult.id = undefined; try { mapRedeemableTokenResponse(tokenData); expect.fail('Should have thrown the error!'); } catch (error) { expect(error.data.mappedTokenData).eql(expectedResult); } }); }); });