public async Task get_all_books()
        {
            // Arrange
            var repository = BookContextMocker.GetInMemoryBookRepository(nameof(get_all_books));
            var controller = new BookController(repository);

            // Act
            var response = await controller.GetAll() as ObjectResult;

            var books = response.Value as List <Book>;

            // Assert
            Assert.Equal(200, response.StatusCode);
            Assert.Equal(5, books.Count);
        }
        public async Task GetListContainingAllBooks_WhenCalledReturnsAllBooks()
        {
            //Arrange
            var moq = new Mock <IBookService>();

            moq.Setup(i => i.GetAllBooks()).ReturnsAsync(DummyBook());

            //Act
            var controller = new BookController(moq.Object);

            var all = await controller.GetListContainingAllBooks();

            //Assert
            Assert.NotNull(all);
        }
        public async Task PostABook_WhenNullIsPassed_ReturnsNotFound()
        {
            //Arrange
            var moq = new Mock <IBookService>();

            moq.Setup(i => i.CreateBook(null));

            //Act
            var controller = new BookController(moq.Object);

            var result = await controller.PostABook(null);

            //Assert
            Assert.IsType <NotFoundResult>(result);
        }
Пример #4
0
        /// <summary>
        /// Menu for handling book data
        /// </summary>
        public static void BookMenu()
        {
            bool isBookMenuRunning = true;

            while (isBookMenuRunning)
            {
                Console.Clear();
                ASCII.BookMenuASCII();
                Console.WriteLine("[1] List all books");
                Console.WriteLine("[2] Search books by title");
                Console.WriteLine("[3] Search books by author");
                Console.WriteLine("[4] Get book information by Id\n");

                Console.WriteLine("[5] Go back to main menu");
                Console.WriteLine("[6] Quit application");

                int.TryParse(Console.ReadLine(), out var bookMenuInput);

                switch (bookMenuInput)
                {
                case 1:
                    BookController.ListAllBooks();
                    break;

                case 2:
                    BookController.GetBooksByKeyword();
                    break;

                case 3:
                    BookController.GetBooksByAuthor();
                    break;

                case 4:
                    BookController.GetBookById();
                    break;

                case 5:
                    isBookMenuRunning = false;

                    break;

                case 6:
                    isBookMenuRunning = false;
                    MainMenuController.isMainMenuRunning = false;
                    break;
                }
            }
        }
