Files
portifolio-evandrodevbr/lib/jogo/problemas.test.ts
T
evandro 67b32fcab3
CI / audit (push) Successful in 10m48s
CI / verify (push) Successful in 19m2s
CI / deploy (push) Successful in 2m14s
CI / e2e (push) Failing after 36m15s
feat(jogo): expediente dos mortos, jogo de zumbis em primeira pessoa
Etapa 1 inteira (logica com 100% de cobertura, cena 3D, toque, sons, bancada de desempenho, e2e) e a base da etapa 2 (mapa novo no Tiled, texturas, imagens dos itens, sons conferidos, golpe recortado e medido). Pagina /jogo fora do menu e do sitemap ate a medicao no celular.
2026-11-10 19:37:10 -03:00

79 lines
2.2 KiB
TypeScript

import { getServicePage } from "@/lib/site-content";
import {
AREAS,
type AreaId,
PROBLEMAS,
problemaPorId,
problemasDaArea,
} from "./problemas";
const areas = Object.keys(AREAS) as AreaId[];
describe("PROBLEMAS", () => {
it("tem 27 problemas", () => {
expect(PROBLEMAS).toHaveLength(27);
});
it("tem ids únicos em kebab-case sem acento", () => {
const ids = PROBLEMAS.map(({ id }) => id);
expect(new Set(ids).size).toBe(ids.length);
for (const id of ids) expect(id).toMatch(/^[a-z0-9]+(-[a-z0-9]+)*$/);
});
it("tem os rótulos das seis áreas", () => {
expect(AREAS).toEqual({
vender: "Vender e ser encontrado",
atender: "Atender",
operar: "Operar",
fiscal: "Fiscal e financeiro",
sistemas: "Sistemas e integrações",
seguranca: "Segurança e dados",
});
});
it("dá a toda área ao menos 4 problemas", () => {
for (const area of areas)
expect(problemasDaArea(area).length).toBeGreaterThanOrEqual(4);
});
it("aponta cada destino para uma página de serviço que existe", () => {
const fora = PROBLEMAS.filter(
({ destino }) => !destino.startsWith("/servicos/"),
);
expect(fora.map(({ destino }) => destino)).toEqual(["/ia"]);
for (const { destino } of PROBLEMAS.filter((p) =>
p.destino.startsWith("/servicos/"),
)) {
expect(getServicePage(destino.replace("/servicos/", ""))).toBeDefined();
}
});
it("não cita nome de cliente", () => {
const clientes = /SEV|Lavação|NutriScan|SC Plus|AS Serviços|Julia/;
for (const { nome, solucao } of PROBLEMAS) {
expect(nome).not.toMatch(clientes);
expect(solucao).not.toMatch(clientes);
}
});
});
describe("problemaPorId", () => {
it("acha pelo id", () => {
expect(problemaPorId(PROBLEMAS[0].id)).toBe(PROBLEMAS[0]);
});
it("devolve undefined para id inexistente", () => {
expect(problemaPorId("nao-existe")).toBeUndefined();
});
});
describe("problemasDaArea", () => {
it("devolve só os da área", () => {
for (const area of areas) {
const lista = problemasDaArea(area);
expect(lista.every((p) => p.area === area)).toBe(true);
}
expect(areas.reduce((n, a) => n + problemasDaArea(a).length, 0)).toBe(27);
});
});