Skip to content

Adicionar evento de disparar email na classe ImportRegistrationCommand #42

@Junior-Shyko

Description

@Junior-Shyko

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 ImportRegistrationCommand onde o e-mail para o proponente é disparado.
  • Implementar o disparo de um novo evento customizado (ex: EmailSentEvent ou 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 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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestphpPull requests that update php code

Projects

Status

Code review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions