Esempio n. 1
0
        public async Task <IActionResult> Index(NewCreditCardApplicationDetails applicationDetails)
        {
            if (!ModelState.IsValid)
            {
                return(View(applicationDetails));
            }

            var creditCardApplication = new CreditCardApplication
            {
                FirstName           = applicationDetails.FirstName,
                LastName            = applicationDetails.LastName,
                FrequentFlyerNumber = applicationDetails.FrequentFlyerNumber,
                Age = applicationDetails.Age.Value,
                GrossAnnualIncome  = applicationDetails.GrossAnnualIncome.Value,
                RelationshipStatus = applicationDetails.RelationshipStatus,
                BusinessSource     = applicationDetails.BusinessSource
            };


            // There is no front-end validation required on the frequent flyer number.
            // If it is invalid the decision will be referred to a human.
            // This is so we don't miss out on potential sales due to people thinking
            // there frequent flyer number should be valid when it is not.
            var evaluator = new CreditCardApplicationEvaluator(new FrequentFlyerNumberValidator());
            CreditCardApplicationDecision decision = evaluator.Evaluate(creditCardApplication);

            creditCardApplication.Decision = decision;

            await _applicationRepository.AddAsync(creditCardApplication);

            return(View("ApplicationComplete", creditCardApplication));
        }
        public async Task <IActionResult> Index(NewCreditCardApplicationDetails appDetail)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var creditCartApp = new CreditCardApplication
            {
                FirstName           = appDetail.FirstName,
                LastName            = appDetail.LastName,
                Age                 = appDetail.Age.Value,
                FrequentFlyerNumber = appDetail.FrequentFlyerNumber,
                GrossAnnualIncome   = appDetail.GrossAnnualIncome.Value
            };

            if (_evaluator.Evaluate(creditCartApp) == CreditCardApplicationDecision.AutoDeclined)
            {
                ViewData["Decision"] = $"<label id='decision'>Auto Declined</label>";
                return(View(creditCartApp));
            }
            else
            {
                ViewData["Decision"] = "";
            }


            await _application.AddAsync(creditCartApp);

            return(View("ApplicationComplete", creditCartApp));
        }
        public async Task <IActionResult> Index(NewCreditCardApplicationDetails applicationDetails)
        {
            if (!ModelState.IsValid)
            {
                return(View(applicationDetails));
            }

            var creditCardApplication = new CreditCardApplication
            {
                FirstName           = applicationDetails.FirstName,
                LastName            = applicationDetails.LastName,
                FrequentFlyerNumber = applicationDetails.FrequentFlyerNumber,
                Age = applicationDetails.Age.Value,
                GrossAnnualIncome = applicationDetails.GrossAnnualIncome.Value
            };

            // Not mock-able
            var evaluator = new CreditCardApplicationEvaluator(new FrequentFlyerNumberValidator());

            creditCardApplication.Decision = evaluator.Evaluate(creditCardApplication);

            await _applicationRepository.AddAsync(creditCardApplication);

            return(View("ApplicationComplete", creditCardApplication));
        }
        public async Task NotSaveApplicationModelError()
        {
            _sut.ModelState.AddModelError("x", "test Error");

            var application = new NewCreditCardApplicationDetails();
            await _sut.Index(application);

            _mockRepository.Verify(x => x.AddAsync(It.IsAny <CreditCardApplication>()), Times.Never);
        }
Esempio n. 5
0
        public async Task ReturnViewWhenInvalidModelState()
        {
            _sut.ModelState.AddModelError("x", "Test Error");
            var application = new NewCreditCardApplicationDetails
            {
                FirstName = "Erick"
            };
            IActionResult result = await _sut.Index(application);

            ViewResult viewResult = Assert.IsType <ViewResult>(result);
            var        model      = Assert.IsType <NewCreditCardApplicationDetails>(viewResult.Model);

            Assert.Equal(application.FirstName, model.FirstName);
        }
Esempio n. 6
0
        public async Task NotSaveApplicationWhenModelError()
        {
            // Add a model error
            _sut.ModelState.AddModelError("x", "Test Error");

            // Build expected object
            var application = new NewCreditCardApplicationDetails();

            // Call index method using expected object
            await _sut.Index(application);

            // If invalid model, controller should not save application to database
            // Verify that AddAsync has never been called
            _mockRepository.Verify(x => x.AddAsync(It.IsAny <CreditCardApplication>()), Times.Never);
        }
        public ActionResult Index(NewCreditCardApplicationDetails applicationDetails)
        {
            if (ModelState.IsValid)
            {
                return(View(applicationDetails));
            }
            var CreditCardApplication = new CreditCardApplication
            {
                FirstName           = applicationDetails.FirstName,
                LastName            = applicationDetails.LastName,
                Age                 = applicationDetails.Age.Value,
                GrossAnnualIncome   = applicationDetails.GrossAnnualIncome.Value,
                FrequentFlyerNumber = applicationDetails.FrequentFlyerNumber
            };

            return(View());
        }
Esempio n. 8
0
        public async Task <IActionResult> Index(NewCreditCardApplicationDetails applicationDetails)
        {
            if (!ModelState.IsValid)
            {
                return(View(applicationDetails));
            }

            var creditCardApplication = new CreditCardApplication
            {
                FirstName         = applicationDetails.FirstName,
                LastName          = applicationDetails.LastName,
                Age               = applicationDetails.Age.Value,
                GrossAnnualIncome = applicationDetails.GrossAnnualIncome.Value
            };

            await _applicationRepository.AddAsync(creditCardApplication);

            return(View("ApplicationComplete", creditCardApplication));
        }
Esempio n. 9
0
        public async Task <IActionResult> Index(NewCreditCardApplicationDetails applicationDetails)
        {
            if (ModelState.IsValid == false)
            {
                return(View(applicationDetails));
            }

            var creditCardApplication = new CreditCardApplication
            {
                FirstName         = applicationDetails.FirstName,
                LastName          = applicationDetails.LastName,
                Age               = applicationDetails.Age.Value,
                GrossAnnualIncome = applicationDetails.GrossAnnualIncome.Value,
            };

            await _applicationRepository.AddAsync(creditCardApplication);

            var applicationId = _dataProtector.Protect(creditCardApplication.Id.ToString());

            return(RedirectToAction(nameof(ApplicationComplete), new { id = applicationId }));
        }
Esempio n. 10
0
        public async Task ReturnViewWhenInvalidModelState()
        {
            // Add a model error
            _sut.ModelState.AddModelError("x", "Test Error");

            // Build expected object
            var application = new NewCreditCardApplicationDetails
            {
                FirstName = "Sarah"
            };

            // Call index method using expected object
            var result = await _sut.Index(application);

            // If result of assert is successful return the converted type
            var viewResult = Assert.IsType <ViewResult>(result);

            //  if successful, get credit card application details as model
            var model = Assert.IsType <NewCreditCardApplicationDetails>(viewResult.Model);

            // Assert that the expected value equals the first name in the returned model
            Assert.Equal(application.FirstName, model.FirstName);
        }
Esempio n. 11
0
        public IActionResult Index()
        {
            var model = new NewCreditCardApplicationDetails();

            return(View(model));
        }