Пример #5
0
        public void DeleteABook_VerifyOnce()
        {
            //Arrange
            var    mock2    = new Mock <IConfiguration>();
            string bookname = "Книга";
            var    mock     = new Mock <ILibService>();

            mock.Setup(x => x.DeleteABook(bookname, ""));
            BookController controller = new BookController(mock.Object, mock2.Object);

            //Act
            controller.DeleteABook(bookname);

            //Assert
            mock.Verify(x => x.DeleteABook(bookname, ""), Times.Once);
        }
        public void Will_Return_One_Review(int reviewId, string title, string body)
        {
            var fakeReview      = A.Fake <Review>();
            var bookServiceStub = A.Fake <IBookProvider>();

            A.CallTo(() => bookServiceStub.GetBookReview(A <int> ._)).Returns(fakeReview);

            var sut = new BookController(bookServiceStub);

            var review = sut.GetBookReview(reviewId);

            var manager = Fake.GetFakeManager(review);

            Assert.Equal(typeof(Review), manager.FakeObjectType);
            A.CallTo(() => bookServiceStub.GetBookReview(A <int> ._)).MustHaveHappened();
        }
        public void TestDeleteBooksNotInStock()
        {
            Mock <IBookView>          bookView          = new Mock <IBookView>();
            Mock <IBookRepository>    bookRepository    = new Mock <IBookRepository>();
            Mock <IBindingRepository> bindingRepository = new Mock <IBindingRepository>();
            var testBooks = GetTestBooksWithInStockTrue(10);

            testBooks[9].InStock = false;
            bookRepository.Setup(br => br.LoadBooks(It.IsAny <string>())).Returns(testBooks);
            var controller = new BookController(bookView.Object, bookRepository.Object, bindingRepository.Object);

            controller.LoadBooks("some path");
            controller.DeleteBooksNotInStock();

            Assert.AreEqual(9, controller.BooksCount);
        }
        public async Task get_book_by_isbn_with_not_existing_isbn_should_return_status_code_404()
        {
            // Arrange
            var repository = BookContextMocker.GetInMemoryBookRepository
                                 (nameof(get_book_by_isbn_with_not_existing_isbn_should_return_status_code_404));
            var mapperMock      = new Mock <IMapper>();
            var controller      = new BookController(repository, mapperMock.Object);
            var exceptedMessage = "Book with isbn '1111111111111' was not found ";

            //Act
            var response = await controller.GetByIsbn("1111111111111") as ObjectResult;

            //Assert
            response.StatusCode.Should().Be(404);
            response.Value.Should().BeEquivalentTo(exceptedMessage);
        }
        public void GetBook_Invalid_BookId()
        {
            //Arrange
            int BookId = 0;

            //Act
            bookServiceMoq.Setup(c => c.GetBook(BookId)).Returns(It.IsAny <Book>());
            var controller = new BookController(logger.Object, bookServiceMoq.Object, userService.Object, mailService.Object, taskService.Object);
            var result     = controller.GetBook(BookId);
            var BadRequest = result.Result as BadRequestObjectResult;

            // assert
            Assert.NotNull(BadRequest);
            Assert.Equal(400, BadRequest.StatusCode);
            Assert.Equal("Book Id is not Valid", BadRequest.Value);
        }
Пример #10
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            string  username = textBoxSearch.Text;
            dynamic user     = BookController.GetBook(username);

            if (user != null)
            {
                textBoxBookName.Text = user.Bookname;
            }
            else
            {
                textBoxBookName.Text = "";

                MessageBox.Show("No Bookname Found");
            }
        }
Пример #11
0
        public void GivenHttpGetVerb_WhenRequestHasNoParameterAndServiceHasNoBooks_ThenShouldReturnStatusNoContent()
        {
            // Arrange
            var service = new Mock <IBookService>();

            service.Setup(s => s.RetrieveByIsbn(It.IsAny <string>()));
            var controller = new BookController(service.Object);

            // Act
            var result = controller.Get() as ResponseMessageResult;

            // Assert
            service.Verify(s => s.RetrieveAll(), Times.Exactly(1));
            result.Should().BeOfType <ResponseMessageResult>();
            result.Response.StatusCode.ShouldBeEquivalentTo(204);
        }
        public void GetBookById_ExistingBook_ReturnsOk()
        {
            mockService.Setup(s => s.AddBook(It.IsAny <AddBookDto>()))
            .Returns(BookTestData.AddBookServiceResponse());
            mockService.Setup(s => s.GetBookById(It.IsAny <int>()))
            .Returns(BookTestData.GetSingleBookServiceResponse());

            BookController bookController = new BookController(mockService.Object);
            AddBookDto     newBook        = BookTestData.AddBookDto();

            bookController.AddBook(newBook);

            var result = bookController.GetSingleBook(1);

            Assert.That(result, Is.InstanceOf <OkObjectResult>());
        }
Пример #13
0
        public void CreateGet()
        {
            // Arrange
            BookController controller = new BookController(
                booksServiceMock.Object,
                pagesServiceMock.Object,
                pageConnectionsServiceMock.Object,
                usersServiceMock.Object
                );

            // Act
            ViewResult result = controller.Create() as ViewResult;

            // Assert
            Assert.IsNotNull(result);
        }
