public void Cannot_Save_Invalid_Edited_Client() { // ARRANGE: given a repository and an existing key contact... var mockRepository = new Mock<IClientRepository>(); KeyContact[] existingKeyContact = new KeyContact[] { new KeyContact { KeyContactID = 1, FirstName = "Bill", LastName = "Cowher" } }; // create data to change key contact to mockRepository.Setup(x => x.KeyContacts).Returns(existingKeyContact.AsQueryable()); var keyContactForm = new KeyContactFormViewModel { KeyContactID = 1, FirstName = "Mike", LastName = "Tomlin" }; // ACT: ...when a user tries to save changes to the invalid key contact... var controller = new KeyContactsController(mockRepository.Object); controller.ModelState.AddModelError("SomeProperty", "Got invalid data"); var result = controller.Edit(keyContactForm) as ViewResult; // ASSERT: then the values of the key contact are not changed and the edit page is redisplayed Assert.NotNull(result); var clientFormResult = (KeyContactFormViewModel)result.ViewData.Model; clientFormResult.FirstName.ShouldEqual("Mike"); clientFormResult.LastName.ShouldEqual("Tomlin"); result.ViewName.ShouldEqual("Edit"); }
public void Can_Save_Valid_Edited_KeyContact() { // ARRANGE: given a repository and an existing key contact... var mockRepository = new Mock<IClientRepository>(); KeyContact[] existingKeyContact = new KeyContact[] { new KeyContact { KeyContactID = 1, FirstName = "Bill", LastName = "Cowher" } }; // create data to change key contact to mockRepository.Setup(x => x.KeyContacts).Returns(existingKeyContact.AsQueryable()); var keyContactForm = new KeyContactFormViewModel { KeyContactID = 1, FirstName = "Mike", LastName = "Tomlin" }; // ACT: ...when a user tries to save changes to the key contact... var controller = new KeyContactsController(mockRepository.Object); var result = controller.Edit(keyContactForm); // ASSERT: then the key contact is saved, user is redirected to the detail page, // values are changed, and a confirmation message is displayed result.ShouldBeRedirectionTo(new { action = "Detail" }); controller.TempData["message"].ShouldEqual("Key Contact Mike Tomlin has been saved."); }