otimização de filtroDelta e conversão para bun

This commit is contained in:
Luiz Silva 2026-10-07 13:23:59 -03:00
parent e80e1be4c0
commit 230f2f62db
15 changed files with 409 additions and 1944 deletions

View file

@ -1,23 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const bun_test_1 = require("bun:test");
const tipagemRotas_1 = require("../tipagemRotas");
(0, vitest_1.describe)("TipagemRotas", () => {
(0, vitest_1.it)("deve montar _partesCaminho a partir de string ou array, normalizando barras", () => {
(0, bun_test_1.describe)("TipagemRotas", () => {
(0, bun_test_1.it)("deve montar _partesCaminho a partir de string ou array, normalizando barras", () => {
const r1 = new tipagemRotas_1.TipagemRotas({ caminho: "aplicacao/func" });
(0, vitest_1.expect)(r1.caminho).toBe("/aplicacao/func");
(0, bun_test_1.expect)(r1.caminho).toBe("/aplicacao/func");
const r2 = new tipagemRotas_1.TipagemRotas({
caminho: ["aplicacao", "func"],
});
(0, vitest_1.expect)(r2.caminho).toBe("/aplicacao/func");
(0, bun_test_1.expect)(r2.caminho).toBe("/aplicacao/func");
const r3 = new tipagemRotas_1.TipagemRotas({ caminho: "/a//b///c/" });
(0, vitest_1.expect)(r3.caminho).toBe("/a/b/c");
(0, bun_test_1.expect)(r3.caminho).toBe("/a/b/c");
});
(0, vitest_1.it)("Valores de entrada com mesmo valor dos valores de saída", () => {
(0, bun_test_1.it)("Valores de entrada com mesmo valor dos valores de saída", () => {
const r1 = new tipagemRotas_1.TipagemRotas({ caminho: "aplicacao/func" });
const objetoEntrada = { idade: 21, nome: "João" };
const rota = r1.endereco(objetoEntrada);
const parametros = r1.parametros(rota);
(0, vitest_1.expect)(parametros.nome).toBe(objetoEntrada.nome);
(0, bun_test_1.expect)(parametros.nome).toBe(objetoEntrada.nome);
});
});

View file

@ -0,0 +1,111 @@
"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");
});
});