Пример #14
0
        public void AddBookTest()
        {
            // Arrange
            var repo           = new FakeBookRepository();
            var bookController = new BookController(repo);

            // Act
            bookController.AddBook(new Book()
            {
                Title   = "A Tale of Two Cities",
                PubDate = DateTime.Parse("1/1/1859")
            });
            // Assert
            Assert.Equal("A Tale of Two Cities",
                         repo.Books[repo.Books.Count - 1].Title);
        }
Пример #15
0
        public void OverdueBooks_Get_Action_Returns_Empty_ViewResult_When_Not_Available()
        {
            //Arrange
            var repository = new FakeBookRepository();

            repository.context.BooksBorrowed.Clear();
            var modelState      = new Mock <IValidationDictionary>();
            var mockBookService = new FakeBookService(modelState.Object, repository);
            var controller      = new BookController(mockBookService);

            //Act
            var result = controller.ListOverdueBooks() as ViewResult;

            //Assert
            Assert.AreEqual("Empty", result.ViewName);
        }
Пример #16
0
        public void GivenHttpGetVerb_WhenRequestParameterDoesNotIdentifyAnExistingBook_ThenShouldReturnStatusNotFound()
        {
            // Arrange
            string isbn    = null;
            var    service = new Mock <IBookService>();

            service.Setup(s => s.RetrieveByIsbn(isbn)).Returns(null as Book);
            var controller = new BookController(service.Object);

            // Act
            var result = controller.Get(isbn);

            // Assert
            service.Verify(s => s.RetrieveByIsbn(isbn), Times.Exactly(1));
            result.Should().BeOfType <NotFoundResult>();
        }
Пример #17
0
        public void AddBookTest()
        {
            // Arrange
            var repo           = new FakeBookRepository();
            var bookController = new BookController(repo);

            // Act
            bookController.AddBook(new Book()
            {
                Title = "A Tale of Two Cities"
            }, "Charles Dickens");

            // Assert
            Assert.Equal("A Tale of Two Cities",
                         repo.Books.Last().Title);
        }
Пример #18
0
        public void GivenHttpDeleteVerb_WhenRequestParameterIsInvalidIsbn_ThenShouldReturnStatusNotFound()
        {
            // Arrange
            string isbn    = null;
            var    service = new Mock <IBookService>();

            service.Setup(s => s.Delete(isbn));
            var controller = new BookController(service.Object);

            // Act
            var result = controller.Delete(isbn);

            // Assert
            service.Verify(s => s.Delete(It.IsAny <string>()), Times.Never);
            result.Should().BeOfType <NotFoundResult>();
        }
        public async void AddBookReturnsFase()
        {
            //Arrange
            var mockService  = new Mock <IBookService>();
            var mockMerdiatR = new Mock <IMediator>();

            _bookController = new BookController(mockService.Object, mockMerdiatR.Object);
            _bookController.ModelState.AddModelError("Name", "Required");
            Book newBook = new Book();

            //Act
            var isBookAdded = await _bookController.AddNewBook(newBook);

            //Assert
            Assert.Equal(false, isBookAdded.Value);
        }
        public void GetAllBooksReturnsListOfBooks()
        {
            // Arrange
            var mockService  = new Mock <IBookService>();
            var mockMerdiatR = new Mock <IMediator>();

            mockService.Setup(s => s.GetAllBooks()).Returns(GetTestBooks());
            _bookController = new BookController(mockService.Object, mockMerdiatR.Object);

            // Act
            ActionResult <List <Book> > books = _bookController.GetAllBooks();

            // Assert
            Assert.NotEqual(null, books.Value);
            Assert.Equal(4, books.Value.Count);
        }
        public async Task get_book_with_existing_id()
        {
            // Arrange
            var repository    = BookContextMocker.GetInMemoryBookRepository(nameof(get_book_with_existing_id));
            var controller    = new BookController(repository);
            var expectedTitle = "Zbrodnia i kara";

            // Act
            var response = await controller.Get(1) as ObjectResult;

            var book = response.Value as Book;

            // Assert
            Assert.Equal(StatusCodes.Status200OK, response.StatusCode);
            Assert.Equal(expectedTitle, book.Title);
        }
