Files
portifolio-evandrodevbr/app/servicos/_components/ServiceRelatedCases.test.tsx
T
Evandro Fonseca Junior e80f73d075 feat(cases): mídia no topo, títulos de busca curtos e CreativeWork
Case com mídia ao lado do título e play acessível; problema de cada cliente reescrito com base nos dados; serviços relacionados em 2 cards; FAQ antes do próximo passo e bloco 'Onde já apliquei isso'; Apolo citada em IoT e arquitetura. metaTitle até 43 caracteres e descrições até 155 com teste; JSON-LD CreativeWork; imagens de compartilhamento abaixo de 100 KB; 404 e robots corrigidos; server-only nos módulos com node:.
2026-10-14 14:15:25 -03:00

49 lines
1.7 KiB
TypeScript

import { render, screen } from "@testing-library/react";
import { caseStudies } from "@/lib/site-content";
import { ServiceRelatedCases } from "./ServiceRelatedCases";
const caseStudy = caseStudies[0];
const note = "Desde 2022 trabalho com isso, em sistemas internos.";
it("renders nothing without cases and without an experience note", () => {
const { container } = render(
<ServiceRelatedCases cases={[]} relevance={{}} />,
);
expect(container).toBeEmptyDOMElement();
});
it("shows only the experience note, without the 'open the case' sentence, when there are no cases", () => {
const { container } = render(
<ServiceRelatedCases cases={[]} relevance={{}} experienceNote={note} />,
);
expect(
screen.getByRole("heading", { level: 2, name: "Onde já apliquei isso" }),
).toBeVisible();
expect(screen.getByText(note)).toBeVisible();
expect(screen.queryByText(/Abra o case/)).toBeNull();
expect(screen.queryByRole("link")).toBeNull();
expect(container.querySelector(".ds-grid-2")).toBeNull();
});
it("invites to open the case and lists each case when there are some", () => {
render(
<ServiceRelatedCases
cases={[caseStudy]}
relevance={{ [caseStudy.id]: "Frase própria sobre a relação." }}
/>,
);
expect(screen.getByText(/Abra o case/)).toBeVisible();
expect(screen.getByText("Frase própria sobre a relação.")).toBeVisible();
expect(
screen.getByRole("link", { name: `Ler case: ${caseStudy.title}` }),
).toHaveAttribute("href", `/cases/${caseStudy.id}`);
});
it("falls back to the case summary when no relevance sentence is given", () => {
render(<ServiceRelatedCases cases={[caseStudy]} relevance={{}} />);
expect(screen.getByText(caseStudy.summary)).toBeVisible();
});