H1 'Sites e sistemas que trazem pedidos pelo WhatsApp e tiram sua operação da planilha.'; HeroWork maior com a SEV; menu Cases, Serviços, Como trabalho, Sobre e IA com next/link e pré-carregamento no hover; menu do celular em tela cheia; WhatsApp flutuante e no rodapé com a mensagem da rota; rodapé em todas as páginas; FAQ da home; /ia como oferta de revisão de app feito com IA; formulário com noscript, validação do mailto e plano B do pop-up; cartões sem foco indevido; sem a fonte Monument.
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import {
|
|
AI_REVIEW_SUBJECT,
|
|
isServiceOrCasePath,
|
|
type WhatsAppContexts,
|
|
whatsAppSubjectForPath,
|
|
} from "./whatsapp";
|
|
|
|
/**
|
|
* Testes de caminhos-base de whatsAppSubjectForPath e isServiceOrCasePath (complemento de whatsapp.test.ts):
|
|
* o case sem tabela de nomes, as duas tabelas independentes, nome vazio e rotas sem slug.
|
|
*/
|
|
|
|
const contexts: WhatsAppContexts = {
|
|
services: { "criacao-de-sites": "Sites profissionais" },
|
|
cases: { "sev-modaintima": "SEV Moda Íntima", vazio: "" },
|
|
};
|
|
|
|
describe("whatsAppSubjectForPath", () => {
|
|
it("path: /cases/<id> without contexts -> undefined", () => {
|
|
expect(whatsAppSubjectForPath("/cases/sev-modaintima")).toBeUndefined();
|
|
expect(
|
|
whatsAppSubjectForPath("/cases/sev-modaintima", undefined),
|
|
).toBeUndefined();
|
|
});
|
|
|
|
it("path: /ia without contexts and with a trailing slash -> the AI review", () => {
|
|
expect(whatsAppSubjectForPath("/ia")).toBe(AI_REVIEW_SUBJECT);
|
|
expect(whatsAppSubjectForPath("/ia/", contexts)).toBe(AI_REVIEW_SUBJECT);
|
|
});
|
|
|
|
it("path: a service slug is only looked up in the services, a case id only in the cases", () => {
|
|
expect(
|
|
whatsAppSubjectForPath("/servicos/sev-modaintima", contexts),
|
|
).toBeUndefined();
|
|
expect(
|
|
whatsAppSubjectForPath("/cases/criacao-de-sites", contexts),
|
|
).toBeUndefined();
|
|
});
|
|
|
|
it("path: a case with an empty name -> no subject (the message stays generic)", () => {
|
|
expect(whatsAppSubjectForPath("/cases/vazio", contexts)).toBeUndefined();
|
|
});
|
|
|
|
it.each([
|
|
"",
|
|
"/servicos/",
|
|
"/cases/",
|
|
"/ia/extra",
|
|
"/IA",
|
|
"/cases/sev-modaintima/extra",
|
|
])("path: %j -> no subject", (pathname) => {
|
|
expect(whatsAppSubjectForPath(pathname, contexts)).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
describe("isServiceOrCasePath", () => {
|
|
it.each(["", "/servicos/", "/cases/", "/cases/a/b", "/curriculo", "/ia/"])(
|
|
"path: %j -> false",
|
|
(pathname) => {
|
|
expect(isServiceOrCasePath(pathname)).toBe(false);
|
|
},
|
|
);
|
|
});
|