public void Can_Edit_Book() { // Arrange - создаем Mock-контейнер Mock <IBookContainer> mock = new Mock <IBookContainer>(); mock.Setup(book => book.Books).Returns(new List <Book> { new Book { BookId = 1, Title = "P1" }, new Book { BookId = 2, Title = "P2" }, new Book { BookId = 3, Title = "P3" }, }.AsQueryable()); //Создаем экземпляр контроллера BookController controller = new BookController(mock.Object); // Act Book book1 = (Book)controller.EditBook(1).Model; Book book2 = (Book)controller.EditBook(2).Model; Book book3 = (Book)controller.EditBook(3).Model; // Assert Assert.AreEqual(1, book1.BookId); Assert.AreEqual(2, book2.BookId); Assert.AreEqual(3, book3.BookId); }
public void Book_EditBook_Should_Return_Model_State_Invalid() { var book = new EditBookViewModel { Id = 1 }; _bookController.ModelState.AddModelError("test", "error"); var response = _bookController.EditBook(book); Assert.IsInstanceOf <InvalidModelStateResult>(response); }
public void Cannot_Edit_Nonexistent_Book() { // Arrange - создаем Mock-контейнер Mock <IBookContainer> mock = new Mock <IBookContainer>(); mock.Setup(book => book.Books).Returns(new List <Book> { new Book { BookId = 1, Title = "P1" }, new Book { BookId = 2, Title = "P2" }, new Book { BookId = 3, Title = "P3" }, }.AsQueryable()); //Создаем экземпляр контроллера BookController controller = new BookController(mock.Object); // Act var bookResult = controller.EditBook(4); // Assert Assert.IsNull(bookResult); }
public void Can_Save_Valid_Changes() { //создаем cookie var cookies = new HttpCookieCollection(); //Создаем HttpContext и присваиваем cookies для Request и Response var mockHttpContext = Substitute.For <HttpContextBase>(); mockHttpContext.Request.Cookies.Returns(cookies); mockHttpContext.Response.Cookies.Returns(cookies); //Определяем путь к виртуальному корневому каталогу mockHttpContext.Request.ApplicationPath.Returns("/"); //Добавление пути файла к виртуальному пути (для использования UrlHelper'a) mockHttpContext.Response.ApplyAppPathModifier(It.IsAny <string>()).Returns("/mynewVirtualPath/"); // Arrange - создаем Mock-контейнеры для книги и для автора Mock <IBookContainer> mock = new Mock <IBookContainer>(); //Добавляем одного автора в mockAuthor Author author = new Author { AuthorId = 1, FirstName = "Иван", SecondName = "Иванов" }; mock.Setup(auth => auth.Authors).Returns(new List <Author> { author }.AsQueryable()); //Создаем экземпляр контроллера и присваиваем HttpContext BookController controller = new BookController(mock.Object); //Определяем контект контроллера controller.ControllerContext = new ControllerContext { Controller = controller, HttpContext = mockHttpContext }; //Инициализируем Url controller.Url = new UrlHelper(new RequestContext(controller.HttpContext, new RouteData())); Book book = new Book { Title = "testBook", AuthorsList = "Иван Иванов, Дмитрий Петров" }; // Act - вызываем Post-метод редактирования (сохранения) книги ActionResult result = controller.EditBook(book); // Assert //Проверяем количество вызванных SaveBook для книги mock.Verify(b => b.SaveBook(book), Times.Once()); //Проверяем количество вызванных SaveNewAuthor для автора mock.Verify(auth => auth.SaveNewAuthor(It.IsAny <Author>()), Times.Exactly(2)); // Проверяем тип результата Assert.IsInstanceOfType(result, typeof(PartialViewResult)); }
public void EditBook_InvalidModeStade_BadRequest() { //Arrange var bookstore = new Bookstore(); var controller = new BookController(_bookServiceMock.Object); controller.ModelState.AddModelError("ModelError", "ModelError"); //Act var action = controller.EditBook(bookstore); //Assert Assert.IsTrue(action is InvalidModelStateResult); }
public void Cannot_Save_Invalid_Changes() { //Создаем HttpContext и присваиваем cookies для Request и Response var mockHttpContext = Substitute.For <HttpContextBase>(); //Определяем путь к виртуальному корневому каталогу mockHttpContext.Request.ApplicationPath.Returns("/"); //Добавление пути файла к виртуальному пути (для использования UrlHelper'a) mockHttpContext.Response.ApplyAppPathModifier(It.IsAny <string>()).Returns("/mynewVirtualPath/"); // Arrange - создаем Mock-контейнеры для книги и для автора Mock <IBookContainer> mock = new Mock <IBookContainer>(); //Создаем экземпляр контроллера и присваиваем HttpContext BookController controller = new BookController(mock.Object); //Определяем контект контроллера controller.ControllerContext = new ControllerContext { Controller = controller, HttpContext = mockHttpContext }; //Инициализируем Url controller.Url = new UrlHelper(new RequestContext(controller.HttpContext, new RouteData())); // Создаем новую книгу Book book = new Book { Title = "testBook" }; // Добавляем ошибку уровня модели controller.ModelState.AddModelError("Error", "Error in model"); // Act - вызываем Post-метод редактирования (сохранения) книги ActionResult result = controller.EditBook(book); // Assert //Проверяем количество вызванных SaveBook для книги mock.Verify(b => b.SaveBook(It.IsAny <Book>()), Times.Never()); //Проверяем количество вызванных SaveNewAuthor для автора mock.Verify(auth => auth.SaveNewAuthor(It.IsAny <Author>()), Times.Never()); // Проверяем тип результата Assert.IsInstanceOfType(result, typeof(PartialViewResult)); }
public void InValid_EditBook() { Mock <IDatabase> mock = new Mock <IDatabase>(); mock.Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <Dictionary <string, object> >())).Returns(1); BookController bookcontroller = new BookController(mock.Object); Book book = new Book(); book.SetBookID(0); book.SetName("Times"); book.SetAuthor("David Stanley"); book.SetStatus("Available"); book.SetPrice(25); book.SetRackno(12); book.SetCount(0); var result = bookcontroller.EditBook(book) as RedirectToRouteResult; Assert.IsNotNull(result); }