public async Task <ValidationResult> Handle(RemoverMembroGrupoCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { return(message.ValidationResult); } Grupo grupo = await _repository.ObterGrupoPorId(message.GrupoId); if (grupo is null) { return(await NotifyAndReturn("Grupo não encontrado.")); } Membro membro = await _repository.ObterMembroPorId(message.MembroId); if (membro is null) { return(await NotifyAndReturn("Membro não encontrado.")); } grupo.RemoverMembro(membro); _repository.ExcluirMembro(membro); _repository.AtualizarGrupo(grupo); return(await SaveAndPublish(new MembroRemovidoGrupoEvent(membro.Id, membro.UsuarioId, membro.GrupoId))); }
public async Task GrupoCommandHandler_Handle_RemoverMembroGrupoCommand_NaoDeveRemoverMembroDoGrupo() { //Arrange RemoverMembroGrupoCommand removerMembroGrupoCommand = _applicationFixtures.GrupoCommandHandler.CriarRemoverMembroGrupoCommandValido(); //Act await _grupoCommandHandler.Handle(removerMembroGrupoCommand, ApplicationFixtures.CancellationToken); //Arrange _applicationFixtures.Mocker.Verify <IMediatrHandler>(m => m.Notify(It.IsAny <DomainNotification>()), Times.AtLeastOnce); }
public async Task GrupoCommandHandler_Handle_RemoverMembroGrupoCommand_DeveRemoverMembroDoGrupo() { //Arrange RemoverMembroGrupoCommand removerMembroGrupoCommand = _applicationFixtures.GrupoCommandHandler.CriarRemoverMembroGrupoCommandValido(); Membro membro = _domainFixtures.Membro.CriarMembroValido(); Grupo grupo = _domainFixtures.Grupo.CriarGrupoValido(); Mock <IGrupoRepository> grupoRepositoryMock = _applicationFixtures.Mocker.GetMock <IGrupoRepository>(); grupoRepositoryMock.Setup(r => r.ObterMembroPorId(removerMembroGrupoCommand.MembroId)).ReturnsAsync(membro); grupoRepositoryMock.Setup(r => r.ObterGrupoPorId(removerMembroGrupoCommand.GrupoId)).ReturnsAsync(grupo); grupoRepositoryMock.Setup(r => r.Commit()).ReturnsAsync(true); grupo.AdicionarMembro(membro); //Act await _grupoCommandHandler.Handle(removerMembroGrupoCommand, ApplicationFixtures.CancellationToken); //Assert grupo.Membros.Should().BeEmpty(); _applicationFixtures.Mocker.Verify <IGrupoRepository>(r => r.ExcluirMembro(membro), Times.Once); _applicationFixtures.Mocker.Verify <IGrupoRepository>(r => r.AtualizarGrupo(grupo), Times.Once); _applicationFixtures.Mocker.Verify <IMediatrHandler>(m => m.Publish(It.IsAny <Event>()), Times.Once); }