public void PersonController_edit_post_valid_updates_model_returns_JSON()
{
//Arrange
_serv = new Mock<IPersonService>();
int testid = 4242;
FormCollection fakeform = new FormCollection();
fakeform.Add("ID", testid.ToString());
fakeform.Add("firstname1", "blah"); //Every required field must be populated,
fakeform.Add("lastname1", "UnitTest"); //or result will be null.
fakeform.Add("gender", "47");
Person fakeperson = new Person();
Person savedperson = new Person();
string user = "";
_serv.Setup(p => p.Get(testid)).Returns(fakeperson);
_serv.Setup(x => x.Save(It.IsAny<Person>(),
It.IsAny<string>())
).Callback((Person p, string str) =>
{
savedperson = p;
user = str;
});
var _ctrlr = new PersonController(_serv.Object, lcache.Object);
_ctrlr.SetFakeControllerContext();
_ctrlr.ValueProvider = fakeform.ToValueProvider();
//Act
var result = _ctrlr.Edit(testid, "UnitTest") as JsonResult;
//Assert
IDictionary<string, object> data = new RouteValueDictionary(result.Data);
Assert.AreEqual("OK", data["status"]);
Assert.AreEqual(fakeperson, savedperson);
Assert.AreEqual(savedperson.firstname1, "blah");
Assert.AreEqual(savedperson.lastname1, "UnitTest");
Assert.AreEqual(savedperson.gender, 47);
}