UNPKG

asksuite-core

Version:
169 lines (157 loc) 5.37 kB
const each = require('jest-each').default; const packageUtil = require('../package.util'); const packageItem = require('../mocks/files/packageItem'); const packageItemWithoutPrice = require('../mocks/files/packageItemWithoutPrice'); const packageItemFull = require('../mocks/files/packageItemFull'); const packageV2Mocks = require('../mocks/files/packageV2'); const messageOfferFormated = `\n😎 2 adultos 1 criança \n👶 Crianças de 0 a 10: Grátis\n💰 R$ 599,99\n\n✔️ Coca-cola com gelo free\n✔️ Bastante neve\n✔️ Passeio de snowboard\n\nNão é aceito pets para este pacote`; const v2Options = { differentials: '✔️ __differential__', offersAdult: '😎 __adult__ adulto', offersAdults: '😎 __adults__ adultos', offersChild: '__child__ criança', offersChildren: '__children__ crianças', offersChildrenFree: '👶 Crianças de __startAge__ a __endAge__: Grátis', offersDailyInfo: '📅 __days__ diárias', offersIncludedItems: '✔️ __item__', offersPriceInfo: '💰 __price__', period: '📅 Entre __start__ e __end__', priceInfo: '💰 A partir de __price__', language: 'pt-br', delimiter: '\n', }; const packageLabels = { ...v2Options, shortPeriod: '__start__ até __end__', subtitle: '📅 Entre __start__ e __end__', differentialsInfo: '✔️ __differential__', delimiter: '\n   \n', dateFormat: 'd/m/Y', }; describe('PackageUtil', () => { describe('Formated offers with all information OK', () => { it('should formated package offers ', () => { packageUtil.formatOffers(packageItem, v2Options); expect(packageItem.jsonData.offers[0].messageOffers).toEqual(messageOfferFormated); }); }); describe('Package info with all information OK', () => { each([ [ packageItem, packageLabels, `   📅 Entre 01/10/2022 e 10/10/2022 💰 A partir de R$ 299,99`, undefined, ], [ packageItemWithoutPrice, packageLabels, `   📅 Entre 01/10/2022 e 10/10/2022`, undefined, ], [ packageItemFull, packageLabels, ` 📅 3 diárias (01/10/2022 até 10/10/2022) 😎 2 adultos `, undefined, ], ]).it( 'should formated package offers ', (testItem, packageLabels, expectedSubtitle, expectedDiferentials) => { const { subtitle, diferentials } = packageUtil.formatPackageInfo( testItem.jsonData, 'pt-br', packageLabels, ); expect(subtitle).toEqual(expectedSubtitle); expect(diferentials).toEqual(expectedDiferentials); }, ); }); describe('Formated offers without information about number of adults', () => { it('should formated package offers and dont show price in return ', () => { packageUtil.formatOffers(packageItemWithoutPrice, v2Options); const messageOfferFormated = `\n💰 R$ 599,99\n\n✔️ Coca-cola com gelo free\n✔️ Bastante neve\n✔️ Passeio de snowboard\n\nNão é aceito pets para este pacote`; expect(packageItemWithoutPrice.jsonData.offers[0].messageOffers).toEqual( messageOfferFormated, ); }); }); describe('Test method createPackageV2 ', () => { it.skip('should return a validate package in new format', () => { const currentPackageV2 = packageUtil.createPackageV2( packageV2Mocks.package2Dialog, 'noite', v2Options, ); const exist = currentPackageV2 !== null; expect(exist).toBe(true); expect(currentPackageV2.jsonData.offers[0].messageOffers).toEqual(messageOfferFormated); }); }); describe('Test formatPackageInfo with missing attributes', () => { it('should not throw error', () => { const currentPackageV2 = packageUtil.formatPackageInfo( packageV2Mocks.missingValuesMock.value[0].jsonData, 'pt-br', { subtitle: 'Entre __start__ e __end__', priceInfo: 'A partir de __price__', differentialsInfo: '✔️ __differential__', delimiter: '\n💰', }, ); const exist = !!currentPackageV2; expect(exist).toBe(true); }); }); describe('Test formatOffers with missing attributes', () => { each([ [ { packageData: undefined, getResult: () => { return false; }, }, false, ], [ { packageData: packageV2Mocks.missingValuesOffersMock.value[0], getResult: () => { return ( packageV2Mocks.missingValuesOffersMock.value[0].jsonData.offers[0].messageOffers .length > 0 ); }, }, true, ], [ { packageData: (packageV2Mocks.missingValuesOffersMock.value[0].jsonData.offers = packageV2Mocks.incompleteOffers), getResult: () => { return ( packageV2Mocks.missingValuesOffersMock.value[0].jsonData.offers[0].messageOffers .length > 0 ); }, }, true, ], ]).it('should not throw error', (input, expected) => { packageUtil.formatOffers(input.packageData, v2Options); const result = input.getResult(); expect(result).toBe(expected); }); }); });