public async Task Return_OK_Status_Code_When_Successful()
        {
            var databaseName = nameof(Return_OK_Status_Code_When_Successful);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            // Arrange
            var context = new CashRegisterContext(options);

            var banknote = new Banknotes()
            {
                Fifty = 1,
                One   = 1,
            };

            context.Banknotes.Add(banknote);

            context.SaveChanges();


            var sut = new CashRegisterService(context);

            var withdrawAmount = 51;
            var response       = await sut.HandleCashWithdraw(withdrawAmount);

            Assert.IsTrue(response.StatusCode == 200);
        }
        public async Task Update_Database_With_Withdrawn_Banknotes()
        {
            var databaseName = nameof(Update_Database_With_Withdrawn_Banknotes);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            // Arrange
            var context = new CashRegisterContext(options);

            var banknote = new Banknotes()
            {
                Fifty = 1,
                One   = 1,
            };

            context.Banknotes.Add(banknote);

            context.SaveChanges();


            // Act
            var sut = new CashRegisterService(context);

            var withdrawAmount = 51;
            var response       = await sut.HandleCashWithdraw(withdrawAmount);

            // Assert
            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                Assert.IsTrue(actAndAssertContext.Banknotes.FirstOrDefault().Fifty == 0);
                Assert.IsTrue(actAndAssertContext.Banknotes.FirstOrDefault().One == 0);
            };
        }
Exemplo n.º 3
0
        public async Task Add_Banknotes_Cout_To_Database_Object_Values()
        {
            var databaseName = nameof(Add_Banknotes_Cout_To_Database_Object_Values);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            var banknotesDTO = new BanknotesDTO()
            {
                Fifty = 5, Twenty = 2, Ten = 3, Five = 6, Two = 4, One = 9
            };

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Deposit(banknotesDTO);

                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Fifty, 5);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Twenty, 2);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Ten, 3);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Five, 6);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Two, 4);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().One, 9);
            };
        }
        public async Task Return_Model_With_Withdrawn_Banknotes()
        {
            var databaseName = nameof(Return_Model_With_Withdrawn_Banknotes);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            // Arrange
            var context = new CashRegisterContext(options);

            var banknote = new Banknotes()
            {
                Fifty = 1,
                One   = 1,
            };

            context.Banknotes.Add(banknote);

            context.SaveChanges();


            var sut = new CashRegisterService(context);

            var withdrawAmount = 51;
            var response       = await sut.HandleCashWithdraw(withdrawAmount);

            Assert.IsNotNull(response.Model);
        }
        public async Task Return_Failure_Message_When_Banknotes_Cannot_Fulfil_Withdraw()
        {
            var databaseName = nameof(Return_Failure_Message_When_Banknotes_Cannot_Fulfil_Withdraw);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            // Arrange
            var context = new CashRegisterContext(options);

            var banknote = new Banknotes()
            {
                Fifty = 1,
                One   = 1,
            };

            context.Banknotes.Add(banknote);

            context.SaveChanges();


            var sut = new CashRegisterService(context);

            var withdrawAmount = 41;
            var response       = await sut.HandleCashWithdraw(withdrawAmount);

            Assert.IsTrue(response.Message == Messages.BanknotesCannotFulfilPayment);
        }
Exemplo n.º 6
0
        public async Task Return_FailureMessage_When_NoCash_Is_Provided()
        {
            var databaseName = nameof(Return_FailureMessage_When_NoCash_Is_Provided);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Deposit(null);

                Assert.IsTrue(response.Message == Messages.NoCashIsProvidedToBeDeposited);
            };
        }
Exemplo n.º 7
0
        public async Task Return_Forbidden_Status_Code_When_RegisterEmpty()
        {
            var databaseName = nameof(Return_Forbidden_Status_Code_When_RegisterEmpty);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.TotalAmountAvailable();

                Assert.IsTrue(response.StatusCode == 403);
            };
        }
Exemplo n.º 8
0
        public async Task Return_Null_Model_When_RegisterEmpty()
        {
            var databaseName = nameof(Return_Null_Model_When_RegisterEmpty);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.TotalAmountAvailable();

                Assert.IsNull(response.Model);
            };
        }
