asksuite-core
Version:
169 lines (157 loc) • 5.37 kB
JavaScript
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);
});
});
});