public void UpdateIsCalled_WhenBrandIsFoundAndIsInValidState()
        {
            // Arrange
            var viewMock = new Mock <IBrandsAdminView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            int    brandId          = 1;
            string brandName        = "Pesho";
            var    brandServiceMock = new Mock <IBrandService>();
            var    brand            = new Brand()
            {
                Id = brandId, Name = brandName
            };

            brandServiceMock.Setup(c => c.GetById(brandId)).Returns(brand);

            BrandsAdminPresenter brandsAdminPresenter = new BrandsAdminPresenter
                                                            (viewMock.Object, brandServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnBrandEdit += null, new BrandAdminEventArgs(brandId, brandName, null, null));

            // Assert
            brandServiceMock.Verify(c => c.Update(brand), Times.Once());
        }
        public void TryUpdateModelIsNotCalled_WhenBrandIsNotFound()
        {
            // Arrange
            var viewMock = new Mock <IBrandsAdminView>();

            viewMock.Setup(v => v.ModelState).Returns(new ModelStateDictionary());
            string errorKey         = string.Empty;
            int    brandId          = 1;
            string brandName        = "Pesho";
            var    brandServiceMock = new Mock <IBrandService>();

            brandServiceMock.Setup(c => c.GetById(brandId)).Returns <Brand>(null);

            BrandsAdminPresenter brandsAdminPresenter = new BrandsAdminPresenter
                                                            (viewMock.Object, brandServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnBrandEdit += null, new BrandAdminEventArgs(brandId, brandName, null, null));

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

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

            brandServiceMock.Setup(c => c.GetById(brandId)).Returns <Brand>(null);

            BrandsAdminPresenter brandsAdminPresenter = new BrandsAdminPresenter
                                                            (viewMock.Object, brandServiceMock.Object);

            // Act
            viewMock.Raise(v => v.OnBrandEdit += null, new BrandAdminEventArgs(brandId, brandName, null, null));

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