Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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);
        }