-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Contexto
A classe ImportRegistrationCommand é responsável por disparar e-mails para os proponentes do Mapa Cultural durante o processo de importação/registro. Atualmente, o serviço de e-mail não registra no banco de dados uma auditoria detalhada de cada e-mail enviado. É crucial implementar um mecanismo de evento para gravar essa comprovação de envio (auditoria) para todos os proponentes afetados, garantindo rastreabilidade e segurança.
Objetivo
Como um Programador (Dev)
Quero implementar o disparo de um evento específico após o envio bem-sucedido de e-mail dentro da classe ImportRegistrationCommand
Para permitir que a auditoria de e-mails seja registrada no banco de dados, fornecendo comprovação e rastreabilidade dos comunicados enviados aos proponentes.
Escopo
- Identificar o ponto exato dentro da classe
ImportRegistrationCommandonde o e-mail para o proponente é disparado. - Implementar o disparo de um novo evento customizado (ex:
EmailSentEventou similar) após a confirmação do envio do e-mail. - O evento disparado deve conter informações essenciais para a auditoria (ex: ID do proponente, tipo de e-mail, timestamp).
- Garantir que o Listener correspondente para o evento seja configurado para gravar a auditoria no banco de dados.
Fora de Escopo
- Desenvolvimento de uma nova tabela ou modelo de banco de dados para armazenar a auditoria (assumimos que o Listener utilizará uma estrutura de dados existente ou a ser criada em outra issue).
- Refatoração de outras funcionalidades da classe
ImportRegistrationCommand. - Implementação da lógica de reenvio de e-mail.
Critérios de Aceitação (Gherkin/Cucumber)
- 1. Disparo de Evento em Caso de Sucesso
Dado que a classe ImportRegistrationCommand está em execução
E o processo de envio de e-mail para um proponente é concluído com sucesso
Quando a linha de código subsequente é alcançada
Então o evento de auditoria de e-mail deve ser disparado
E o evento deve carregar os dados necessários para o registro (ID do proponente, etc.).
- 2. Gravação da Auditoria (Comportamento do Listener)
Dado que o evento de auditoria de e-mail foi disparado
Quando o Listener configurado para este evento é acionado
Então um novo registro de auditoria deve ser criado no banco de dados
E este registro deve refletir o proponente e o timestamp do envio.
- 3. Teste Unitário da Implementação do Evento
Dado que um teste unitário está sendo executado contra a classe ImportRegistrationCommand
Quando o método de envio de e-mail simulado é chamado
Então o teste deve verificar se o evento de auditoria de e-mail foi disparado corretamente
E os dados passados ao evento devem ser validados.
Observações
- A implementação do Listener deve ser robusta para não interromper o fluxo principal do
ImportRegistrationCommandem caso de falha na gravação da auditoria. - Utilizar os helpers de teste da framework (ex:
Event::fake()no Laravel/Lumen, se aplicável) para garantir a cobertura do teste unitário do disparo do evento.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status