public void QuandoConsultaCotacaoDeFornecedoresQueNaoInformaramCotacaoRetornaDadosEsperados() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComFornecedor(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); FornecedorParticipante fornecedorParticipante = processo.FornecedoresParticipantes.Single(); Fornecedor fornecedor = fornecedorParticipante.Fornecedor; var consulta = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeFrete>(); IList <CotacaoSelecionarVm> cotacoes = consulta.CotacoesDosFornecedores(processo.Id); Assert.AreEqual(1, cotacoes.Count); var cotacaoSelecionarVm = cotacoes.Single(); Assert.AreEqual(fornecedor.Cnpj, cotacaoSelecionarVm.Cnpj); Assert.AreEqual(fornecedor.Nome, cotacaoSelecionarVm.Fornecedor); Assert.AreEqual(fornecedor.Codigo, cotacaoSelecionarVm.CodigoFornecedor); Assert.AreEqual(0, cotacaoSelecionarVm.IdCotacao); Assert.AreEqual(0, cotacaoSelecionarVm.IdProcessoCotacaoItem); Assert.IsFalse(cotacaoSelecionarVm.Selecionada); Assert.IsNull(cotacaoSelecionarVm.QuantidadeAdquirida); Assert.IsNull(cotacaoSelecionarVm.QuantidadeDisponivel); Assert.IsNull(cotacaoSelecionarVm.ValorComImpostos); Assert.IsNull(cotacaoSelecionarVm.ObservacaoDoFornecedor); }
public void QuandoCrioUmProcessoDeCotacaoDeFreteAsPropriedadesFicamCorretas() { Produto produto = DefaultObjects.ObtemProdutoPadrao(); UnidadeDeMedida unidadeDeMedida = DefaultObjects.ObtemUnidadeDeMedidaPadrao(); Itinerario itinerario = DefaultObjects.ObtemItinerarioPadrao(); var dataLimiteDeRetorno = DateTime.Today.AddDays(10); var dataValidadeInicial = DateTime.Today.AddMonths(1); var dataValidadeFinal = DateTime.Today.AddMonths(2); var processo = new ProcessoDeCotacaoDeFrete("Requisitos do Processo de Cotação de Fretes", "10001", dataLimiteDeRetorno, dataValidadeInicial, dataValidadeFinal, itinerario); processo.AdicionarItem(produto, 100, unidadeDeMedida); var item = processo.Itens.First(); //Assert.AreSame(produto, processo.Produto); //Assert.AreEqual(100, processo.Quantidade); //Assert.AreSame(unidadeDeMedida, processo.UnidadeDeMedida); Assert.AreSame(produto, item.Produto); Assert.AreEqual(100, item.Quantidade); Assert.AreSame(unidadeDeMedida, item.UnidadeDeMedida); Assert.AreEqual("Requisitos do Processo de Cotação de Fretes", processo.Requisitos); Assert.AreEqual("10001", processo.NumeroDoContrato); Assert.AreEqual(dataLimiteDeRetorno, processo.DataLimiteDeRetorno); Assert.AreEqual(dataValidadeInicial, processo.DataDeValidadeInicial); Assert.AreEqual(dataValidadeFinal, processo.DataDeValidadeFinal); Assert.AreSame(itinerario, processo.Itinerario); }
public void QuandoTentarAbrirUmProcessoDeCotacaoQueJaEstaAbertoDeveGerarExcecao() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComFornecedor(); processoDeCotacao.Abrir(DefaultObjects.ObtemUsuarioPadrao()); processoDeCotacao.Abrir(DefaultObjects.ObtemUsuarioPadrao()); }
public void QuandoAtualizoUmaCotacaoDeFreteAsPropriedadesSaoAlteradas() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); Produto produto = DefaultObjects.ObtemProdutoPadrao(); UnidadeDeMedida unidadeDeMedida = DefaultObjects.ObtemUnidadeDeMedidaPadrao(); Itinerario itinerario = DefaultObjects.ObtemItinerarioPadrao(); var dataLimiteDeRetorno = DateTime.Today.AddDays(15); var dataValidadeInicial = DateTime.Today.AddMonths(2); var dataValidadeFinal = DateTime.Today.AddMonths(3); processo.Atualizar("requisitos alterados", "1500", dataLimiteDeRetorno, dataValidadeInicial, dataValidadeFinal, itinerario); processo.AtualizarItem(produto, 1500, unidadeDeMedida); var item = processo.Itens.First(); //Assert.AreSame(produto, processo.Produto); //Assert.AreEqual(1500, processo.Quantidade); //Assert.AreSame(unidadeDeMedida, processo.UnidadeDeMedida); Assert.AreSame(produto, item.Produto); Assert.AreEqual(1500, item.Quantidade); Assert.AreSame(unidadeDeMedida, item.UnidadeDeMedida); Assert.AreEqual("requisitos alterados", processo.Requisitos); Assert.AreEqual("1500", processo.NumeroDoContrato); Assert.AreEqual(dataLimiteDeRetorno, processo.DataLimiteDeRetorno); Assert.AreEqual(dataValidadeInicial, processo.DataDeValidadeInicial); Assert.AreEqual(dataValidadeFinal, processo.DataDeValidadeFinal); Assert.AreSame(itinerario, processo.Itinerario); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteFechado() { ProcessoDeCotacaoDeFrete processoDeCotacao = ObtemProcessoDeCotacaoDeFreteComCotacaoSelecionada(); processoDeCotacao.Fechar(); return(processoDeCotacao); }
public void QuandoFornecedorNaoPreencheuACotacaoNaoEnviaEmailAoFecharProcessoDeCotacao() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComFornecedor(); _geradorDeEmail.GerarEmail(processoDeCotacao); _emailServiceMock.Verify(x => x.Enviar(It.IsAny <string>(), It.IsAny <MensagemDeEmail>()), Times.Never()); }
public void QuandoConsultaCotacaoResumidaAntesDoFornecedorInformarCotacaoRetornaObjetoEsperado() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); Fornecedor fornecedor = DefaultObjects.ObtemFornecedorPadrao(); FornecedorParticipante fornecedorParticipante = processoDeCotacao.AdicionarFornecedor(fornecedor); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processoDeCotacao); UnitOfWorkNh.Session.Clear(); var consultaProcesso = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeMaterial>(); KendoGridVm kendoGridVm = consultaProcesso.CotacoesDosFornecedoresResumido(processoDeCotacao.Id); Assert.AreEqual(1, kendoGridVm.QuantidadeDeRegistros); var processoCotacaoFornecedorVm = (ProcessoCotacaoFornecedorVm)kendoGridVm.Registros.First(); Assert.AreEqual(fornecedorParticipante.Id, processoCotacaoFornecedorVm.IdFornecedorParticipante); Assert.AreEqual(fornecedor.Codigo, processoCotacaoFornecedorVm.Codigo); Assert.AreEqual(fornecedor.Nome, processoCotacaoFornecedorVm.Nome); Assert.AreEqual("Não", processoCotacaoFornecedorVm.Selecionado); Assert.IsNull(processoCotacaoFornecedorVm.ValorLiquido); Assert.IsNull(processoCotacaoFornecedorVm.ValorComImpostos); Assert.IsNull(processoCotacaoFornecedorVm.QuantidadeDisponivel); Assert.AreEqual("Não", processoCotacaoFornecedorVm.VisualizadoPeloFornecedor); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteComFornecedor() { ProcessoDeCotacaoDeFrete processoDeCotacao = ObtemProcessoDeCotacaoDeFrete(); processoDeCotacao.AdicionarFornecedor(ObtemFornecedorPadrao()); processoDeCotacao.Abrir(ObtemUsuarioPadrao()); return(processoDeCotacao); }
public void QuandoCotacaoNaoForSelecionadaEnviaEmailDeeCotacaoNaoSelecionada() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCotacaoNaoSelecionada(); _geradorDeEmail.GerarEmail(processoDeCotacao); _emailServiceMock.Verify(x => x.Enviar(It.IsAny <string>(), It.IsAny <MensagemDeEmail>()), Times.Once()); _geradorDeMensagemDeEmailMock.Verify(x => x.FornecedoresNaoSelecionadosNoProcessoDeCotacao(It.IsAny <Cotacao>()), Times.Once()); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteComCotacaoSelecionada() { ProcessoDeCotacaoDeFrete processoDeCotacao = ObtemProcessoDeCotacaoDeFreteComCotacaoNaoSelecionada(); var cotacaoItem = (CotacaoFreteItem)processoDeCotacao.FornecedoresParticipantes.First().Cotacao.Itens.First(); cotacaoItem.Selecionar(9); return(processoDeCotacao); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteComProdutoEspecifico(Produto produto) { var processo = new ProcessoDeCotacaoDeFrete("Requisitos do Processo de Cotação de Frete", "1000", DateTime.Today.AddDays(10), DateTime.Today.AddMonths(1), DateTime.Today.AddMonths(2), ObtemItinerarioPadrao()); processo.AdicionarItem(produto, 100, ObtemUnidadeDeMedidaPadrao()); return(processo); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteSemNumeroDeContrato() { var processo = new ProcessoDeCotacaoDeFrete("Requisitos do Processo de Cotação de Frete", null, DateTime.Today.AddDays(10), DateTime.Today.AddMonths(1), DateTime.Today.AddMonths(2), ObtemItinerarioPadrao()); processo.AdicionarItem(ObtemProdutoPadrao(), 100, ObtemUnidadeDeMedidaPadrao()); return(processo); }
public void AposOProcessoDeCotacaoSerAbertoNaoEPossivelAtualizarOsDadosComplementares() { ProcessoDeCotacaoDeFrete processoDeCotacaoDeFrete = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); processoDeCotacaoDeFrete.AdicionarFornecedor(DefaultObjects.ObtemFornecedorPadrao()); processoDeCotacaoDeFrete.Abrir(DefaultObjects.ObtemUsuarioPadrao()); processoDeCotacaoDeFrete.Atualizar("requisitos alterados", "1500", processoDeCotacaoDeFrete.DataLimiteDeRetorno.Value, processoDeCotacaoDeFrete.DataDeValidadeInicial, processoDeCotacaoDeFrete.DataDeValidadeFinal, processoDeCotacaoDeFrete.Itinerario); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteComCotacaoNaoSelecionada() { ProcessoDeCotacaoDeFrete processoDeCotacao = ObtemProcessoDeCotacaoDeFrete(); Fornecedor fornecedor = ObtemFornecedorPadrao(); processoDeCotacao.AdicionarFornecedor(fornecedor); processoDeCotacao.Abrir(ObtemUsuarioPadrao()); processoDeCotacao.InformarCotacao(fornecedor.Codigo, 100, 10, "teste"); return(processoDeCotacao); }
public void ConsigoConsultarOsDadosDeUmProcesso() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); var consulta = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeFrete>(); ProcessoCotacaoFreteCadastroVm viewModel = consulta.ConsultaProcesso(processo.Id); Assert.IsNotNull(viewModel); }
public static ProcessoDeCotacaoDeFrete ObtemProcessoDeCotacaoDeFreteComCadastrosExistentes() { var produto = new Produto("000000000000000007", "BORRA NEUTRALIZADA DE SOJA", "FERT"); var unidadeDeMedida = new UnidadeDeMedida("TON", "TON", "Toneladas"); var itinerario = new Itinerario("010330", "RS Rio Grande -> BA Formosa Do Rio Preto"); var processo = new ProcessoDeCotacaoDeFrete("Requisitos do Processo de Cotação de Frete", null, DateTime.Today.AddDays(10), DateTime.Today.AddMonths(1), DateTime.Today.AddMonths(2), itinerario); processo.AdicionarItem(produto, 100, unidadeDeMedida); return(processo); }
public void ConsigoPersistirUmProcessoDeCotacaoDeFreteEConsultarPosteriormente() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); UnitOfWorkNh.Session.Clear(); var processosDeCotacao = ObjectFactory.GetInstance <IProcessosDeCotacao>(); ProcessoDeCotacao processoConsultado = processosDeCotacao.BuscaPorId(processo.Id).Single(); Assert.IsNotNull(processoConsultado); Assert.AreEqual(1, processoConsultado.Itens.Count); }
public ProcessoDeCotacaoDeFrete CriarProcesso(string requisitos, string numeroDoContrato, DateTime dataLimiteDeRetorno, DateTime dataDeValidadeInicial, DateTime dataDeValidadeFinal, Itinerario itinerario) { var processoDeCotacao = new ProcessoDeCotacaoDeFrete(requisitos, numeroDoContrato, dataLimiteDeRetorno, dataDeValidadeInicial, dataDeValidadeFinal, itinerario); if (_itens.Count == 0) { throw new ProcessoDeCotacaoSemItemException(); } foreach (var item in _itens) { processoDeCotacao.AdicionarItem(item.Produto, item.Quantidade, item.UnidadeDeMedida); } return(processoDeCotacao); }
public static void PersistirProcessoDeCotacaoDeFrete(ProcessoDeCotacaoDeFrete processo) { try { bool controlarTransacao = !Session.Transaction.IsActive; if (controlarTransacao) { Session.BeginTransaction(); } if (processo.Comprador != null) { PersistirUsuario(processo.Comprador); } foreach (var fornecedorParticipante in processo.FornecedoresParticipantes) { PersistirFornecedor(fornecedorParticipante.Fornecedor); } var unidadesDeMedida = processo.Itens.Select(x => x.UnidadeDeMedida).Distinct(); foreach (var unidadeDeMedida in unidadesDeMedida) { PersistirUnidadeDeMedida(unidadeDeMedida); } PersistirItinerario(processo.Itinerario); var produtos = processo.Itens.Select(x => x.Produto).Distinct(); foreach (var produto in produtos) { PersistirProduto(produto); } Session.Save(processo); if (controlarTransacao) { Session.Transaction.Commit(); } } catch (Exception) { RollbackSessionTransaction(); throw; } }
public void RepositorioDoProcessoDeCotacaoDeMateriasContemApenasProcessosDeCotacaoDeMaterial() { RemoveQueries.RemoverProcessosDeCotacaoCadastrados(); //crio dois processos de cotação (um de frete e um de materiais) e persisto ProcessoDeCotacaoDeMaterial processoDeCotacaoDeMaterial = DefaultObjects.ObtemProcessoDeCotacaoDeMaterialNaoIniciado(); ProcessoDeCotacaoDeFrete processoDeCotacaoDeFrete = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeMaterial(processoDeCotacaoDeMaterial); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processoDeCotacaoDeFrete); //listo todos os processsos do repositório: deve retornar apenas o processo de cotação de material var processosDeCotacaoDeMaterias = ObjectFactory.GetInstance <IProcessosDeCotacaoDeMaterial>(); var todosProcessos = processosDeCotacaoDeMaterias.List(); Assert.AreEqual(1, todosProcessos.Count); Assert.IsInstanceOfType(todosProcessos.Single(), typeof(ProcessoDeCotacaoDeMaterial)); }
public void ConsigoEnviarMensagemDeFechamentoDoProcessoDeCotacaoDeFreteUtilizandoServico() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCadastrosExistentes(); var fornecedor = new Fornecedor("0000101815", "AIRGAS COM E TRANSP LTDA", "*****@*****.**", "", "Passo Fundo", "RS", true); processo.AdicionarFornecedor(fornecedor); processo.Abrir(DefaultObjects.ObtemUsuarioPadrao()); CotacaoFrete cotacaoFrete = processo.InformarCotacao(fornecedor.Codigo, 100, 110, "obs"); processo.SelecionarCotacao(cotacaoFrete.Id, 50); var comunicacaoSap = ObjectFactory.GetInstance <IComunicacaoSap <ListaProcessoDeCotacaoDeFreteFechamento> >(); //var credencialSap = ObjectFactory.GetInstance<CredencialSap>(); var comunicaoFechamento = new ComunicacaoFechamentoProcessoCotacaoFrete(comunicacaoSap); ApiResponseMessage mensagem = comunicaoFechamento.EfetuarComunicacao(processo); Assert.AreEqual("S", mensagem.Retorno.Codigo); }
public void FiltrarUmProcessoDeCotacaoPorDescricaoDoProdutoRetornaProcessoEsperado() { RemoveQueries.RemoverProcessosDeCotacaoCadastrados(); Produto produto1 = DefaultObjects.ObtemProdutoPadrao(); ProcessoDeCotacaoDeFrete processoDeCotacao1 = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComProdutoEspecifico(produto1); Produto produto2 = DefaultObjects.ObtemProdutoPadrao(); ProcessoDeCotacaoDeFrete processoDeCotacao2 = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComProdutoEspecifico(produto2); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processoDeCotacao1); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processoDeCotacao2); UnitOfWorkNh.Session.Clear(); var processosDeCotacao = ObjectFactory.GetInstance <IProcessosDeCotacao>(); IList <ProcessoDeCotacao> processosConsultados = processosDeCotacao.DescricaoDoProdutoContendo(produto2.Descricao).List(); Assert.AreEqual(1, processosConsultados.Count()); Assert.AreEqual(produto2.Descricao, processosConsultados.First().Itens.First().Produto.Descricao); }
public void QuandoConsultaCotacaoResumidaAposFornecedorInformarCotacaoRetornaObjetoEsperado() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCotacaoSelecionada(); FornecedorParticipante fornecedorParticipante = processoDeCotacao.FornecedoresParticipantes.First(); Fornecedor fornecedor = fornecedorParticipante.Fornecedor; DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processoDeCotacao); var consultaProcesso = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeMaterial>(); KendoGridVm kendoGridVm = consultaProcesso.CotacoesDosFornecedoresResumido(processoDeCotacao.Id); Assert.AreEqual(1, kendoGridVm.QuantidadeDeRegistros); var processoCotacaoFornecedorVm = (ProcessoCotacaoFornecedorVm)kendoGridVm.Registros.First(); Assert.AreEqual(fornecedorParticipante.Id, processoCotacaoFornecedorVm.IdFornecedorParticipante); Assert.AreEqual(fornecedor.Codigo, processoCotacaoFornecedorVm.Codigo); Assert.AreEqual(fornecedor.Nome, processoCotacaoFornecedorVm.Nome); Assert.AreEqual("Sim", processoCotacaoFornecedorVm.Selecionado); Assert.AreEqual("Não", processoCotacaoFornecedorVm.VisualizadoPeloFornecedor); }
public void ConsigoConsultarCotacaoResumidaDosFornecedoresDeUmProcessoDeCotacaoDeFrete() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFreteComCotacaoNaoSelecionada(); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); FornecedorParticipante fornecedorParticipante = processo.FornecedoresParticipantes.Single(); Fornecedor fornecedor = fornecedorParticipante.Fornecedor; CotacaoItem cotacaoItem = fornecedorParticipante.Cotacao.Itens.Single(); var consulta = ObjectFactory.GetInstance <IConsultaProcessoDeCotacaoDeFrete>(); KendoGridVm kendoGridVm = consulta.CotacoesDosFornecedoresResumido(processo.Id); Assert.AreEqual(1, kendoGridVm.QuantidadeDeRegistros); ProcessoCotacaoFornecedorVm vm = kendoGridVm.Registros.Cast <ProcessoCotacaoFornecedorVm>().Single(); Assert.AreEqual(fornecedor.Codigo, vm.Codigo); Assert.AreEqual(fornecedor.Nome, vm.Nome); Assert.AreEqual(fornecedorParticipante.Id, vm.IdFornecedorParticipante); Assert.AreEqual(cotacaoItem.QuantidadeDisponivel, vm.QuantidadeDisponivel); Assert.AreEqual("Não", vm.Selecionado); Assert.AreEqual(cotacaoItem.ValorComImpostos, vm.ValorComImpostos); Assert.AreEqual(cotacaoItem.Preco, vm.ValorLiquido); }
public void ConsigoPersistirEConsultarUmProcessoDeCotacaoComCotacoes() { ProcessoDeCotacaoDeFrete processo = DefaultObjects.ObtemProcessoDeCotacaoDeFrete(); Fornecedor fornecedor = DefaultObjects.ObtemFornecedorPadrao(); processo.AdicionarFornecedor(fornecedor); processo.Abrir(DefaultObjects.ObtemUsuarioPadrao()); processo.InformarCotacao(fornecedor.Codigo, 120, 100, "obs fornec"); DefaultPersistedObjects.PersistirProcessoDeCotacaoDeFrete(processo); UnitOfWorkNh.Session.Clear(); var processosDeCotacaoDeMaterial = ObjectFactory.GetInstance <IProcessosDeCotacao>(); Console.WriteLine("Consultando Cotacao - INICIO"); var processoConsultado = (ProcessoDeCotacaoDeFrete)processosDeCotacaoDeMaterial.BuscaPorId(processo.Id).Single(); Assert.AreEqual(processo.FornecedoresParticipantes.Count(x => x.Cotacao != null), processoConsultado.FornecedoresParticipantes.Count(x => x.Cotacao != null)); Console.WriteLine("Consultando Cotacao - FIM"); }
public void QuandoTentarFecharUmProcessoDeCotacaoQueJaEstaFechadoDeveGerarExcecao() { ProcessoDeCotacaoDeFrete processoDeCotacao = DefaultObjects.ObtemProcessoDeCotacaoDeFreteFechado(); processoDeCotacao.Fechar(); }