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
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)
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.).
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.
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
ImportRegistrationCommand em 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.
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
ImportRegistrationCommandPara permitir que a auditoria de e-mails seja registrada no banco de dados, fornecendo comprovação e rastreabilidade dos comunicados enviados aos proponentes.
Escopo
ImportRegistrationCommandonde o e-mail para o proponente é disparado.EmailSentEventou similar) após a confirmação do envio do e-mail.Fora de Escopo
ImportRegistrationCommand.Critérios de Aceitação (Gherkin/Cucumber)
Dado que a classe
ImportRegistrationCommandestá em execuçãoE 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.).
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.
Dado que um teste unitário está sendo executado contra a classe
ImportRegistrationCommandQuando 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
ImportRegistrationCommandem caso de falha na gravação da auditoria.Event::fake()no Laravel/Lumen, se aplicável) para garantir a cobertura do teste unitário do disparo do evento.