コード例 #1
0
        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)));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }