Prompt
## Diff
```diff
{{diff}}
```
## Ambiente
- Framework de teste: {{framework}}
- Testes que já existem para este módulo: {{testes_existentes}}
## Etapa 1, enumerar (sem escrever código ainda)
Liste os casos de teste em quatro grupos:
- **Caminho feliz**, o comportamento que a mudança promete
- **Bordas**, vazio, zero, um item, limite máximo, unicode, negativo
- **Falha**, dependência fora do ar, entrada inválida, timeout
- **Regressão**, o que funcionava antes e pode ter quebrado
Marque cada caso com [JÁ COBERTO] se ele já existe na suíte informada.
## Etapa 2, escrever
Escreva em {{framework}} apenas os casos NÃO cobertos.
- Um `expect` por teste sempre que possível.
- Nome do teste descreve o comportamento, não o método: "devolve vazio quando o filtro
não casa", não "testa filtrar()".
- Sem mock do que você está testando. Mock apenas de I/O.
## Etapa 3, apontar o que não dá para testar
Liste o que ficou sem teste e por quê (precisa de refatoração, depende de relógio,
depende de rede real).What this prompt does
Lê o diff e propõe casos de teste agrupados por intenção, marcando quais já existem na suíte informada. Escreve o código só depois de listar os casos, o que evita a suíte redundante que testa a mesma coisa cinco vezes.
Preview
Etapa 1, casos
Caminho feliz
- Converte "Olá Mundo" em "olá-mundo"
- Múltiplos espaços viram um único hífen
Bordas
- String vazia devolve string vazia
- Só espaços devolve string vazia
- Acento é preservado (a implementação atual não translitera)
- Emoji sobrevive sem quebrar
- Hífen já existente não é duplicado
Falha
- Entrada não-string: a assinatura é
string, mas em runtime JSnullexplode em.toLowerCase
Regressão
- Nada a verificar: função nova.
Etapa 2, código
import { describe, expect, it } from 'vitest';
import { slugify } from './slugify.ts';
describe('slugify', () => {
it('minúsculas o texto e troca espaço por hífen', () => {
expect(slugify('Olá Mundo')).toBe('olá-mundo');
});
it('colapsa espaços consecutivos em um único hífen', () => {
expect(slugify('a b')).toBe('a-b');
});
it('devolve vazio para entrada vazia', () => {
expect(slugify('')).toBe('');
});
it('devolve vazio quando a entrada é só espaço', () => {
expect(slugify(' ')).toBe('');
});
it('preserva acentuação', () => {
expect(slugify('Ação Rápida')).toBe('ação-rápida');
});
it('não duplica hífen já presente', () => {
expect(slugify('bem - vindo')).toBe('bem---vindo');
});
});
Etapa 3, sem cobertura
- Entrada
null/undefined: só dá para testar com@ts-expect-error. O teste documentaria um contrato que o tipo já proíbe, sugiro validar na fronteira da API, não aqui. - O último teste revela um provável defeito:
'bem - vindo'produz'bem---vindo', com três hífens. Escrevi o teste com o comportamento atual, não com o desejado. Se a intenção era colapsar, a regex precisa virar/[\s-]+/g. Decida antes de mergear, o teste está fixando o comportamento errado.
How to use
- 1
Copy the template
Use the copy button in the block above. It is 28 lines of instruction.
- 2
Fill in the variables
Swap the 3 highlighted variables for your own content. Leaving them blank degrades the output.
- 3
Pick one of the listed models
Run it on one of the models listed on the side. A smaller model usually degrades the result.
- 4
Paste and run
Or use the lab, with your own key, and compare it against the preview.