import { ElementIDUtils, IElementIDInfo } from '../../src/utils/ElementIDUtils'; import { describe, expect, beforeEach, test } from '@jest/globals'; import DataUnit from '../../src/dataunit/DataUnit' import { DataType } from '../../src/dataunit/metadata/DataType'; import { UserInterface } from '../../src/dataunit/metadata/UnitMetadata'; import { StringUtils } from '../../src/utils/StringUtils'; type IDInfo = { id?: string, dataUnit?: DataUnit }; type AssertElementIdNameProps = { result: string, iDInfo?: IDInfo, suffix?: string, dataElementIdAttributeName?: string } describe('addIDInfo', () => { let element: HTMLElement; const dataUnit = new DataUnit("dataunit-financeiro"); beforeEach(() => { element = document.createElement('snk-application'); dataUnit.metadata = { name: "dd://br.com.sankhya.fin.cad.movimentacaoFinanceira/Financeiro", label: "Parceiro", fields: [ { name: "CODPARC", label: "Parceiro", dataType: DataType.NUMBER, userInterface: UserInterface.SEARCH, required: true, properties: { ENTITYNAME: "Parceiro" } } ] }; }); const assertElementIdName = ({ result, iDInfo, suffix, dataElementIdAttributeName = "" }: AssertElementIdNameProps) => { const formattedResult = StringUtils.replaceAccentuatedChars(result || "", true).toLowerCase(); const formattedDataElementIdAttributeName = StringUtils.replaceAccentuatedChars(dataElementIdAttributeName || "", true).toLowerCase(); const formattedSuffix = StringUtils.replaceAccentuatedChars(suffix || "", true).toLowerCase(); const formattedDataUnitId = StringUtils.replaceAccentuatedChars(iDInfo?.dataUnit?.dataUnitId || "", true).toLowerCase(); if (formattedDataUnitId) expect(formattedResult).toContain(formattedDataUnitId); if (formattedSuffix) expect(formattedResult).toContain(formattedSuffix); expect( StringUtils.replaceAccentuatedChars(element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME) || '', true).toLowerCase() ).toBe(formattedDataElementIdAttributeName); } test('1 - should add data-element-id with valid id "movFinanceira_snkApplication"', () => { element.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, "movFinanceira"); const result = ElementIDUtils.addIDInfo(element); const dataElementIdAttributeName = "movFinanceira_snkApplication"; assertElementIdName({ dataElementIdAttributeName, result }); }); test('2 - should add data-element-id with valid id "brComSankhyaFinCadMovimentacaofinanceira_snkApplication"', () => { const iDInfo = { id: "br.com.sankhya.fin.cad.movimentacaoFinanceira" }; const result = ElementIDUtils.addIDInfo(element, undefined, iDInfo); const dataElementIdAttributeName = "brComSankhyaFinCadMovimentacaofinanceira_snkApplication"; assertElementIdName({ dataElementIdAttributeName, iDInfo, result }); }); test('3 - should add data-element-id with valid id "movFinanceira_br.com.sankhya.fin.cad.movimentacaoFinanceira"', () => { element.setAttribute("data-field-name", "movFinanceira"); const suffix = "br.com.sankhya.fin.cad.movimentacaoFinanceira"; const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = "movFinanceira_brComSankhyaFinCadMovimentacaofinanceira"; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('4 - should add data-element-id with valid id "meuID2_snkApplication"', () => { element.setAttribute("id", "movFinanceira"); const iDInfo = {id: "meuID2"}; const result = ElementIDUtils.addIDInfo(element, undefined, iDInfo); const dataElementIdAttributeName = "meuID2_snkApplication"; assertElementIdName({ dataElementIdAttributeName, iDInfo, result }); }); test('5 - should add data-element-id with valid id "movFinanceira_snkApplication"', () => { element.setAttribute("id", "movFinanceira"); element.setAttribute("name", "componenteNameTest"); const result = ElementIDUtils.addIDInfo(element); const dataElementIdAttributeName = "movFinanceira_snkApplication"; assertElementIdName({ dataElementIdAttributeName, result }); }); test('6 - should add data-element-id with valid id "movFinanceira_snkApplication"', () => { element.setAttribute("id", "movFinanceira"); element.setAttribute("label", "componenteLabelTest"); const result = ElementIDUtils.addIDInfo(element); const dataElementIdAttributeName = "movFinanceira_snkApplication"; assertElementIdName({ dataElementIdAttributeName, result }); }); test('7 - should add data-element-id with valid id "componenteNameTest_snkApplication"', () => { element.setAttribute("name", "componenteNameTest"); const result = ElementIDUtils.addIDInfo(element); const dataElementIdAttributeName = "componenteNameTest_snkApplication"; assertElementIdName({ dataElementIdAttributeName, result }); }); test('8 - should add data-element-id with valid id "componentLabel_snkApplication"', () => { element.setAttribute("label", "componentLabel"); const result = ElementIDUtils.addIDInfo(element); const dataElementIdAttributeName = "componentLabel_snkApplication"; assertElementIdName({ dataElementIdAttributeName, result }); }); test('9 - should add data-element-id with valid id "dataunitFinanceiro_br.com.sankhya.fin.cad.movimentacaoFinanceira"', () => { const iDInfo = {dataUnit: dataUnit}; const suffix = "br.com.sankhya.fin.cad.movimentacaoFinanceira"; const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_br.com.sankhya.fin.cad.movimentacaoFinanceira`; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('10 - should add data-element-id with valid id "dataunitFinanceiro_meuIDTeste_br.com.sankhya.fin.cad.movimentacaoFinanceira"', () => { const iDInfo = {id: "meuIDTeste", dataUnit: dataUnit}; const suffix = "br.com.sankhya.fin.cad.movimentacaoFinanceira"; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIDTeste_br.com.sankhya.fin.cad.movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('11 - should add data-element-id with valid id "dataunitFinanceiro_meuIDTeste_movimentacaoFinanceira"', () => { const iDInfo = {id: "meuIDTeste", dataUnit: dataUnit}; const suffix = "movimentacaoFinanceira"; const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIDTeste_movimentacaoFinanceira`; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('12 - should add data-element-id with valid id "dataunitFinanceiro_movFinanceira_movimentacaoFinanceira"', () => { element.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, "movFinanceira"); const iDInfo = {id: "meuIDTeste", dataUnit: dataUnit}; const suffix = "movimentacaoFinanceira"; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('13 - should add data-element-id with valid id "dataunitFinanceiro_meuIDTeste_movimentacaoFinanceira"', () => { element.setAttribute("id", "movFinanceira"); const iDInfo = {id: "meuIDTeste", dataUnit: dataUnit}; const suffix = "movimentacaoFinanceira"; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIDTeste_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('14 - should add data-element-id with valid id "dataunitFinanceiro_meuIdTeste_movimentacaoFinanceira"', () => { element.setAttribute("id", "mov-financeira-snk"); const iDInfo = {id: "meu-id-teste", dataUnit: dataUnit}; const suffix = "movimentacao Financeira"; const result = ElementIDUtils.addIDInfo(element, suffix, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIdTeste_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, iDInfo, result, suffix }); }); test('15 - should add data-element-id with valid id "dataunitFinanceiro_meuIdTeste_snkApplication"', () => { element.setAttribute("id", "mov-financeira-snk"); const iDInfo = {id: "meu-id-teste", dataUnit: dataUnit}; const result = ElementIDUtils.addIDInfo(element, undefined, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIdTeste_snkApplication`; assertElementIdName({ dataElementIdAttributeName, iDInfo, result }); }); test('16 - should add data-element-id with valid id "dataunitFinanceiro_meuIdTeste_snkApplication"', () => { const iDInfo = {id: "meu-id-teste", dataUnit: dataUnit}; const result = ElementIDUtils.addIDInfo(element, undefined, iDInfo); const dataElementIdAttributeName = `dataunitFinanceiro?uuid=${iDInfo.dataUnit.dataUnitId}_meuIdTeste_snkApplication`; assertElementIdName({ iDInfo, result, dataElementIdAttributeName }); }); test('17 - should add data-element-id with valid id "movFinanceira_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute("id", "mov-financeira"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('18 - should add data-element-id with valid id "movFinanceira_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, "mov-financeira"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('19 - should add data-element-id with valid id "movFinanceira_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute("data-field-name", "mov-financeira"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('20 - should add data-element-id with valid id "movFinanceira_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute("name", "mov-financeira"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('21 - should add data-element-id with valid id "movFinanceira_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute("label", "mov-financeira"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `movFinanceira_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); test('22 - should add data-element-id with valid id "bancoObrigatorio_movimentacaoFinanceira"', () => { const suffix = "movimentacao-financeira"; element.setAttribute("name", "Banco (obrigatório) *"); const result = ElementIDUtils.addIDInfo(element, suffix); const dataElementIdAttributeName = `bancoObrigatorio_movimentacaoFinanceira`; assertElementIdName({ dataElementIdAttributeName, result, suffix }); }); });