public void UpdateCategoryIsCalled_WhenItemIsFoundAndIsInValidState()
        {
            // Arrange
            var viewMock = new Mock <ICategoriesAdminView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());

            int categoryId          = 1;
            var categoryServiceMock = new Mock <ICategoryService>();
            var category            = new Category()
            {
                Id = categoryId
            };

            categoryServiceMock.Setup(c => c.GetById(categoryId)).Returns(category);

            CategoriesAdminPresenter editCategoriesPresenter = new CategoriesAdminPresenter
                                                                   (viewMock.Object, categoryServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnCategoryEdit += null, new CategoryAdminEventArgs(categoryId, null));

            // Assert
            categoryServiceMock.Verify(c => c.Update(category), Times.Once());
        }
        public void TryUpdateModelIsNotCalled_WhenItemIsNotFound()
        {
            // Arrange
            var viewMock = new Mock <ICategoriesAdminView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            string errorKey            = string.Empty;
            int    categoryId          = 1;
            var    categoryServiceMock = new Mock <ICategoryService>();

            categoryServiceMock.Setup(c => c.GetById(categoryId)).Returns <Category>(null);

            CategoriesAdminPresenter editCategoriesPresenter = new CategoriesAdminPresenter
                                                                   (viewMock.Object, categoryServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnCategoryEdit += null, new CategoryAdminEventArgs(categoryId, null));

            // Assert
            viewMock.Verify(v => v.TryUpdateModel(It.IsAny <Category>()), Times.Never());
        }
        public void AddModelError_WhenItemIsNotFound()
        {
            // Arrange
            var viewMock = new Mock <ICategoriesAdminView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            string errorKey            = string.Empty;
            int    categoryId          = 1;
            string expectedError       = String.Format("Item with id {0} was not found", categoryId);
            var    categoryServiceMock = new Mock <ICategoryService>();

            categoryServiceMock.Setup(c => c.GetById(categoryId)).Returns <Category>(null);

            CategoriesAdminPresenter editCategoriesPresenter = new CategoriesAdminPresenter
                                                                   (viewMock.Object, categoryServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnCategoryEdit += null, new CategoryAdminEventArgs(categoryId, null));

            // Assert
            Assert.AreEqual(1, viewMock.Object.ModelState[errorKey].Errors.Count);
            StringAssert.AreEqualIgnoringCase(expectedError, viewMock.Object.ModelState[errorKey].Errors[0].ErrorMessage);
        }