"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const bun_test_1 = require("bun:test"); const filtroDelta_1 = require("../filtroDelta"); (0, bun_test_1.describe)("filtroDelta - validação de colunas", () => { (0, bun_test_1.it)("deve validar nomes de colunas e propriedades contendo qualquer combinação de \\w, . e -", () => { const colunasValidasCombinadas = [ "coluna-teste", "dados.item-1", "minha-tabela.meu-campo", "uuid-550e8400-e29b-41d4-a716-446655440000", "objeto-a.propriedade-b.campo_c", "campo-1", "parametro-a-b-c", "coluna.", ".coluna", "coluna..sub", "a-b.c-d.e", "-coluna-", "..", ".", "-", "---", "dados.item_1-x.teste.", "prefixo..meio--fim", ]; for (const coluna of colunasValidasCombinadas) { (0, bun_test_1.expect)(filtroDelta_1.regexColunaFiltroDelta.test(coluna)).toBe(true); (0, bun_test_1.expect)(filtroDelta_1.zColunaFiltroDelta.parse(coluna)).toBe(coluna); } }); (0, bun_test_1.it)("deve validar nomes de colunas convencionais com letras, números e sublinhados", () => { const colunasConvencionais = [ "nome", "idade", "usuario_id", "_id", "dados.propriedade", "tabela.campo_123.sub_valor", ]; for (const coluna of colunasConvencionais) { (0, bun_test_1.expect)(filtroDelta_1.regexColunaFiltroDelta.test(coluna)).toBe(true); (0, bun_test_1.expect)(filtroDelta_1.zColunaFiltroDelta.parse(coluna)).toBe(coluna); } }); (0, bun_test_1.it)("deve rejeitar nomes de colunas inválidos", () => { const colunasInvalidas = [ "", "coluna com espaco", "coluna;drop", "coluna/sub", "coluna@dominio", "coluna#1", "coluna$valor", "coluna'teste'", 'coluna"teste"', "(coluna)", "coluna=1", "coluna\nteste", ]; for (const coluna of colunasInvalidas) { (0, bun_test_1.expect)(filtroDelta_1.regexColunaFiltroDelta.test(coluna)).toBe(false); (0, bun_test_1.expect)(() => filtroDelta_1.zColunaFiltroDelta.parse(coluna)).toThrow("Coluna inválida"); } }); (0, bun_test_1.it)("deve permitir criar filtro delta completo com colunas contendo hífen", () => { const filtro = { condicoes: [ { id: "{c1}", coluna: "dados-usuario.primeiro-nome", operador: "=", valor: "Luiz", }, { id: "{c2}", coluna: "configuracao-sistema.status-ativo", operador: "=", valor: true, }, ], formula: "{c1} E {c2}", }; const resultado = filtroDelta_1.zFiltroDelta.parse(filtro); (0, bun_test_1.expect)(resultado.condicoes).toHaveLength(2); (0, bun_test_1.expect)(resultado.condicoes[0].coluna).toBe("dados-usuario.primeiro-nome"); (0, bun_test_1.expect)(resultado.condicoes[1].coluna).toBe("configuracao-sistema.status-ativo"); }); (0, bun_test_1.it)("deve funcionar com a fábrica iniciarFiltroDelta usando tipos de colunas com hífen", () => { const { criarFiltroDelta } = (0, filtroDelta_1.iniciarFiltroDelta)(); const filtro = criarFiltroDelta({ condicoes: [ { id: "{1}", coluna: "item-id", operador: "!=", valor: "abc", }, { id: "{2}", coluna: "parametros.taxa-padrao", operador: ">=", valor: 10, }, ], formula: "{1} OU {2}", }); (0, bun_test_1.expect)(filtro.condicoes[0].coluna).toBe("item-id"); (0, bun_test_1.expect)(filtro.condicoes[1].coluna).toBe("parametros.taxa-padrao"); }); });