public void Validator_WhenTableSizeIsLessThanZero_ShouldHaveATableSizeValidationError()
        {
            // Arrange
            var model = new TableRequestBindingModel()
            {
                TableSize = -1
            };
            var subject = new TableRequestBindingModelValidator();

            // Act
            // Assert
            subject.ShouldHaveValidationErrorFor(m => m.TableSize, model);
        }
コード例 #2
0
            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);
            }
コード例 #3
0
            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));
        }
コード例 #5
0
        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);
        }
コード例 #6
0
            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());
            }
コード例 #7
0
            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);
            }
コード例 #8
0
            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());
            }
コード例 #9
0
            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);
            }
コード例 #10
0
            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));
            }
コード例 #11
0
            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);
            }
コード例 #12
0
            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));
        }