public void GetAllCards_Returns200Ok_WhenDBHasOneResource()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetAllCards()).Returns(GetCodeCards(1));

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetAllCards();

            //Assert
            Assert.IsType <OkObjectResult>(result.Result);
        }
        public void GetCodeCardById_Returns404NotFound_WhenNonExistentIDProvided()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(0)).Returns(() => null);

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetCodeCardById(1);

            //Assert
            Assert.IsType <NotFoundResult>(result.Result);
        }
        public void GetAllCards_ReturnsTheCorrectType_WhenDBHasOneResource()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetAllCards()).Returns(GetCodeCards(1));

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetAllCards();

            //Assert
            Assert.IsType <ActionResult <IEnumerable <CodeCardReadDto> > >(result);
        }
        public void PartialCodeCardUpdate_Returns404NotFound_WhenNonExistentResourceIDSubmitted()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(0)).Returns(() => null);

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.PartialCodeCardUpdate(0, new Microsoft.AspNetCore.JsonPatch.JsonPatchDocument <CodeCardUpdateDto> {
            });

            //Assert
            Assert.IsType <NotFoundResult>(result);
        }
        public void UpdateCodeCard_Returns404NotFound_WhenNonExistentResourceIDSubmitted()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(0)).Returns(() => null);

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.UpdateCodeCard(0, new CodeCardUpdateDto {
            });

            //Assert
            Assert.IsType <NotFoundResult>(result);
        }
        public void GetAllCards_ReturnsOneResource_WhenDBHasOneResource()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetAllCards()).Returns(GetCodeCards(1));

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetAllCards();
            //Assert
            var okResult  = result.Result as OkObjectResult;
            var codeCards = okResult.Value as List <CodeCardReadDto>;

            Assert.Single(codeCards);
        }
        public void GetAllCards_ReturnNItems_WhenDBHasNResources()
        {
            //Arrange
            var rand = new Random();
            var num  = rand.Next(21);

            mockRepo.Setup(repo =>
                           repo.GetAllCards()).Returns(GetCodeCards(num));

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetAllCards();
            //Assert
            var okResult  = result.Result as OkObjectResult;
            var codeCards = okResult.Value as List <CodeCardReadDto>;

            Assert.Equal(num, codeCards.Count());
        }
        public void GetCodeCardByIdReturnsTheCorrectType()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(1)).Returns(
                new CodeCard
            {
                CardId           = 1,
                Challenge        = "Mock",
                JavaAnswer       = "Mock",
                JavaScriptAnswer = "Mock",
                PythonAnswer     = "Mock",
                CAnswers         = "Mock"
            }
                );

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetCodeCardById(1);

            //Assert
            Assert.IsType <ActionResult <CodeCardReadDto> >(result);
        }
        public void GetCodeCardById_Returns200Ok_WhenValidIDProvided()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(1)).Returns(
                new CodeCard
            {
                CardId           = 1,
                Challenge        = "Mock",
                JavaAnswer       = "Mock",
                JavaScriptAnswer = "Mock",
                PythonAnswer     = "Mock",
                CAnswers         = "Mock"
            }
                );

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.GetCodeCardById(1);

            //Assert
            Assert.IsType <OkObjectResult>(result.Result);
        }
        public void UpdateCodeCard_Returns204NoContent_WhenValidObjectSubmitted()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(1)).Returns(
                new CodeCard
            {
                CardId           = 1,
                Challenge        = "Mock",
                JavaAnswer       = "Mock",
                JavaScriptAnswer = "Mock",
                PythonAnswer     = "Mock",
                CAnswers         = "Mock"
            }
                );

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.UpdateCodeCard(1, new CodeCardUpdateDto {
            });

            //Assert
            Assert.IsType <NoContentResult>(result);
        }
        public void CreateCodeCard_ReturnsCorrectResourceType_WhenValidObject()
        {
            //Arrange
            mockRepo.Setup(repo =>
                           repo.GetCodeCardById(1)).Returns(
                new CodeCard
            {
                CardId           = 1,
                Challenge        = "Mock",
                JavaAnswer       = "Mock",
                JavaScriptAnswer = "Mock",
                PythonAnswer     = "Mock",
                CAnswers         = "Mock"
            }
                );

            var controller = new CodeCardController(mockRepo.Object, mapper);
            //Act
            var result = controller.CreateCodeCard(new CodeCardCreateDto {
            });

            //Assert
            Assert.IsType <ActionResult <CodeCardReadDto> >(result);
        }