public void Task_Edit_BookCategory_Return_View()
        {
            Assert.Throws <NotImplementedException>(() =>
            {
                //Arrange
                var controller = new BookCategoryController(context);
                int id         = 1;


                var bookcategory = new BookCategory()
                {
                    BookCategoryId          = 1,
                    BookCategoryName        = "Horror",
                    BookCategoryDescription = "description",
                    BookCategoryImage       = "image",
                };

                //Act

                var EditData = controller.Edit(id, bookcategory);

                //Assert
                Assert.IsType <ViewResult>(EditData);
            });
        }
        public async void Task_GetBookCategoryById_Return_OkResult()
        {
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 1;
            var data           = await controller.Get(BookCategoryId);

            Assert.IsType <OkObjectResult>(data);
        }
        public async void Task_GetBookCategoryById_Return_NotFound()
        {
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 6;
            var data           = await controller.Get(BookCategoryId);

            Assert.IsType <NotFoundResult>(data);
        }
        public void Task_GetBookById_Return_OkResult()
        {
            var controller = new BookCategoryController(context);
            var BookId     = 8;
            var data       = controller.Display(BookId);

            Assert.IsType <ViewResult>(data);
        }
        public async void Task_DeleteCategory_Return_BadRequest()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            int?id         = null;
            //Act
            var data = await controller.Get(id);

            //Assert
            Assert.IsType <BadRequestResult>(data);
        }
        public async void Task_DeleteCategory_Return_OkResult()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            var id         = 11;
            //Act
            var data = await controller.Delete(id);

            //Assert
            Assert.IsType <OkObjectResult>(data);
        }
        public void Task_DeleteBookCategory_Return_View()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            var id         = 1;
            //Act
            var data = controller.Delete(id);

            //Assert
            Assert.IsType <ViewResult>(data);
        }
        public async void Task_Get_All_BookCategories_Return_OkResult()
        {
            //Arrange
            var controller = new BookCategoryController(context);

            //Act
            var data = await controller.Get();

            //Assert
            Assert.IsType <OkObjectResult>(data);
        }
        public void Task_Get_All_Category_Return_OkResult()
        {
            //Arrange
            var controller = new BookCategoryController(context);

            //Act
            var data = controller.Index();

            //Assert
            Assert.IsType <ViewResult>(data);
        }
        public async void Task_Delete_Return_NotFound()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            var id         = 10;

            //Act

            var data = await controller.Delete(id);

            //Assert

            Assert.IsType <NotFoundResult>(data);
        }
        public async void Task_GetBookCategoryById_Return_MatchedData()
        {
            //Arrange
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 1;

            //Act

            var data = await controller.Get(BookCategoryId);

            //Assert
            Assert.IsType <OkObjectResult>(data);
            var okResult     = data.Should().BeOfType <OkObjectResult>().Subject;
            var bookCategory = okResult.Value.Should().BeAssignableTo <BookCategory>().Subject;

            Assert.Equal("Mystery", bookCategory.BookCategoryName);
            Assert.Equal("https://cdn2.bigcommerce.com/server1500/ac84d/products/1019/images/2196/Mystery_-_Logo_%2526_Name_Logo__35697.1326392559.380.380.jpg?c=2", bookCategory.BookCategoryImage);
        }
        public async void Task_Add_Category_Return_BadRequest()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            var bk         = new BookCategory()
            {
                BookCategoryName        = "MathsMathsMathsMathsMathsMaths",
                BookCategoryDescription = "Maths Desc",
                BookCategoryImage       = "pic123"
            };

            //Act

            var data = await controller.Post(bk);

            //Assert
            Assert.IsType <BadRequestResult>(data);
        }
        public async void Task_Update_Category_Return_OkResult()
        {
            //Arrange
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 11;

            //Assert
            var editBookCategory = new BookCategory()
            {
                BookCategoryId          = 11,
                BookCategoryName        = "Baba",
                BookCategoryDescription = "Baba Desc",
                BookCategoryImage       = "img123"
            };
            var updateData = await controller.Put(BookCategoryId, editBookCategory);

            Assert.IsType <OkObjectResult>(updateData);
        }
        public async void Task_Add_BookCategory_Return_BadRequest()
        {
            //Arrange
            var controller   = new BookCategoryController(context);
            var bookCategory = new BookCategory()
            {
                BookCategoryName        = "AutoBiography",
                BookCategoryDescription = "An account of a person's life written by that person.",
                BookCategoryImage       = "https://images-na.ssl-images-amazon.com/images/I/51ZNnb4qOtL._SX425_.jpg"
            };

            //Act

            var data = await controller.Post(bookCategory);

            //Assert
            Assert.IsType <BadRequestResult>(data);
        }
        public async void Task_Add_Category_Return_OkResult()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            var bk         = new BookCategory()
            {
                BookCategoryName        = "English",
                BookCategoryDescription = "English Desc",
                BookCategoryImage       = "img333"
            };

            //Act

            var data = await controller.Post(bk);

            //Assert
            Assert.IsType <CreatedAtActionResult>(data);
        }
        public async void Task_GetCategoryById_Return_MatchedData()
        {
            //Arrange
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 1;

            //Act

            var data = await controller.Get(BookCategoryId);

            //Assert
            Assert.IsType <OkObjectResult>(data);
            var okResult = data.Should().BeOfType <OkObjectResult>().Subject;
            var bk       = okResult.Value.Should().BeAssignableTo <BookCategory>().Subject;

            Assert.Equal("Fiction", bk.BookCategoryName);
            Assert.Equal("Fiction Desc", bk.BookCategoryDescription);
        }
        public async void Task_Get_All_BookCategories_Return_NotFound()
        {
            //Arrange
            var controller = new BookCategoryController(context);

            //Act
            var data = await controller.Get();

            data = null;


            //Assert
            if (data != null)
            {
                Assert.IsType <OkObjectResult>(data);
            }
            else
            {
                Assert.Equal(data, null);
            }
        }
        public async void Task_Update_BookCategory_Return_BadRequest()
        {
            //Arrange
            var controller = new BookCategoryController(context);
            int?id         = null;

            var bookCategory = new BookCategory()
            {
                BookCategoryName        = "Mystery",
                BookCategoryDescription = "Mystery fiction is a genre of fiction usually involving a mysterious death or a crime to be solved. Often with a closed circle of suspects, each suspect is usually provided with a credible motive and a reasonable opportunity for committing the crime.",
                BookCategoryImage       = "https://cdn2.bigcommerce.com/server1500/ac84d/products/1019/images/2196/Mystery_-_Logo_%2526_Name_Logo__35697.1326392559.380.380.jpg?c=2"
            };

            //Act

            var data = await controller.Put(id, bookCategory);

            //Assert

            Assert.IsType <BadRequestResult>(data);
        }
        public async void Task_Update_Category_Return_NotFound()
        {
            //Arrange
            var controller     = new BookCategoryController(context);
            var BookCategoryId = 10;

            var bk = new BookCategory()
            {
                BookCategoryId          = 1,
                BookCategoryName        = "Delhi Publisher",
                BookCategoryDescription = "New Delhi Publishers is an International repute publisher with an orientation towards research, practical and Technical Applications.",
                BookCategoryImage       = "123"
            };

            //Act

            var data = await controller.Put(BookCategoryId, bk);

            //Assert

            Assert.IsType <NotFoundResult>(data);
        }
        public async void Task_Add_BookCategory_Return_OkResult()
        {
            //Arrange
            var controller   = new BookCategoryController(context);
            var bookCategory = new BookCategory()
            {
                //BookCategoryName = "Mystery",
                //BookCategoryDescription = "Mystery fiction is a genre of fiction usually involving a mysterious death or a crime to be solved. Often with a closed circle of suspects, each suspect is usually provided with a credible motive and a reasonable opportunity for committing the crime.",
                //BookCategoryImage = "123"


                BookCategoryName        = "Autobiography",
                BookCategoryDescription = "An account of a person's life written by that person.",
                BookCategoryImage       = "https://images-na.ssl-images-amazon.com/images/I/51ZNnb4qOtL._SX425_.jpg"
            };

            //Act

            var data = await controller.Post(bookCategory);

            //Assert
            Assert.IsType <CreatedAtActionResult>(data);
        }