public void Validator_WhenTableSizeIsLessThanZero_ShouldHaveATableSizeValidationError() { // Arrange var model = new TableRequestBindingModel() { TableSize = -1 }; var subject = new TableRequestBindingModelValidator(); // Act // Assert subject.ShouldHaveValidationErrorFor(m => m.TableSize, model); }
public void Index_WhenTheModelStateIsInvalid_ReturnsAViewModelResult() { // Arrange var req = new TableRequestBindingModel() { TableSize = fixture.Create<int>() }; var subject = fixture.Create<HomeController>(); subject.ModelState.AddModelError(fixture.Create<string>(), fixture.Create<string>()); // Act var result = subject.Index(req) as ViewResult; // Assert Assert.IsNotNull(result); }
public void Index_WhenTheModelStateIsInvalid_ReturnsAViewModelWithTheCorrectTableSize() { // Arrange var req = new TableRequestBindingModel() { TableSize = fixture.Create<int>() }; var subject = fixture.Create<HomeController>(); subject.ModelState.AddModelError(fixture.Create<string>(), fixture.Create<string>()); // Act var result = subject.Index(req) as ViewResult; // Assert var model = result.Model as MultiplicationTableViewModel; Assert.NotNull(model); Assert.That(model.TableSize, Is.EqualTo(req.TableSize)); }
public void Validator_WhenTableSizeIsGreaterThan500_UsesTheTableTooLargeErrorMessage() { // Arrange var model = new TableRequestBindingModel() { TableSize = 501 }; var subject = new TableRequestBindingModelValidator(); // Act var result = subject.Validate(model); // Assert Assert.That(result.Errors.Single(e => e.PropertyName == "TableSize").ErrorMessage, Is.EqualTo(TableRequestBindingModelErrorMessages.TableToLarge)); }
public ActionResult Index(TableRequestBindingModel model = null) { if (model == null || model.TableSize == 0) { return View(new MultiplicationTableViewModel()); } if (!ModelState.IsValid) { return View(new MultiplicationTableViewModel() { TableSize = model.TableSize }); } var viewModel = viewModelFactory.Create(SequenceType.Primes, model.TableSize); return View(viewModel); }
public void Index_WhenTheModelStateIsInvalid_ShouldNotUseTheViewModelFactory() { // Arrange var req = new TableRequestBindingModel() { TableSize = fixture.Create<int>() }; var subject = fixture.Create<HomeController>(); subject.ModelState.AddModelError(fixture.Create<string>(), fixture.Create<string>()); // Act var result = subject.Index(req) as ViewResult; // Assert viewModelFactory.Verify(fact => fact.Create(It.IsAny<SequenceType>(), It.IsAny<int>()), Times.Never()); }
public void Index_WithSpecifiedTableSize_ReturnAViewResult(int tableSize) { // Arrange var req = new TableRequestBindingModel() { TableSize = tableSize }; var subject = fixture.Create<HomeController>(); // Act var result = subject.Index(req) as ViewResult; // Assert Assert.IsNotNull(result); }
public void Index_WithSpecifiedTableSizeOfZero_ShouldNotUseTheViewModelFactory() { // Arrange var req = new TableRequestBindingModel() { TableSize = 0 }; var subject = fixture.Create<HomeController>(); // Act subject.Index(req); // Assert viewModelFactory.Verify(fact => fact.Create(It.IsAny<SequenceType>(), It.IsAny<int>()), Times.Never()); }
public void Index_WithSpecifiedTableSizeOfZero_ReturnsADefaultViewModel() { // Arrange var req = new TableRequestBindingModel() { TableSize = 0 }; var subject = fixture.Create<HomeController>(); // Act var result = subject.Index(req) as ViewResult; // Assert var model = result.Model; Assert.That(model, Is.InstanceOf<MultiplicationTableViewModel>()); VerifyModelHasDefaultValues((MultiplicationTableViewModel)model); }
public void Index_WithSpecifiedTableSizeGtZero_ShouldUseAViewModelCreatedByTheViewModelFactory() { // Arrange var expected = fixture.Create<MultiplicationTableViewModel>(); viewModelFactory.Setup(fact => fact.Create(It.IsAny<SequenceType>(), It.IsAny<int>())) .Returns(expected); var req = new TableRequestBindingModel() { TableSize = fixture.Create<int>() }; var subject = fixture.Create<HomeController>(); // Act var result = subject.Index(req) as ViewResult; // Assert Assert.That(result.Model, Is.EqualTo(expected)); }
public void Index_WithSpecifiedTableSizeGtZero_RequestsTheSpecifiedTableSize() { // Arrange var tableSize = fixture.Create<int>(); var req = new TableRequestBindingModel() { TableSize = tableSize }; var subject = fixture.Create<HomeController>(); // Act var result = subject.Index(req) as ViewResult; // Assert viewModelFactory.Verify(fact => fact.Create(It.IsAny<SequenceType>(), tableSize), Times.Once); }
public void Index_WithSpecifiedTableSizeGtZero_RequestsAPrimeNumberMultipicationTable() { // Arrange var req = new TableRequestBindingModel() { TableSize = fixture.Create<int>() }; var subject = fixture.Create<HomeController>(); // Act var result = subject.Index(req) as ViewResult; // Assert viewModelFactory.Verify(fact => fact.Create(SequenceType.Primes, It.IsAny<int>()), Times.Once); }
public void Validator_WhenTableSizeIsLessThanZero_UsesTheTableSizeMustBePositiveErrorMessage() { // Arrange var model = new TableRequestBindingModel() { TableSize = -1 }; var subject = new TableRequestBindingModelValidator(); // Act var result = subject.Validate(model); // Assert Assert.That(result.Errors.Single(e => e.PropertyName == "TableSize").ErrorMessage, Is.EqualTo(TableRequestBindingModelErrorMessages.TableSizeMustBePositive)); }