public FaqControllerTests()
 {
     faqService          = Mock.Create <IFaqService>();
     nomenclatureService = Mock.Create <INomenclatureService>();
     faqController       = new FaqController(Logger, Mapper, ContextManager, ResourceManager, faqService, nomenclatureService);
     InitContext();
 }
        public async void TestDeleteFaqCategoryCalled()
        {
            FaqCategory cat = new FaqCategory {
                Id = 1, CategoryName = "Test"
            };

            Mock <IFaqRepository> mock = new Mock <IFaqRepository>();

            mock.Setup(m => m.GetCategoriesAndQuestions()).Returns(new FaqCategory[] {
                new FaqCategory {
                    Id = 1, CategoryName = "Test2"
                }, cat, new FaqCategory {
                    Id = 3, CategoryName = "Test33"
                },
            });

            IFaqManager manager = new FaqManager(mock.Object);

            FaqController target = new FaqController(manager);
            //try to delete
            await target.DeleteCategory(cat.Id);

            //Check if DeleteCategory is called
            mock.Verify(m => m.DeleteCategory(cat.Id));
        }
        public void TestFilledFaqList()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            HomeMyDayDbContext context = new HomeMyDayDbContext(optionsBuilder.Options);

            context.FaqCategory.AddRange(
                new FaqCategory()
            {
                CategoryName = "TestA"
            },
                new FaqCategory()
            {
                CategoryName = "TestB"
            },
                new FaqCategory()
            {
                CategoryName = "TestC"
            }
                );
            context.SaveChanges();

            IFaqRepository repository = new EFFaqRepository(context);
            IFaqManager    manager    = new FaqManager(repository);

            var target = new FaqController(manager);
            var result = target.Index(1, 10).Result as ViewResult;
            var model  = result.Model as IEnumerable <FaqCategory>;

            Assert.NotNull(model);
            Assert.True(model.Count() == 3);
        }
        public void GetQuestionByID_Returns404NotFound_WhenIDDoesNotExist()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(0)).Returns(() => null);

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.GetQuestionById(1);

            Assert.IsType <NotFoundResult>(result.Result);
        }
        public void GetQuestions_ReturnsCorrectType_WhenDBHasOneResource()
        {
            mockRepo.Setup(repo => repo.GetAllQuestions()).Returns(GetQuestions(1));

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.GetAllQuestions();

            Assert.IsType <ActionResult <IEnumerable <FaqReadDto> > >(result);
        }
        public void GetQuestions_Returns200OK_WhenDBHasOneResource()
        {
            mockRepo.Setup(repo => repo.GetAllQuestions()).Returns(GetQuestions(1));

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.GetAllQuestions();

            Assert.IsType <OkObjectResult>(result.Result);
        }
        public void UpdateQuestion_Returns404NotFound_WhenIDDoesNotExist()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(0)).Returns(() => null);

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.UpdateQuestion(0, new JsonPatchDocument <FaqUpdateDto> {
            });

            Assert.IsType <NotFoundResult>(result);
        }
        public void GetQuestions_ReturnsOneItem_WhenDBHasOneResource()
        {
            mockRepo.Setup(repo => repo.GetAllQuestions()).Returns(GetQuestions(1));

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.GetAllQuestions();

            var okResult = result.Result as OkObjectResult;

            var questions = okResult.Value as List <FaqReadDto>;

            Assert.Single(questions);
        }
        public void DeleteQuestion_Returns204NoContent_WhenIDExists()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(1)).Returns(new Faq {
                Id       = 1,
                Question = "Who is White Canary?",
                Answer   = "Sara Lance"
            });

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.DeleteQuestion(1);

            Assert.IsType <NoContentResult>(result);
        }
        public void GetQuestionByID_ReturnsCorrectType_WhenIDExists()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(1)).Returns(new Faq {
                Id       = 1,
                Question = "Who is White Canary?",
                Answer   = "Sara Lance"
            });

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.GetQuestionById(1);

            Assert.IsType <ActionResult <FaqReadDto> >(result);
        }
        public void UpdateQuestion_Returns204NoContent_WhenValidObjectSubmitted()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(1)).Returns(new Faq {
                Id       = 1,
                Question = "Who is White Canary?",
                Answer   = "Sara Lance"
            });

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.UpdateQuestion(1, new JsonPatchDocument <FaqUpdateDto> {
            });

            Assert.IsType <NoContentResult>(result);
        }
        public void CreateQuestion_Returns201Created_WhenValidObjectSubmitted()
        {
            mockRepo.Setup(repo => repo.GetQuestionById(1)).Returns(new Faq {
                Id       = 1,
                Question = "Who is White Canary?",
                Answer   = "Sara Lance"
            });

            var controller = new FaqController(mockRepo.Object, mapper);

            var result = controller.CreateQuestion(new FaqCreateDto {
            });

            Assert.IsType <CreatedAtRouteResult>(result.Result);
        }
        public void TestEmptyFaqList()
        {
            var optionsBuilder = new DbContextOptionsBuilder <HomeMyDayDbContext>();

            optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
            HomeMyDayDbContext context    = new HomeMyDayDbContext(optionsBuilder.Options);
            IFaqRepository     repository = new EFFaqRepository(context);
            IFaqManager        manager    = new FaqManager(repository);

            var target = new FaqController(manager);
            var result = target.Index(1, 10).Result as ViewResult;
            var model  = result.Model as IEnumerable <FaqCategory>;

            Assert.NotNull(model);
            Assert.True(!model.Any());
        }
        public async void TestEditCategoryCalled()
        {
            Mock <IFaqRepository> mock    = new Mock <IFaqRepository>();
            IFaqManager           manager = new FaqManager(mock.Object);

            FaqController target = new FaqController(manager);

            FaqCategory cat = new FaqCategory {
                Id = 1, CategoryName = "Test"
            };

            // try to save
            IActionResult result = await target.EditCategory(cat);

            //check that the repository was called
            mock.Verify(m => m.SaveCategory(cat));

            //check the result type is a redirection
            Assert.IsType <RedirectToActionResult>(result);
            Assert.Equal("Index", (result as RedirectToActionResult).ActionName);
        }