Exemplo n.º 1
0
        public async Task AvaliarPerfil(Guid perfilId, IDictionary <Guid, double> habilidadesAvaliadas)
        {
            PerfilHabilidades perfil = await Repository.ObterPorIdComHabilidades(perfilId);

            if (perfil is null)
            {
                await Notify("O perfil informado não foi encontrado na base de dados.");
            }

            if (perfil != null)
            {
                IEnumerable <HabilidadeUsuario> habilidadesParaAvaliar = perfil.HabilidadesUsuario
                                                                         .Where(h => habilidadesAvaliadas.Select(h => h.Key).Contains(h.Id));

                foreach (HabilidadeUsuario habilidade in habilidadesParaAvaliar)
                {
                    AvaliacaoHabilidade avaliacao = new AvaliacaoHabilidade(perfil.UsuarioId, habilidadesAvaliadas[habilidade.Id]);
                    habilidade.AdicionarAvaliacaoHabilidade(avaliacao);
                    _habilidadeUsuarioRepository.AdicionarAvaliacaoHabilidade(avaliacao);
                }

                _habilidadeUsuarioRepository.AtualizarHabilidadesUsuario(habilidadesParaAvaliar);
                Repository.AtualizarPerfilHabilidades(perfil);

                await _habilidadeUsuarioRepository.Commit();

                await Repository.Commit();
            }
        }
        public void HabilidadeUsuario_AdicionarAvaliacaoHabilidade_DeveAdicionarUmaAvaliacaoNaHabilidadeDoUsuario()
        {
            //Arrange
            HabilidadeUsuario   habilidadeUsuario = _fixtureWrapper.HabilidadeUsuario.CriarHabilidadeUsuarioValido();
            AvaliacaoHabilidade avaliacao         = _fixtureWrapper.AvaliacaoHabilidade.CriarAvaliacaoHabilidadeValida();

            //Act
            habilidadeUsuario.AdicionarAvaliacaoHabilidade(avaliacao);

            //Assert
            habilidadeUsuario.Avaliacoes.Should().HaveCount(1);
            habilidadeUsuario.Nota.Should().BeGreaterOrEqualTo(0);
            habilidadeUsuario.Nota.Should().Be(avaliacao.Nota);
            habilidadeUsuario.Id.Should().Be(avaliacao.HabilidadeUsuarioId);
        }
        public void HabilidadeUsuario_AdicionarAvaliacoesHabilidade_DeveAdicionarUmaColecaoDeAvaliacoesNaHabilidadeDoUsuario()
        {
            //Arrange
            HabilidadeUsuario habilidadeUsuario          = _fixtureWrapper.HabilidadeUsuario.CriarHabilidadeUsuarioValido();
            IEnumerable <AvaliacaoHabilidade> avaliacoes = new AvaliacaoHabilidade[]
            {
                _fixtureWrapper.AvaliacaoHabilidade.CriarAvaliacaoHabilidadeValida(),
                                              _fixtureWrapper.AvaliacaoHabilidade.CriarAvaliacaoHabilidadeValida(),
                                              _fixtureWrapper.AvaliacaoHabilidade.CriarAvaliacaoHabilidadeValida()
            };

            //Act
            habilidadeUsuario.AdicionarAvaliacoesHabilidade(avaliacoes);

            //Assert
            habilidadeUsuario.Avaliacoes.Should().HaveCount(3);
            habilidadeUsuario.Nota.Should().BeGreaterOrEqualTo(0);
            habilidadeUsuario.Nota.Should().Be(avaliacoes.Average(a => a.Nota));
            habilidadeUsuario.Id.Should().Be(avaliacoes.Select(s => s.HabilidadeUsuarioId).Distinct().Single());
        }
 public void AdicionarAvaliacaoHabilidade(AvaliacaoHabilidade avaliacaoHabilidade)
 {
     _context.AvaliacoesHabilidade.Add(avaliacaoHabilidade);
 }