O botão das ofertas rola até o contato com o tipo marcado e não quebra mais as âncoras; ofertas com o que você recebe e primeiro passo, logo depois da vitrine; bloco de IA fora da home; cartão largo da SEV no hero do celular; separador da faixa de clientes só entre itens; favicon de 13 para 1,8 KB; pré-carregamento só no hover e nunca de /#... fora da home; X do menu e cabeçalho opaco; WhatsApp com "o case"; /ia com 3 passos e modelo de relatório ilustrativo; Sobre alinhado ao currículo; CSP Report-Only com os domínios do Ads.
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import { render, screen } from "@testing-library/react";
|
|
import ClientStrip from "./ClientStrip";
|
|
|
|
/**
|
|
* Testes de caminhos-base de ClientStrip (complemento de ClientStrip.test.tsx): o separador entre clientes
|
|
* (um cliente, vários; só entre itens, nunca no fim de uma linha) e o className opcional.
|
|
*/
|
|
|
|
const clients = [
|
|
{ id: "sev-modaintima", name: "SEV Moda Íntima" },
|
|
{ id: "lavacao-047", name: "Lavação 047" },
|
|
{ id: "sc-plus", name: "SC Plus Aquicultura" },
|
|
];
|
|
|
|
describe("ClientStrip", () => {
|
|
it("path: a single client -> no separator dot", () => {
|
|
const { container } = render(<ClientStrip clients={clients.slice(0, 1)} />);
|
|
|
|
expect(screen.getAllByRole("link")).toHaveLength(1);
|
|
expect(container.querySelectorAll("[aria-hidden='true']")).toHaveLength(0);
|
|
});
|
|
|
|
it("path: several clients -> a separator before every client except the first", () => {
|
|
render(<ClientStrip clients={clients} />);
|
|
|
|
const items = screen.getAllByRole("listitem");
|
|
expect(items).toHaveLength(3);
|
|
expect(
|
|
items.map((item) => item.querySelector("[aria-hidden='true']") !== null),
|
|
).toEqual([false, true, true]);
|
|
expect(items[1].querySelector("[aria-hidden='true']")).toHaveTextContent(
|
|
"·",
|
|
);
|
|
});
|
|
|
|
it("path: className given -> appended to the wrapper without a stray space", () => {
|
|
const { container } = render(
|
|
<ClientStrip clients={clients} className="hero-in mt-sp-4" />,
|
|
);
|
|
|
|
const wrapper = container.firstElementChild as HTMLElement;
|
|
expect(wrapper.className.endsWith("hero-in mt-sp-4")).toBe(true);
|
|
});
|
|
|
|
it("path: className omitted -> the wrapper class has no trailing space", () => {
|
|
const { container } = render(<ClientStrip clients={clients} />);
|
|
|
|
const wrapper = container.firstElementChild as HTMLElement;
|
|
expect(wrapper.className).toBe(wrapper.className.trim());
|
|
});
|
|
});
|