示例#1
0
        public void SaqueService_RealizaSaque_Saca300ComSucesso()
        {
            // Arrange
            var configuracaoMock = new Mock <IConfiguracaoSaqueService>();

            configuracaoMock.Setup(o => o.IniciaCaixaEletronico()).Returns(new ConfiguracaoSaque
            {
                NotasDisponiveis = TipoNota.Dois | TipoNota.Cinco | TipoNota.Dez | TipoNota.Vinte | TipoNota.Cinquenta | TipoNota.Cem,
                ValorLimiteSaque = 1500
            });

            SaqueService saqueService = new SaqueService(configuracaoMock.Object);

            // Act
            var resultado = saqueService.RealizaSaque(new SaqueDTO {
                ValorRequisitado = 300
            });

            // Assert
            Assert.AreEqual(resultado[TipoNota.Cem], 3);
            Assert.AreEqual(resultado[TipoNota.Cinquenta], 0);
            Assert.AreEqual(resultado[TipoNota.Vinte], 0);
            Assert.AreEqual(resultado[TipoNota.Dez], 0);
            Assert.AreEqual(resultado[TipoNota.Cinco], 0);
            Assert.AreEqual(resultado[TipoNota.Dois], 0);
        }
示例#2
0
        public IActionResult Index(SaqueViewModel saqueViewModel)
        {
            SaqueService saqueService = new SaqueService();

            SaqueDTO saqueDTO = new SaqueDTO {
                ValorRequisitado = saqueViewModel.ValorRequisitado
            };

            if (!saqueService.EstaNoLimite(saqueDTO))
            {
                saqueViewModel.Erro = @"O valor informado passou do limite de R$ 1.500,00.";
                return(View(saqueViewModel));
            }

            if (!saqueService.ValorRequisitadoValido(saqueDTO))
            {
                saqueViewModel.Erro = @"O valor informado é inválido. Favor informar um valor múltiplo de 2, 5, 10, 20, 50 ou 100.";
                return(View(saqueViewModel));
            }

            saqueViewModel.ValoresSaque = saqueService.RealizaSaque(saqueDTO);

            return(View(saqueViewModel));
        }