Exemplo n.º 9
0
        public async Task Return_Forbidden_Status_Code_When_NoCash_Is_Provided()
        {
            var databaseName = nameof(Return_Forbidden_Status_Code_When_NoCash_Is_Provided);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Deposit(null);

                Assert.IsTrue(response.StatusCode == 403);
            };
        }
        public async Task Return_Failure_Message_When_Withdraw_Amount_IsLess_Than_Zero()
        {
            var databaseName = nameof(Return_Failure_Message_When_Withdraw_Amount_IsLess_Than_Zero);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var withdrawAmount = -5;
                var response       = await sut.HandleCashWithdraw(withdrawAmount);

                Assert.IsTrue(response.Message == Messages.NegativeAmountCannotBeWithdrawn);
            };
        }
        public async Task Return_Forbidden_Status_Code_When_Withdraw_Amount_IsLess_Than_Zero()
        {
            var databaseName = nameof(Return_Forbidden_Status_Code_When_Withdraw_Amount_IsLess_Than_Zero);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var withdrawAmount = -5;
                var response       = await sut.HandleCashWithdraw(withdrawAmount);

                Assert.IsTrue(response.StatusCode == 403);
            };
        }
Exemplo n.º 12
0
        public async Task Return_OK_StatusCode_When_Cash_Found()
        {
            var databaseName = nameof(Return_OK_StatusCode_When_Cash_Found);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            CashRegisterService_Utilities.FillContextWithUserData(options);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.TotalAmountAvailable();

                Assert.IsTrue(response.StatusCode == 200);
            };
        }
Exemplo n.º 13
0
        public async Task Return_Correct_Instance_Of_Model_When_Successful()
        {
            var databaseName = nameof(Return_Correct_Instance_Of_Model_When_Successful);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            CashRegisterService_Utilities.FillContextWithUserData(options);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.TotalAmountAvailable();

                Assert.IsInstanceOfType(response, typeof(GeneralResponseModel <BanknotesDTO>));
            };
        }
        public async Task Return_Not_Null_Model_When_Successful()
        {
            var databaseName = nameof(Return_Not_Null_Model_When_Successful);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            CashRegisterService_Utilities.FillContextWithUserData(options);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Withdraw(50);

                Assert.IsNotNull(response.Model);
            };
        }
        public async Task Return_OK_Status_Code_When_Successful()
        {
            var databaseName = nameof(Return_OK_Status_Code_When_Successful);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            CashRegisterService_Utilities.FillContextWithUserData(options);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.CalculateChange(6, 8);

                Assert.IsTrue(response.StatusCode == 200);
            };
        }
        public async Task Return_Failure_Message_When_Withdraw_Amount_Bigger_Than_Banknotes_Sum()
        {
            var databaseName = nameof(Return_Failure_Message_When_Withdraw_Amount_Bigger_Than_Banknotes_Sum);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            CashRegisterService_Utilities.FillContextWithUserData(options);

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var withdrawAmount = 99999;
                var response       = await sut.HandleCashWithdraw(withdrawAmount);

                Assert.IsTrue(response.Message == Messages.CashNotEnoughToWithdraw);
            };
        }
Exemplo n.º 17
0
        public async Task Return_Success_Message_When_Successful()
        {
            var databaseName = nameof(Return_Success_Message_When_Successful);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            var banknotesDTO = new BanknotesDTO()
            {
                Fifty = 5, Twenty = 2, Ten = 3, Five = 6, Two = 4, One = 9
            };

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Deposit(banknotesDTO);

                Assert.IsTrue(response.Message == Messages.DepositPassed);
            };
        }
Exemplo n.º 18
0
        public async Task Initiliaze_Banknotes_Object_In_Database_With_Zero_Values()
        {
            var databaseName = nameof(Initiliaze_Banknotes_Object_In_Database_With_Zero_Values);

            var options = CashRegisterService_Utilities.GetOptions(databaseName);

            var banknotesDTO = new Mock <BanknotesDTO>();

            using (var actAndAssertContext = new CashRegisterContext(options))
            {
                var sut = new CashRegisterService(actAndAssertContext);

                var response = await sut.Deposit(banknotesDTO.Object);

                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Fifty, 0);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Twenty, 0);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Ten, 0);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Five, 0);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().Two, 0);
                Assert.AreEqual(actAndAssertContext.Banknotes.FirstOrDefault().One, 0);
            };
        }