public void UsersController_Post_ValidModelStateSavesUser() { // Arrange var repository = Substitute.For<IRepository>(); var usersController = new UsersController(repository); usersController.Request = new HttpRequestMessage(); usersController.Configuration = new HttpConfiguration(); // Mock the UrlHelper in order for the controller // to be able to successfully call the Url.Link() method. var urlHelper = Substitute.For<UrlHelper>(); urlHelper.Link(Arg.Any<string>(), Arg.Any<object>()).Returns("http://localhost/api/users/0"); usersController.Url = urlHelper; var viewModel = new UserAddViewModel() { UserName = "******", Password = "******" }; // Act var actionResult = usersController.Post(viewModel) as CreatedNegotiatedContentResult<UserMessage>; // Assert Assert.IsNotNull(actionResult); Assert.AreEqual(0, actionResult.Content.UserId); Assert.AreEqual("johns", actionResult.Content.UserName); repository.ReceivedWithAnyArgs().SaveUser(null); }
public void UsersController_Post_InvalidModelStateReturnsErrorRequest() { // Arrange var usersController = new UsersController(null); var viewModel = new UserAddViewModel(); // Add a model state error. usersController.ModelState.AddModelError("UserName", "UserName is required."); // Act var actionResult = usersController.Post(viewModel); // Assert Assert.IsInstanceOfType(actionResult, typeof(ErrorActionResult)); }