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); }
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); }); }
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); }); }
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); }); }
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); }); }