示例#1
0
        public async Task BuscarPorId_OK()
        {
            var options = OptionsContext();

            var id = Guid.NewGuid();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                var entidadeExistente = new EntidadeParaTeste
                {
                    Id               = id,
                    DataAlteracao    = DateTimeOffset.Now,
                    DataCriacao      = DateTimeOffset.Now,
                    Excluido         = false,
                    PropriedadeTeste = "valor-atual"
                };
                await contexto.AddAsync(entidadeExistente);

                await contexto.SaveChangesAsync();

                //Executar
                var resultado = await servicoEmTeste.BuscarPorId(id);

                //Verifica
                resultado.Should().BeEquivalentTo(new PersistenciaModelParaTeste
                {
                    Id = id,
                    PropriedadeTeste = "valor-atual"
                });
            }
        }
示例#2
0
 public void CriacaoServico_OK()
 {
     using (var contexto = new ContextoParaTeste(OptionsContext()))
     {
         var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());
     }
 }
示例#3
0
        public async Task AlterarEntidadeInvalida_GeraException()
        {
            var options = OptionsContext();

            var id = Guid.NewGuid();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                var entidadeExistente = new EntidadeParaTeste
                {
                    Id               = id,
                    DataCriacao      = DateTimeOffset.Now,
                    PropriedadeTeste = "valor-existente"
                };
                await contexto.AddAsync(entidadeExistente);

                await contexto.SaveChangesAsync();

                //Executar
                var modelalterado = new PersistenciaModelParaTeste
                {
                    Id = id
                };

                Func <Task> act = async() => { await servicoEmTeste.Alterar(modelalterado); };
                act.Should().Throw <ValidacaoPersistenciaException>()
                .WithMessage("Entidade inválida")
                .And.Erros.Should().BeEquivalentTo(new[] {
                    new ErroValidacaoPropriedade("PropriedadeTeste", new [] { "propriedade obrigatória" })
                });
            }
        }
示例#4
0
        public async Task Buscar_ComFiltro_OK()
        {
            //Retorna somente os filtrados
            var options = OptionsContext();

            var ids = new[] {
                Guid.NewGuid(),
                Guid.NewGuid(),
                Guid.NewGuid(),
            };

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                var entidadesExistentes = new[] {
                    new EntidadeParaTeste {
                        Id               = ids[0],
                        DataAlteracao    = DateTimeOffset.Now,
                        DataCriacao      = DateTimeOffset.Now,
                        Excluido         = false,
                        PropriedadeTeste = "valor-atual-1"
                    },
                    new EntidadeParaTeste {
                        Id               = ids[1],
                        DataAlteracao    = DateTimeOffset.Now,
                        DataCriacao      = DateTimeOffset.Now,
                        Excluido         = false,
                        PropriedadeTeste = "valor-atual-2"
                    },
                    new EntidadeParaTeste {
                        Id               = ids[2],
                        DataAlteracao    = DateTimeOffset.Now,
                        DataCriacao      = DateTimeOffset.Now,
                        Excluido         = false,
                        PropriedadeTeste = "valor-atual-3"
                    },
                };
                await contexto.AddRangeAsync(entidadesExistentes);

                await contexto.SaveChangesAsync();

                //Executar
                var resultado = await servicoEmTeste.Buscar("valor-atual-2");

                //Verifica
                resultado.Should().BeEquivalentTo(new[] {
                    new PersistenciaModelParaTeste
                    {
                        Id = ids[1],
                        PropriedadeTeste = "valor-atual-2"
                    },
                });
            }
        }