Пример #22
0
        public void GetAllBooks_ReturnsOk()
        {
            dbContext.Database.EnsureDeleted();
            dbContext.Database.EnsureCreated();

            AddBookDto newBook = GetAddBookDto();

            BookService    bookService    = new BookService(mapper, dbContext);
            BookController bookController = new BookController(bookService);

            bookController.AddBook(newBook);

            var result = bookController.Get();

            Assert.That(result, Is.InstanceOf <OkObjectResult>());
        }
Пример #23
0
        public void CategoryTest()
        {
            //Arrange
            //Макет репозитория
            Mock <IRepository <Book> > mock = new Mock <IRepository <Book> >();

            mock.Setup(x => x.GetAll()).Returns(new List <Book> {
                new Book {
                    BookId = 1, CategoryName = "1"
                },
                new Book {
                    BookId = 2, CategoryName = "2"
                },
                new Book {
                    BookId = 3, CategoryName = "1"
                },
                new Book {
                    BookId = 4, CategoryName = "2"
                },
                new Book {
                    BookId = 5, CategoryName = "2"
                }
            });
            //создание объекта контроллера
            BookController controller = new BookController(mock.Object);
            //Макет для получения HttpContext HttpRequest
            Mock <HttpRequestBase> request     = new Mock <HttpRequestBase>();
            Mock <HttpContextBase> httpContext = new Mock <HttpContextBase>();

            httpContext.Setup(x => x.Request).Returns(request.Object);
            //Создание контекста контроллера
            controller.ControllerContext             = new ControllerContext();
            controller.ControllerContext.HttpContext = httpContext.Object;

            //Act
            //Вызов метода List
            ViewResult view = controller.List("1", 1) as ViewResult;

            //Assert
            Assert.IsNotNull(view, "Представление получено");
            Assert.IsNotNull(view.Model, "Модель получена");
            PageListViewModel <Book> model = view.Model as PageListViewModel <Book>;

            Assert.AreEqual(2, model.Count);
            Assert.AreEqual(1, model[0].BookId);
            Assert.AreEqual(3, model[1].BookId);
        }
        public void Can_Send_Pagination_View_Model()
        {
            Mock <IBookRepository> mock = new Mock <IBookRepository>();

            mock.Setup(b => b.Books).Returns(
                new Book[]
            {
                new Book {
                    BookId = 1, Author = "Auth1", Category = "Drama", Description = "Desc", Price = 23.3m, Title = "Book1"
                },
                new Book {
                    BookId = 2, Author = "Auth2", Category = "Drama", Description = "Desc", Price = 10.2m, Title = "Book2"
                },
                new Book {
                    BookId = 3, Author = "Auth3", Category = "Drama", Description = "Desc", Price = 11.8m, Title = "Book3"
                },
                new Book {
                    BookId = 4, Author = "Auth4", Category = "Drama", Description = "Desc", Price = 78.2m, Title = "Book4"
                },
                new Book {
                    BookId = 5, Author = "Auth5", Category = "Drama", Description = "Desc", Price = 15.0m, Title = "Book5"
                },
                new Book {
                    BookId = 6, Author = "Auth6", Category = "Drama", Description = "Desc", Price = 45.1m, Title = "Book6"
                },
                new Book {
                    BookId = 7, Author = "Auth7", Category = "Drama", Description = "Desc", Price = 40.4m, Title = "Book7"
                },
                new Book {
                    BookId = 8, Author = "Auth8", Category = "Drama", Description = "Desc", Price = 80.5m, Title = "Book8"
                }
            }

                );
            BookController controller = new BookController(mock.Object);

            controller.pageSize = 3;

            BookListViewModel model = controller.List(null, 2).Model as BookListViewModel;

            PagingInfo pageInfo = model.pagingInfo;

            Assert.AreEqual(pageInfo.CurrentPage, 2);
            Assert.AreEqual(pageInfo.ItemsPerPage, 3);
            Assert.AreEqual(pageInfo.TotalItems, 8);
            Assert.AreEqual(pageInfo.TotalPages, 3);
        }
