public IActionResult Post([FromBody] SubmittedCardModel card) { if (card == null || card.CardNumber == null || String.IsNullOrEmpty(card.CardNumber)) { return(StatusCode(422)); } if (!_numberService.IsDigitsOnly(card.CardNumber)) { return(StatusCode(422)); } var validationResult = _cardValidator.ValidateCard(new Card(card.CardNumber)); return(new JsonResult(new ValidationResultModel(validationResult.CardType, validationResult.ValidationResult), jsonSerializerSettings)); }
public void CardNumberIsEmpty() { var cardValidator = new Mock <ICardValidator>(); var numberService = new Mock <INumberService>(); var controller = new CardsValidationController(cardValidator.Object, numberService.Object); var model = new SubmittedCardModel() { CardNumber = "" }; var result = controller.Post(model); Assert.IsInstanceOfType(result, typeof(StatusCodeResult)); Assert.AreEqual(422, (result as StatusCodeResult).StatusCode); }
public void CardNumberWithDigitsOnly() { var cardValidationResult = new Mock <ICardValidationResult>(); var cardValidator = new Mock <ICardValidator>(); cardValidator.Setup(cv => cv.ValidateCard(It.IsAny <Card>())).Returns(cardValidationResult.Object); var numberService = new Mock <INumberService>(); numberService.Setup(s => s.IsDigitsOnly(It.IsAny <string>())).Returns(true); var controller = new CardsValidationController(cardValidator.Object, numberService.Object); var model = new SubmittedCardModel() { CardNumber = "123" }; var result = controller.Post(model); numberService.Verify(mock => mock.IsDigitsOnly(It.IsAny <string>()), Times.Once()); }
public void CardNumberWithChar() { var cardValidator = new Mock <ICardValidator>(); cardValidator.Setup(cv => cv.ValidateCard(It.IsAny <Card>())); var numberService = new Mock <INumberService>(); numberService.Setup(s => s.IsDigitsOnly(It.IsAny <string>())).Returns(false); var controller = new CardsValidationController(cardValidator.Object, numberService.Object); var model = new SubmittedCardModel() { CardNumber = "asd" }; var result = controller.Post(model); numberService.Verify(mock => mock.IsDigitsOnly(It.IsAny <string>()), Times.Once()); Assert.IsInstanceOfType(result, typeof(StatusCodeResult)); Assert.AreEqual(422, (result as StatusCodeResult).StatusCode); }