示例#5
0
        public async Task AlterarEntidade_OK()
        {
            var options = OptionsContext();

            var id = Guid.NewGuid();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                var entidadeExistente = new EntidadeParaTeste
                {
                    Id               = id,
                    DataCriacao      = DateTimeOffset.Now,
                    PropriedadeTeste = "valor-existente"
                };
                await contexto.AddAsync(entidadeExistente);

                await contexto.SaveChangesAsync();

                //Executar
                var modelalterado = new PersistenciaModelParaTeste
                {
                    Id = id,
                    PropriedadeTeste = "valor-alterado"
                };
                var res = await servicoEmTeste.Alterar(modelalterado);

                res.Should().NotBeNull();
                res.Id.Should().Be(id);
                res.PropriedadeTeste.Should().Be("valor-alterado");
            }

            using (var contextoVerificacao = new ContextoParaTeste(options))
            {
                //Verificar
                var entidades = contextoVerificacao.Entidades.ToList();
                entidades.Should().HaveCount(1);

                var entidade = entidades.FirstOrDefault();
                entidade.Id.Should().Be(id);
                entidade.DataAlteracao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.DataCriacao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.Excluido.Should().BeFalse();
                entidade.PropriedadeTeste.Should().Be("valor-alterado");
            }
        }
示例#6
0
        public void BuscarPorId_EntidadeNaoExiste_GeraException()
        {
            var options = OptionsContext();

            var id = Guid.NewGuid();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                //Executar
                Func <Task> act = async() => { await servicoEmTeste.BuscarPorId(id); };
                act.Should().Throw <EntidadeNaoExisteException>()
                .WithMessage("Entidade não encontrada");
            }
        }
示例#7
0
        public void CriarEntidadeInvalida_GeraException()
        {
            var options = OptionsContext();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                //Executar
                var novomodel = new PersistenciaModelParaTeste();

                Func <Task> act = async() => { await servicoEmTeste.Criar(novomodel); };
                act.Should().Throw <ValidacaoPersistenciaException>()
                .WithMessage("Entidade inválida")
                .And.Erros.Should().BeEquivalentTo(new[] {
                    new ErroValidacaoPropriedade("PropriedadeTeste", new [] { "propriedade obrigatória" })
                });
            }
        }
示例#8
0
        public void AlterarEntidadeNaoExistente_GeraException()
        {
            var options = OptionsContext();

            var id = Guid.NewGuid();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                //Executar
                var modelalterado = new PersistenciaModelParaTeste
                {
                    Id = id,
                    PropriedadeTeste = "valor-alterado"
                };

                Func <Task> act = async() => { await servicoEmTeste.Alterar(modelalterado); };
                act.Should().Throw <EntidadeNaoExisteException>()
                .WithMessage("Entidade não encontrada");
            }
        }
示例#9
0
        public async Task CriarSemPersistirEntidade_OK()
        {
            var options = OptionsContext();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                //Executar
                var novomodel = new PersistenciaModelParaTeste
                {
                    PropriedadeTeste = "novo-valor"
                };
                await servicoEmTeste.Criar(novomodel, false);
            }

            using (var contextoVerificacao = new ContextoParaTeste(options))
            {
                //Verificar
                var entidades = contextoVerificacao.Entidades.ToList();
                entidades.Should().BeEmpty();
            }
        }
示例#10
0
        public async Task CriarEntidade_OK()
        {
            var options = OptionsContext();

            using (var contexto = new ContextoParaTeste(options))
            {
                //Preparar
                var servicoEmTeste = new ServicoEmTeste(contexto, BuscaMapper());

                //Executar
                var novomodel = new PersistenciaModelParaTeste
                {
                    PropriedadeTeste = "novo-valor"
                };
                var res = await servicoEmTeste.Criar(novomodel);

                res.Should().NotBeNull();
                res.Id.Should().NotBeEmpty();
                res.PropriedadeTeste.Should().Be("novo-valor");
            }

            using (var contextoVerificacao = new ContextoParaTeste(options))
            {
                //Verificar
                var entidades = await contextoVerificacao.Entidades.ToListAsync();

                entidades.Should().HaveCount(1);

                var entidade = entidades.FirstOrDefault();
                entidade.Id.Should().NotBeEmpty();
                entidade.DataAlteracao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.DataCriacao.Should().BeCloseTo(DateTimeOffset.Now, intervaloDatas);
                entidade.Excluido.Should().BeFalse();
                entidade.PropriedadeTeste.Should().Be("novo-valor");
            }
        }
示例#11
0
 public ServicoEmTeste(ContextoParaTeste ctx, IMapper mapeador) : base(ctx, mapeador)
 {
 }