adicionado testes de rotas e alrerado padroes

This commit is contained in:
Luiz Silva 2025-09-08 14:57:27 -03:00
parent 7e7cf8e7df
commit f2eea9962b
8 changed files with 460 additions and 15 deletions

View file

@ -0,0 +1,29 @@
import { describe, expect, it } from "vitest"
import { TipagemRotas } from "../tipagemRotas"
describe("TipagemRotas", () => {
it("deve montar _partesCaminho a partir de string ou array, normalizando barras", () => {
const r1 = new TipagemRotas<{ q: string }>({ caminho: "aplicacao/func" })
expect(r1.caminho).toBe("/aplicacao/func")
const r2 = new TipagemRotas<{ q: string }>({
caminho: ["aplicacao", "func"],
})
expect(r2.caminho).toBe("/aplicacao/func")
const r3 = new TipagemRotas<{ q: string }>({ caminho: "/a//b///c/" })
expect(r3.caminho).toBe("/a/b/c")
})
it("Valores de entrada com mesmo valor dos valores de saída", () => {
type tipagem = { nome: string; idade: number }
const r1 = new TipagemRotas<tipagem>({ caminho: "aplicacao/func" })
const objetoEntrada: tipagem = { idade: 21, nome: "João" }
const rota = r1.endereco(objetoEntrada)
const parametros = r1.parametros(rota)
expect(parametros.nome).toBe(objetoEntrada.nome)
})
})

View file

@ -106,10 +106,14 @@ export class TipagemRotas<T extends { [q: string]: any }> {
** {q:"query"}
*/
get parametros() {
const url = new URL(
typeof window !== "undefined" ? window.location.href : "http://localhost",
)
parametros(urlEntrada?: string) {
const url = urlEntrada
? new URL(urlEntrada)
: new URL(
typeof window !== "undefined"
? window.location.href
: "http://localhost",
)
const query = url.searchParams
const queryObj = Object.fromEntries(query.entries())
@ -130,4 +134,5 @@ export class TipagemRotas<T extends { [q: string]: any }> {
return queryObj as Partial<T>
}
}