Ejemplo n.º 1
0
        public PaginatedMongoModel <T> ToPaginatedModel <T>()
            where T : class, IMongoModel, IDto, new()
        {
            var attr = typeof(TModel).GetCustomAttributes(true).OfType <DataEntityAttribute>().FirstOrDefault();

            var paginatedModel = new PaginatedMongoModel <T>
            {
                ControllerName = (attr != null && !string.IsNullOrEmpty(attr.BaseUriTemplate)) ? attr.BaseUriTemplate.Replace("api/v1/", "") : string.Empty,
                ParentId       = this.ParentId,
                PagingOptions  = new PagingOptions
                {
                    PageIndex       = this.PageIndex,
                    PageSize        = this.PageSize,
                    PageSizes       = (attr != null) ? attr.PageSizes : DataEntityAttribute.DefaultPageSizes,
                    TotalCount      = this.TotalCount,
                    TotalPageCount  = this.TotalPageCount,
                    HasNextPage     = this.HasNextPage,
                    HasPreviousPage = this.HasPreviousPage
                },
                EnablePaging     = true,
                Items            = this.ToList().Select(c => c.CreateInstanceOf <T>()).ToList(),
                FilterOptions    = this.FilterOptions,
                FilterConditions = this.FilterConditions,
                SortOptions      = this.SortOptions
            };

            return(paginatedModel);
        }
Ejemplo n.º 2
0
        public void Delete(int id, int quantidadeEsperada)
        {
            BaseResultModel result = null;
            PaginatedMongoModel <ListaEmpresaMongoModel> listResult = null;

            "Quando solicitado editar empresa com id {0}"
            .x(async() => {
                var user = await service.MongoService.GetMongoObjectByParentId <PessoaMongoModel>(1);
                if (user == null)
                {
                    result = new BaseResultModel {
                        IsValid = false, StatusCode = 404, Message = "Profile não encontrado"
                    };
                }
                else
                {
                    var model = await service.MongoService.GetMongoObjectByParentId <EmpresaClienteMongoModel>(id);
                    result    = await service.DeleteEmpresaBindingModel(new DeleteBindingModel {
                        Id = model.Id
                    });
                }
            });

            "Então o result deve ser válido e o objeto deve ter sido excluído"
            .x(() => {
                Assert.NotNull(result);
                Assert.Equal(result.IsValid, true);
            });

            "Quando novamente solicitado obter todas as empresas"
            .x(async() => {
                var model = new PaginatedRequestCommand {
                    Page = 1, Take = 1000, Type = EnumUtility.GetEnumText(GetTypes.Paged)
                };
                listResult = await service.GetAll <ListaEmpresaMongoModel>(container, model);
            });

            "Então a quantidade de empresas deve ser {1}"
            .x(() => {
                Assert.Equal(listResult.Items.Count(), quantidadeEsperada);

                Reset(true);
            });
        }
Ejemplo n.º 3
0
        public void GetAll(int quantidadeEsperada)
        {
            Reset(true);

            PaginatedMongoModel <ListaEmpresaMongoModel> result = null;

            "Quando solicitado obter todas as empresas"
            .x(async() => {
                var model = new PaginatedRequestCommand {
                    Page = 1, Take = 1000, Type = EnumUtility.GetEnumText(GetTypes.Paged)
                };
                result = await service.GetAll <ListaEmpresaMongoModel>(container, model);
            });

            "Então a quantidade de empresas deve ser {0}"
            .x(() => {
                Assert.Equal(result.Items.Count(), quantidadeEsperada);
            });
        }
Ejemplo n.º 4
0
        public void PostInvalid(int tipo, int quantidadeEsperada)
        {
            PostResultModel result = null;
            PaginatedMongoModel <ListaEmpresaMongoModel> listResult = null;

            "Quando solicitado adicionar empresa com dados inválidos então deve retornar exceção {1}"
            .x(() => {
                Assert.ThrowsAsync <AstoveModelInvalidException <Empresa> >(async() => {
                    var user = await service.MongoService.GetMongoObjectByParentId <PessoaMongoModel>(1);
                    if (user == null)
                    {
                        result = new PostResultModel {
                            IsValid = false, StatusCode = 404, Message = "Profile não encontrado"
                        };
                    }
                    else
                    {
                        var model = await service.GetPostEmpresaBindingModel(new GetPostEmpresaBindingModel {
                            Tipo = tipo
                        });
                        result = await service.PostEmpresaBindingModel(model, user.CreateInstanceOf <ProfileMongoModel>());
                    }
                });
            });

            "Quando novamente solicitado obter todas as empresas"
            .x(async() => {
                var model = new PaginatedRequestCommand {
                    Page = 1, Take = 1000, Type = EnumUtility.GetEnumText(GetTypes.Paged)
                };
                listResult = await service.GetAll <ListaEmpresaMongoModel>(container, model);
            });

            "Então a quantidade de empresas deve ser {6}"
            .x(() => {
                Assert.Equal(listResult.Items.Count(), quantidadeEsperada);
            });
        }
