Exemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] CreateActivityCommandModel command)
        {
            await busClient.PublishAsync(command
                                         .SetId(Guid.NewGuid())
                                         .SetCreatedAt(DateTime.Now)
                                         .SetUserId(User.Identity.GetUserIdIfExist()));

            return(AcceptedAtRoute("Get", new { id = command.Id }));
        }
        public async Task ActivitiesController_Post_Should_Return_Accepted_StatusCode()
        {
            //arrange
            var busClient          = new Mock <IBusClient>();
            var activityRepository = new Mock <IActivityRepository>();
            var userId             = Guid.NewGuid();
            var command            = new CreateActivityCommandModel
            {
                Id          = Guid.NewGuid(),
                Name        = "Test",
                Category    = "TestCategory",
                Description = "Description Category"
            };

            var sut = new ActivitiesController(busClient.Object, activityRepository.Object);

            sut.ControllerContext = new ControllerContext
            {
                HttpContext = new DefaultHttpContext
                {
                    User = new ClaimsPrincipal(
                        new ClaimsIdentity
                        (
                            new Claim[]
                    {
                        new Claim(ClaimTypes.Name, userId.ToString())
                    },
                            "test"
                        )
                        )
                }
            };

            var routeValues = new Dictionary <string, object>
            {
                { "id", command.Id }
            };
            //act

            var result = await sut.Post(command) as AcceptedAtRouteResult;

            //assert
            result.Should().NotBeNull();
            result.StatusCode?.Should().Be(StatusCodes.Status202Accepted);
            result.RouteName.Should().Be("Get");
            result.RouteValues.Should().BeEquivalentTo(routeValues);
        }