Пример #25
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));
        }
Пример #26
0
        public void GivenHttpGetVerb_WhenRequestHasNoParameterAndServiceHasBooks_ThenShouldReturnAListOfBooksAndStatusOk()
        {
            // Arrange
            var books   = BookStub.CreateListOfSize(SIZE);
            var service = new Mock <IBookService>();

            service.Setup(s => s.RetrieveAll()).Returns(books);
            var controller = new BookController(service.Object);

            // Act
            var result = controller.Get() as OkNegotiatedContentResult <List <Book> >;

            // Assert
            service.Verify(s => s.RetrieveAll(), Times.Exactly(1));
            result.Should().BeOfType <OkNegotiatedContentResult <List <Book> > >();
            result.Content.ShouldAllBeEquivalentTo(books);
        }
Пример #27
0
        public void GivenHttpGetVerb_WhenRequestParameterIdentifiesAnExistingBook_ThenShouldReturnStatusOkAndTheBook()
        {
            // Arrange
            var book    = BookStub.CreateNew();
            var service = new Mock <IBookService>();

            service.Setup(s => s.RetrieveByIsbn(book.Isbn)).Returns(book);
            var controller = new BookController(service.Object);

            // Act
            var result = controller.Get(book.Isbn) as OkNegotiatedContentResult <Book>;

            // Assert
            service.Verify(s => s.RetrieveByIsbn(It.IsAny <string>()), Times.Exactly(1));
            result.Should().BeOfType <OkNegotiatedContentResult <Book> >();
            result.Content.ShouldBeEquivalentTo(book);
        }
Пример #28
0
        public void IndexTest()
        {
            // Arrange
            var repo = new FakeBookRepository();

            AddTestBooks(repo);
            var bookController = new BookController(repo);

            // Act - get a list of books sorted by title in ascending order
            var result = (ViewResult)bookController.Index();
            var books  = (List <Book>)result.Model;

            // Assert that book titles are in ascending order.
            // This implicitly checks that there are three books in the list as well.
            Assert.True(string.Compare(books[0].Title, books[1].Title) < 0 &&
                        string.Compare(books[1].Title, books[2].Title) < 0);
        }
Пример #29
0
        public void TestDeleteConfirmedRedirect()
        {
            // Arrange
            BookController controller = new BookController();

            // Act
            var bookList = db.BookTbls.ToList();

            Random rnd = new Random();
            int    r   = rnd.Next(1, bookList.Count);

            var selectedId = bookList[r].Id;
            var result     = controller.DeleteConfirmed(selectedId) as RedirectToRouteResult;

            // Assert
            Assert.AreEqual("Index", result.RouteValues["action"].ToString());
        }
        public async Task delete_existing_book()
        {
            // Arrange
            var repository = BookContextMocker.GetInMemoryBookRepository(nameof(delete_existing_book));
            var controller = new BookController(repository);

            // Act
            var response = await controller.Delete(3);

            var getBooks = await controller.GetAll() as ObjectResult;

            var books = getBooks.Value as List <Book>;

            // Assert
            Assert.IsType <OkResult>(response);
            Assert.Equal(2, books.Count);
        }
Пример #31
0
 public void TestCleanup()
 {
     _mockService = null;
     _controller.Dispose();
     _controller = null;
 }
Пример #32
0
 public void TestInitialize()
 {
     MappingConfig.RegisterMappings();
     _mockService = MockRepository.GenerateMock<IBookService>();
     _controller = new BookController(_mockService);
 }