Ejemplo n.º 5
0
        public void Post(int tipo, string nomeFantasia, string cnpj, string cep, int cidadeId, int estadoId, int idOuQuantidadeEsperada)
        {
            PostResultModel result = null;
            PaginatedMongoModel <ListaEmpresaMongoModel> listResult = null;
            BaseResultModel       getResult     = null;
            DropDownStringOptions optionsResult = null;

            "Quando solicitado adicionar empresa do tipo cliente {1}"
            .x(async() => {
                var user = await service.MongoService.GetMongoObjectByParentId <PessoaMongoModel>(1);
                if (user == null)
                {
                    result = new PostResultModel {
                        IsValid = false, StatusCode = 404, Message = "Profile não encontrado"
                    };
                }
                else
                {
                    var model = await service.GetPostEmpresaBindingModel(new GetPostEmpresaBindingModel {
                        Tipo = tipo
                    });
                    model.CNPJ         = cnpj;
                    model.NomeFantasia = nomeFantasia;
                    model.CEP          = cep;
                    model.EstadoId     = estadoId;
                    model.CidadeId     = cidadeId;

                    result = await service.PostEmpresaBindingModel(model, user.CreateInstanceOf <ProfileMongoModel>());
                }
            });

            "Então o result deve ser válido e conter as chaves do novo objeto criado com Id {6}"
            .x(() => {
                Assert.NotNull(result);
                Assert.Equal(result.IsValid, true);
                Assert.Equal(idOuQuantidadeEsperada, int.Parse(result.ParentId));
                Assert.NotNull(result.Id);
            });

            "Quando novamente solicitado obter todas as empresas"
            .x(async() => {
                var model = new PaginatedRequestCommand {
                    Page = 1, Take = 1000, Type = EnumUtility.GetEnumText(GetTypes.Paged)
                };
                listResult = await service.GetAll <ListaEmpresaMongoModel>(container, model);
            });

            "Então a quantidade de empresas deve ser {6}"
            .x(() => {
                Assert.Equal(listResult.Items.Count(), idOuQuantidadeEsperada);
            });

            "Quando for feita uma pesquisa por CNPJ {2}"
            .x(async() => {
                getResult = await service.GetEmpresasByDocumentoAsync(new GetEmpresasByDocumento {
                    CNPJ = cnpj
                });
            });

            "Então o nome fantasia deve ser {1}"
            .x(() => {
                Assert.Equal(getResult.IsValid, true);
                Assert.IsType <PostOrPutResultModel>(getResult);
                var empresaResult = (PostOrPutResultModel)getResult;
                Assert.IsType <PutEmpresaBindingModel>(empresaResult.BindingModel);
                var binding = (PutEmpresaBindingModel)empresaResult.BindingModel;
                Assert.Equal(binding.NomeFantasia, nomeFantasia);
            });

            "Quando for feita uma pesquisa por Id {2}"
            .x(async() => {
                getResult = await service.GetEmpresaByParentIdAsync(new GetBindingModel {
                    Id = result.ParentId
                });
            });

            "Então o nome fantasia deve ser {1}"
            .x(() => {
                Assert.Equal(getResult.IsValid, true);
                Assert.IsType <PostOrPutResultModel>(getResult);
                var empresaResult = (PostOrPutResultModel)getResult;
                Assert.IsType <PutEmpresaBindingModel>(empresaResult.BindingModel);
                var binding = (PutEmpresaBindingModel)empresaResult.BindingModel;
                Assert.Equal(binding.NomeFantasia, nomeFantasia);
            });

            "Quando for feita uma pesquisa por options por tipo de acesso {0}"
            .x(async() => {
                optionsResult = await service.GetEmpresasByTipoAcessoOptions(tipo);
            });

            "Então a lista de opções deve ter {6}-1 itens"
            .x(() => {
                Assert.Equal(optionsResult.Items.Count(), idOuQuantidadeEsperada - 1);
            });
        }