public async Task<IHttpActionResult> Post(string boardSlug, BoardTask boardTask)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            try
            {
                var result = await commandDispatcher.HandleAsync<CreateBoardTaskCommand, BoardTask>(new CreateBoardTaskCommand
                {
                    BoardSlug = boardSlug,
                    BoardTask = boardTask
                });

                hyperMediaFactory.Apply(result);

                return Created(hyperMediaFactory.GetLink(result, Link.SELF), result);
            }
            catch (BoardColumnNotFoundException)
            {
                return BadRequest("Board Column Not Found");
            }
            catch (BoardNotFoundException)
            {
                return NotFound();
            }
        }
Ejemplo n.º 2
0
        public void GiveAObjWhenIsABoardThenReturnsTrue()
        {
            // Arrange
            SetupState();
            var boardTask = new BoardTask();

            // Act
            var isAppliable = state.IsAppliable(boardTask);

            // Assert
            Assert.True(isAppliable);
        }
Ejemplo n.º 3
0
        public void GivenAObjWhenIsABoardThenSelfLinkAdded()
        {
            // Arrange
            SetupState();
            mockLinkFactory.Setup(x => x.Build("BoardTaskGet", It.IsAny<object>())).Returns("http://fake-url/");
            var boardTask = new BoardTask();

            // Act
            state.Apply(boardTask);

            // Assert
            Assert.NotNull(boardTask.Links);
            Assert.NotNull(boardTask.Links.FirstOrDefault(x => x.Rel == Link.SELF));
        }
            public async void GivenABoardSlugSlugAndTaskWhenBoardExistsThenHyperMediaSet()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                var boardTask = new BoardTask();
                mockCommandDispatcher.Setup(
                    x => x.HandleAsync<CreateBoardTaskCommand, BoardTask>(It.IsAny<CreateBoardTaskCommand>()))
                    .ReturnsAsync(new BoardTask());
                mockHyperMediaFactory.Setup(x => x.GetLink(It.IsAny<IHyperMediaItem>(), It.IsAny<string>()))
                    .Returns("http://fake-url/");

                // Act
                await controller.Post(boardSlug, boardTask);

                // Assert
                mockHyperMediaFactory.Verify(x => x.Apply(It.IsAny<BoardTask>()), Times.Once);
            }
            public async void GivenABoardSlugAndTaskWhenBoardAndColumnExistsThenReturnOkResult()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                var boardTask = new BoardTask();
                mockCommandDispatcher.Setup(
                    x => x.HandleAsync<CreateBoardTaskCommand, BoardTask>(It.IsAny<CreateBoardTaskCommand>()))
                    .ReturnsAsync(new BoardTask());
                mockHyperMediaFactory.Setup(x => x.GetLink(It.IsAny<IHyperMediaItem>(), It.IsAny<string>()))
                    .Returns("http://fake-url/");

                // Act
                var createdNegotiatedContentResult =
                    await controller.Post(boardSlug, boardTask) as CreatedNegotiatedContentResult<BoardTask>;

                // Assert
                Assert.NotNull(createdNegotiatedContentResult);
            }
        public async Task<IHttpActionResult> Put(string boardSlug, int taskId, BoardTask boardTask)
        {
            try
            {
                var result = await commandDispatcher.HandleAsync<UpdateBoardTaskCommand, BoardTask>(new UpdateBoardTaskCommand
                {
                    BoardSlug = boardSlug,
                    BoardTask = boardTask
                });

                hyperMediaFactory.Apply(result);

                return Ok(result);
            }
            catch (BoardTaskNotFoundException)
            {
                return NotFound();
            }
            catch (BoardColumnNotFoundException)
            {
                return BadRequest("Board Column Not Found");
            }
        }
            public async void GivenABoardSlugAndTaskWhenBoardColumnIsInvalidThenReturnInvalidModelState()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                var boardTask = new BoardTask();
                controller.ModelState.AddModelError("error", "error");

                // Act
                var invalidModelStateResult = await controller.Post(boardSlug, boardTask) as InvalidModelStateResult;

                // Assert
                Assert.NotNull(invalidModelStateResult);
            }
            public async void GivenABoardSlugTaskIdAndTaskWhenBoardColumnDoesNotExistThenBadRequestReturned()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                const int taskId = 1;
                var boardTask = new BoardTask
                {
                    Id = taskId,
                    Name = "Updated Name"
                };

                mockCommandDispatcher.Setup(
                    x => x.HandleAsync<UpdateBoardTaskCommand, BoardTask>(It.IsAny<UpdateBoardTaskCommand>()))
                    .Throws<BoardColumnNotFoundException>();

                // Act
                var badRequestErrorMessageResult =
                    await controller.Put(boardSlug, taskId, boardTask) as BadRequestErrorMessageResult;

                // Assert
                Assert.NotNull(badRequestErrorMessageResult);
                Assert.Equal("Board Column Not Found", badRequestErrorMessageResult.Message);
            }
            public async void GivenABoardSlugTaskIdAndTaskWhenAllAreValidThenHypermediaSet()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                const int taskId = 1;
                var boardTask = new BoardTask
                {
                    Id = taskId,
                    Name = "Updated Name"
                };

                // Act
                await controller.Put(boardSlug, taskId, boardTask);

                // Assert
                mockHyperMediaFactory.Verify(x => x.Apply(It.IsAny<object>()), Times.Once);
            }
            public async void GivenABoardSlugTaskIdAndTaskWhenAllAreValidThenUpdateBoardTaskCommandCalled()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                const int taskId = 1;
                var boardTask = new BoardTask
                {
                    Id = taskId,
                    Name = "Updated Name"
                };

                // Act
                await controller.Put(boardSlug, taskId, boardTask);

                // Assert
                mockCommandDispatcher.Verify(
                    x => x.HandleAsync<UpdateBoardTaskCommand, BoardTask>(It.Is<UpdateBoardTaskCommand>(
                        y => y.BoardSlug == boardSlug && y.BoardTask == boardTask
                        )), Times.Once);
            }
            public async void GivenABoardSlugTaskIdAndTaskWhenAllAreValidThenOkResultReturned()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                const int taskId = 1;
                var boardTask = new BoardTask
                {
                    Id = taskId,
                    Name = "Updated Name"
                };

                // Act
                var okNegotiatedContentResult =
                    await controller.Put(boardSlug, taskId, boardTask) as OkNegotiatedContentResult<BoardTask>;

                // Assert
                Assert.NotNull(okNegotiatedContentResult);
            }
            public async void GivenABoardSlugAndTaskWhenBoardDoesNotExistThenNotFound()
            {
                // Arrange
                SetupController();
                const string boardSlug = "board-name";
                var boardTask = new BoardTask();
                mockCommandDispatcher.Setup(
                    x => x.HandleAsync<CreateBoardTaskCommand, BoardTask>(It.IsAny<CreateBoardTaskCommand>()))
                    .Throws<BoardNotFoundException>();

                // Act
                var notFoundResult = await controller.Post(boardSlug, boardTask) as NotFoundResult;

                // Assert
                Assert.NotNull(notFoundResult);
            }