public async Task Post_ReturnsCodeServiceUserDTO_GivenCodeServiceUserDTO()
        {
            // Arrange
            var mockRepo = new Mock <ICodeServiceUserService>();
            var dbMock   = GetItem();

            mockRepo.Setup(x => x.Post(It.IsAny <CodeServiceUser>()))
            .Returns(dbMock).Verifiable();

            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = await controller.Post(
                new CodeServiceUserDTO(1, "Code One", 2, "Service Two", "moqUser", false));

            // Assert
            mockRepo.VerifyAll();
            var okResult   = Assert.IsType <OkObjectResult>(result);
            var returnItem = Assert.IsType <CodeServiceUserDTO>(okResult.Value);

            Assert.Equal(1, returnItem.CodeId);
            Assert.Equal("Code One", returnItem.CodeName);
            Assert.Equal(2, returnItem.ServiceId);
            Assert.Equal("Service Two", returnItem.ServiceName);
            Assert.Equal("moqUser", returnItem.UserName);
            Assert.False(returnItem.Enabled);
        }
        public void FromDTO_ReturnsCodeServiceUser_GivenCodeServiceUserDTO()
        {
            // Arrange
            var mockRepo   = new Mock <ICodeServiceUserService>();
            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = controller.FromDTO(new CodeServiceUserDTO(GetItemSync()));

            // Assert
            Assert.IsType <CodeServiceUser>(result);
            Assert.Equal(1, result.CodeId);
            Assert.Equal(2, result.ServiceId);
            Assert.Equal("moqUser", result.UserName);
            Assert.False(result.Enabled);
        }
        public async Task Get_ReturnsNotFound_GivenNull()
        {
            // Arrange
            var mockRepo  = new Mock <ICodeServiceUserService>();
            var returning = "invalid";
            var dbMock    = GetItem(returning);

            mockRepo.Setup(x => x.Get(It.IsAny <int>(), It.IsAny <int>())).Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = await controller.Get(1, 2);

            // Assert
            Assert.IsType <NotFoundResult>(result);
        }
        public async Task Get_ReturnsBadRequest_GivenNull()
        {
            // Arrange
            var mockRepo  = new Mock <ICodeServiceUserService>();
            var returning = "invalid";
            var dbMock    = GetList(returning);

            mockRepo.Setup(x => x.Get()).Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

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

            // Assert
            Assert.IsType <BadRequestResult>(result);
        }
        public async Task Delete_ReturnsNotContent_GivenTrue()
        {
            // Arrange
            var mockRepo = new Mock <ICodeServiceUserService>();
            var dbMock   = GetBool(true);

            mockRepo.Setup(x => x.Delete(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(dbMock).Verifiable();

            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = await controller.Delete(1, 1);

            // Assert
            mockRepo.VerifyAll();
            Assert.IsType <NoContentResult>(result);
        }
        public async Task Post_ReturnsBadRequest_GivenNull()
        {
            // Arrange
            var mockRepo  = new Mock <ICodeServiceUserService>();
            var returning = "invalid";
            var dbMock    = GetItem(returning);

            mockRepo.Setup(x => x.Post(It.IsAny <CodeServiceUser>()))
            .Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = await controller.Post(
                new CodeServiceUserDTO(1, "Code One", 2, "Service Two", "moqUser", false));

            // Assert
            Assert.IsType <BadRequestResult>(result);
        }
        public async Task Get_ReturnsEmptyListCodeServiceUserDTO_GivenEmptyList()
        {
            // Arrange
            var mockRepo  = new Mock <ICodeServiceUserService>();
            var returning = "empty";
            var dbMock    = GetList(returning);

            mockRepo.Setup(x => x.Get()).Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

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

            // Assert
            var okResult   = Assert.IsType <OkObjectResult>(result);
            var returnList = Assert.IsType <List <CodeServiceUserDTO> >(okResult.Value);

            Assert.Empty(returnList);
        }
        public async Task Get_ReturnsCodeServiceUserDTO_GivenCodeServiceUser()
        {
            // Arrange
            var mockRepo = new Mock <ICodeServiceUserService>();
            var dbMock   = GetItem();

            mockRepo.Setup(x => x.Get(It.IsAny <int>(), It.IsAny <int>())).Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = await controller.Get(1, 2);

            // Assert
            var okResult   = Assert.IsType <OkObjectResult>(result);
            var returnItem = Assert.IsType <CodeServiceUserDTO>(okResult.Value);

            Assert.Equal(1, returnItem.CodeId);
            Assert.Equal(2, returnItem.ServiceId);
        }
        public async Task Get_ReturnsListCodeServiceUserDTO_GivenListCodeServiceUser()
        {
            // Arrange
            var mockRepo = new Mock <ICodeServiceUserService>();
            var dbMock   = GetList();

            mockRepo.Setup(x => x.Get()).Returns(dbMock);

            var controller = new CodeServiceUsersController(mockRepo.Object);

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

            // Assert
            mockRepo.VerifyAll();
            var okResult   = Assert.IsType <OkObjectResult>(result);
            var returnList = Assert.IsType <List <CodeServiceUserDTO> >(okResult.Value);

            Assert.Equal(3, returnList.Count);
            Assert.Equal(1, returnList.First().CodeId);
            Assert.Equal(2, returnList[1].CodeId);
            Assert.Equal(2, returnList.Last().CodeId);
        }
        public void FromDTO_ReturnsListCodeServiceUserDTO_GivenListCodeServiceUser()
        {
            // Arrange
            var mockRepo   = new Mock <ICodeServiceUserService>();
            var controller = new CodeServiceUsersController(mockRepo.Object);

            // Act
            var result = controller.ToDTO(GetListSync());

            // Assert
            Assert.IsType <List <CodeServiceUserDTO> >(result);
            Assert.Equal(3, result.Count);

            Assert.Equal(1, result.First().CodeId);
            Assert.Equal("Code One", result.First().CodeName);
            Assert.Equal(2, result.First().ServiceId);
            Assert.Equal("Service Two", result.First().ServiceName);
            Assert.Equal("moqUser", result.First().UserName);
            Assert.False(result.First().Enabled);


            Assert.Equal(2, result[1].CodeId);
            Assert.Equal("Code Two", result[1].CodeName);
            Assert.Equal(1, result[1].ServiceId);
            Assert.Equal("Service One", result[1].ServiceName);
            Assert.Equal("moqUser", result[1].UserName);
            Assert.True(result[1].Enabled);


            Assert.Equal(2, result.Last().CodeId);
            Assert.Equal("Code Two", result.Last().CodeName);
            Assert.Equal(2, result.Last().ServiceId);
            Assert.Equal("Service Two", result.Last().ServiceName);
            Assert.Equal("moqUser2", result.Last().UserName);
            Assert.True(result.Last().Enabled);
        }