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.
79 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|