public async void GivenQueryWhenBoardExistsThenEachItemMapped()
        {
            // Arrange
            var boardEntity = new BoardEntity {
                Slug = "board-name"
            };

            SetupQueryHandler(new List <BoardEntity>
            {
                boardEntity
            },
                              new List <BoardColumnEntity>
            {
                new BoardColumnEntity
                {
                    BoardEntity = boardEntity
                }
            });

            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act
            await handler.HandleAsync(query);

            // Assert
            mockMappingService.Verify(x => x.Map <BoardColumn>(It.IsAny <BoardColumnEntity>()), Times.Once);
        }
        public async void GivenQueryWhenBoardExistsThenBoardColumnCollectionReturned()
        {
            // Arrange
            var boardEntity = new BoardEntity {
                Slug = "board-name"
            };

            SetupQueryHandler(new List <BoardEntity>
            {
                boardEntity
            },
                              new List <BoardColumnEntity>
            {
                new BoardColumnEntity
                {
                    BoardEntity = boardEntity
                }
            });

            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act
            var boardColumnCollection = await handler.HandleAsync(query);

            // Assert
            Assert.NotNull(boardColumnCollection);
        }
        public async void GivenQueryWhenBoardExistsThenBoardColumnCollectionReturned()
        {
            // Arrange
            var boardEntity = new BoardEntity {Slug = "board-name"};
            SetupQueryHandler(new List<BoardEntity>
            {
                boardEntity
            },
            new List<BoardColumnEntity>
            {
                new BoardColumnEntity
                {
                    BoardEntity = boardEntity
                }
            });

            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act
            var boardColumnCollection = await handler.HandleAsync(query);

            // Assert
            Assert.NotNull(boardColumnCollection);
        }
        public async void GivenQueryWhenBoardDoesNotExistThrowsBoardNotFoundException()
        {
            // Arrange
            SetupQueryHandler(new List <BoardEntity>(), new List <BoardColumnEntity>());
            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act & Assert
            await Assert.ThrowsAsync <BoardNotFoundException>(() => handler.HandleAsync(query));
        }
        public async void GivenQueryWhenBoardDoesNotExistThrowsBoardNotFoundException()
        {
            // Arrange
            SetupQueryHandler(new List<BoardEntity>(), new List<BoardColumnEntity>());
            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act & Assert
            await Assert.ThrowsAsync<BoardNotFoundException>(() => handler.HandleAsync(query));
        }
        public async void GivenQueryWhenBoardExistsThenEachItemMapped()
        {
            // Arrange
            var boardEntity = new BoardEntity { Slug = "board-name" };
            SetupQueryHandler(new List<BoardEntity>
            {
                boardEntity
            },
            new List<BoardColumnEntity>
            {
                new BoardColumnEntity
                {
                    BoardEntity = boardEntity
                }
            });

            var query = new SearchBoardColumnsQuery
            {
                BoardSlug = "board-name"
            };

            // Act
            await handler.HandleAsync(query);

            // Assert
            mockMappingService.Verify(x => x.Map<BoardColumn>(It.IsAny<BoardColumnEntity>()), Times.Once);
        }