public void PerfilServices_AdicionarNovoEsporte_DeveAdicionarNovoEsporte()
        {
            //Arrange
            IPerfilServices   perfilServices = _perfilService;
            Guid              perfilId       = Guid.NewGuid();
            Guid              esporteId      = Guid.NewGuid();
            PerfilHabilidades perfil         = new PerfilHabilidades(Guid.NewGuid());
            Esporte           esporte        = new Futebol();

            _fixtureWrapper.Mocker.GetMock <IPerfilHabilidadesRepository>().Setup(r => r.ObterPorId(perfilId))
            .ReturnsAsync(perfil);

            _fixtureWrapper.Mocker.GetMock <IEsporteRepository>().Setup(r => r.ObterEsporteComHabilidadesPorId(esporteId))
            .ReturnsAsync(esporte);

            //Act
            perfilServices.AdicionarNovoEsporte(perfilId, esporteId);

            //Assert
            perfil.HabilidadesUsuario.Should().HaveCount(esporte.Habilidades.Count);

            perfil.EsportesUsuario.Should().HaveFlag(TipoEsporte.Futebol);

            _fixtureWrapper.Mocker.GetMock <IHabilidadeUsuarioRepository>()
            .Verify(x => x.AdicionarHabilidadesUsuario(It.IsAny <IList <HabilidadeUsuario> >()), Times.Once);

            _fixtureWrapper.Mocker.GetMock <IPerfilHabilidadesRepository>()
            .Verify(x => x.AtualizarPerfilHabilidades(perfil), Times.Once);

            _fixtureWrapper.Mocker.GetMock <IHabilidadeUsuarioRepository>()
            .Verify(x => x.Commit(), Times.Once);

            _fixtureWrapper.Mocker.GetMock <IPerfilHabilidadesRepository>()
            .Verify(x => x.Commit(), Times.Once);
        }
        public async Task <ValidationResult> Handle(VincularEsportePerfilHabilidadesCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                return(message.ValidationResult);
            }

            await _perfilServices.AdicionarNovoEsporte(message.PerfilHabilidadesId, message.EsporteId);

            return(await PublishEvents(new EsporteVinculadoPerfilHabilidadesEvent(message.PerfilHabilidadesId, message.EsporteId)));
        }
        public void PerfilServices_AdicionarNovoEsporte_NaoDeveAdicionarNovoEsporteEDeveNotificar()
        {
            //Arrange
            IPerfilServices perfilServices = _perfilService;

            //Act
            perfilServices.AdicionarNovoEsporte(Guid.NewGuid(), Guid.NewGuid());

            //Assert
            _fixtureWrapper.Mocker.GetMock <IMediatrHandler>()
            .Verify(x => x.Notify(It.IsAny <DomainNotification>()), Times.Exactly(2));
        }