public async void ReturnsIActionResult() { DbContextOptions <LibraryDbContext> options = new DbContextOptionsBuilder <LibraryDbContext>() .UseInMemoryDatabase("AuthorCreateTestDb") .Options; using (LibraryDbContext context = new LibraryDbContext(options)) { //Arrange Author author = new Author(); author.Name = "Miss Kitty"; author.Genre = Genre.Fantasy; //Act AuthorController ac = new AuthorController(context); var x = ac.Create(author); var results = context.Authors.Where(a => a.Name == "Miss Kitty"); //Assert Assert.IsAssignableFrom <IActionResult>(x); } }
private void AddAuthor(object sender, EventArgs e) { var authorName = authName.Text; var authorSurName = authSurName.Text; AuthorController.Create(authorName, authorSurName); }
public void Create_PostCallWithInvalidDataReturnsViewResultWithBadStatus() { var controller = new AuthorController(null, null, null); //Problem#1 This controller action uses Response object from HttpContext //Unless we supply that it won't //Now System provides me a predefined Mock Object for HttpContext var httpContext = new DefaultHttpContext(); //controoler.HttpContext is readonly //controller.HttpContext = httpContext; //It is part of ControllerContext controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = httpContext; //Calling Create directly will not run validation and will not //Create ModelState Object. This is done by the Mvc Validation Framework //And we are not running validation framework //I am not testing validation framework //My goal is to see, if there is Validation Error, //what will be my controllers reaction //So we add our own validation error controller.ModelState.AddModelError("Name", "Required"); var result = controller.Create(new Author() { }); Assert.IsType <ViewResult>(result); Assert.Equal(400, controller.Response.StatusCode); }
public void CreateView_NotNull() { var mock = new Mock <IAuthorLogic>(); mock.Setup(a => a.Add(new Author())); AuthorController controller = new AuthorController(mock.Object); ViewResult result = controller.Create() as ViewResult; Assert.IsNotNull(result); }
public void CreatePostAction_ModelError() { var mock = new Mock <IAuthorLogic>(); CreateAuthorViewModel author = new CreateAuthorViewModel(); AuthorController controller = new AuthorController(mock.Object); controller.ModelState.AddModelError("Name", "Model have no name"); ViewResult result = controller.Create(author) as ViewResult; Assert.IsNotNull(result); }
public void Create() { // Arrange AuthorController controller = new AuthorController(); // Act ViewResult result = controller.Create() as ViewResult; // Assert Assert.IsNotNull(result); }
public void Create_GET_ReturnsCorrectView() { //Arrange IRepository mockRepo = Substitute.For <IRepository>(); //Act AuthorController target = new AuthorController(mockRepo); ActionResult result = target.Create(); //Assert Assert.IsInstanceOf <ViewResult>(result); }
public void Create_ShouldInsertItem() { string insertedFirstName = "TestedInsertFirstName"; string insertedLastName = "TestedInsertLastName"; var insertedAuthor = new AuthorItem { FirstName = insertedFirstName, LastName = insertedLastName }; var result = (AuthorItem)(_controller.Create(insertedAuthor) as ObjectResult).Value; Assert.Equal(insertedFirstName, result.FirstName); Assert.Equal(insertedLastName, result.LastName); }
public void Create_POST_InvalidModel_ReturnsCorrectView() { //Arrange IRepository mockRepo = Substitute.For <IRepository>(); mockRepo.Authors.Returns(_authors); //Act Author invalidModel = new Author(); AuthorController target = new AuthorController(mockRepo); ActionResult result = target.Create(invalidModel); //Assert Assert.IsInstanceOf <ViewResult>(result); Author model = (result as ViewResult).Model as Author; Assert.AreEqual(invalidModel, model); }
public void Create_POST_ValidModel_ReturnsCorrectView() { //Arrange IRepository mockRepo = Substitute.For <IRepository>(); Author validModel = new Author { FirstName = "FirstName", LastName = "LastName" }; mockRepo.Authors.Returns(_authors); //Act AuthorController target = new AuthorController(mockRepo); ActionResult result = target.Create(validModel); //Assert mockRepo.Received(1).AddAuthor(Arg.Any <Author>()); mockRepo.Received(1).SaveChanges(); Assert.IsInstanceOf <RedirectToActionResult>(result); Assert.AreEqual("Index", (result as RedirectToActionResult).ActionName); }
public void Create_GetCallReturnsAViewResultForEmptyAuthorObject() { //passing a fake value //it will do nothing. just to meet semtanic requirement //useful if the objects are not used inside var controller = new AuthorController(null, null, null); var result = controller.Create(); Assert.IsType <ViewResult>(result); var vr = result as ViewResult; //done by Controller by looking it HttpContext and other elements //Assert.Equal("Create", vr.ViewName); Assert.IsType <Author>(vr.Model); var author = vr.Model as Author; Assert.Null(author.Id); Assert.Null(author.Name); }