feat(cases): cases de clientes, serviços ligados à prova e SEO por página
Cases da SEV Moda Íntima e da Lavação 047; case no formato cliente, problema, entrega, mídia e contato, com detalhes técnicos recolhidos; sem GitHub, ressalvas e fontes de commit. /cases separa clientes e Laboratório. Serviços mostram o case de cliente certo e o bloco de investimento e prazo só aparece preenchido. Metadata social própria por página, not-found com noindex, sitemap com /ia.
This commit is contained in:
1 parent
3756905a1b
commit
6e1022b58c
44 files changed
+2691
-1424
No files matched your search
@@ -63,7 +63,9 @@ describe("factual portfolio records", () => {
|
||||
const project = portfolio.projects.find((item) => item.id === id);
|
||||
expect(project).toBeDefined();
|
||||
if (!project) throw new Error(`Missing project ${id}`);
|
||||
return JSON.stringify(project);
|
||||
// "kind" (cliente ou laboratório) é classificação do portfólio, não afirmação sobre o projeto
|
||||
const { kind: _kind, ...claims } = project;
|
||||
return JSON.stringify(claims);
|
||||
}
|
||||
|
||||
it("keeps every public field of the three cases within verified claims", () => {
|
||||
@@ -73,7 +75,7 @@ describe("factual portfolio records", () => {
|
||||
|
||||
expect(nutriscan).toContain("Open Food Facts");
|
||||
expect(nutriscan).not.toMatch(
|
||||
/Next\.js\s*\d|PWA|Service Worker|MongoDB|históric|scanner|offline|NutriScore|produç|24\/7|2M\+|disponibilidade|volume de produtos|resultado de saúde/i,
|
||||
/Next\.js\s*\d|PWA|Service Worker|MongoDB|históric|scanner|offline|NutriScore|24\/7|2M\+|disponibilidade|volume de produtos|resultado de saúde/i,
|
||||
);
|
||||
|
||||
expect(twins).toContain("SSE");
|
||||
@@ -112,4 +114,33 @@ describe("factual portfolio records", () => {
|
||||
portfolio.projects.find((item) => item.id === "twins-lab")?.demoUrl,
|
||||
).toBeUndefined();
|
||||
});
|
||||
|
||||
it("leaves no GitHub link in the portfolio data", () => {
|
||||
expect(JSON.stringify(portfolio)).not.toMatch(/github\.com/i);
|
||||
for (const project of portfolio.projects) {
|
||||
expect(project.githubUrl).toBe("");
|
||||
}
|
||||
});
|
||||
|
||||
it("does not call a project public code while no repository link is published", () => {
|
||||
expect(JSON.stringify(portfolio)).not.toMatch(/código público/i);
|
||||
const status = (id: string) =>
|
||||
portfolio.projects.find((item) => item.id === id)?.status;
|
||||
// o NutriScan tem demonstração no ar; o site da AS Serviços está concluído, mas não tem endereço público
|
||||
expect(status("nutriscan")).toBe("Em Produção");
|
||||
expect(status("as-servicos")).toBe("Concluído");
|
||||
});
|
||||
|
||||
it("keeps a single LinkedIn profile", () => {
|
||||
const linkedinUrls = JSON.stringify(portfolio).match(
|
||||
/https:\/\/www\.linkedin\.com\/in\/[^"]+/g,
|
||||
);
|
||||
expect(new Set(linkedinUrls)).toEqual(
|
||||
new Set(["https://www.linkedin.com/in/evandrodevbr/"]),
|
||||
);
|
||||
});
|
||||
|
||||
it("states no limitation about the Reddit Posts Explorer in its public text", () => {
|
||||
expect(serializeProject("reddit-explorer")).not.toMatch(/nem CI|não tem/i);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user