Beispiel #1
0
        public async Task <ActionResult> EditCalendarEvent([FromRoute] string calendarEventId,
                                                           [FromBody] EditCalendarEventCommand command)
        {
            try
            {
                command.Id = calendarEventId;
                await _mediator.Send(command);

                return(Ok());
            }
            catch (ResourceNotFoundException)
            {
                return(NotFound(calendarEventId));
            }
        }
        public async Task Handle_ShouldEditCalendarEventDataInDatabase()
        {
            var calendarEvent = new CalendarEvent(
                "Music fetival",
                DateTimeOffset.Now.ToUnixTimeSeconds(),
                "Oosterpark, Amsterdam ",
                "Rafael Caviquioli"
                );

            calendarEvent.AddMember("Aleida");
            calendarEvent.AddMember("Vans Martin");
            _context.Add(calendarEvent);
            await _context.SaveChangesAsync();

            _context.DetachAllEntities();

            var command = new EditCalendarEventCommand()
            {
                Id             = calendarEvent.Id,
                Name           = "Football Challenge",
                Time           = DateTimeOffset.Now.AddDays(10).ToUnixTimeSeconds(),
                Location       = "Brussels, Belgian",
                EventOrganizer = "Elisabeth",
                Members        = new string[] { "Gabriel", "Anna", "Aleida", "Felipe" }
            };
            var handler = new EditCalendarEventCommandHandler(_calendarEventRepository);
            await handler.Handle(command, CancellationToken.None);

            var updatedCalendarEvent = await _context.CalendarEvents
                                       .Include(ce => ce.Members)
                                       .FirstOrDefaultAsync(ce => ce.Id == calendarEvent.Id);

            updatedCalendarEvent.Name.Should().Be(command.Name);
            updatedCalendarEvent.Location.Should().Be(command.Location);
            updatedCalendarEvent.Time.Should().Be(command.Time);
            updatedCalendarEvent.Organizer.Should().Be(command.EventOrganizer);
            updatedCalendarEvent.Members.Should().HaveCount(4);

            var members = updatedCalendarEvent.Members
                          .Select(m => m.Name)
                          .ToList();

            members.Should().Contain("Gabriel");
            members.Should().Contain("Anna");
            members.Should().Contain("Aleida");
            members.Should().Contain("Felipe");
            members.Should().NotContain("Vans Martin");
        }
        public async Task Handle_ShouldThrowResourceNotFoundException_WhenTryToUpdateACalendarEventThatDoesNotExists()
        {
            var command = new EditCalendarEventCommand()
            {
                Id             = 76890,
                Name           = "Football Challenge",
                Time           = DateTimeOffset.Now.AddDays(10).ToUnixTimeSeconds(),
                Location       = "Brussels, Belgian",
                EventOrganizer = "Elisabeth",
                Members        = new string[] { "Gabriel", "Anna", "Aleida", "Felipe" }
            };
            var handler = new EditCalendarEventCommandHandler(_calendarEventRepository);

            await Assert.ThrowsAsync <ResourceNotFoundException>(
                async() => await handler.Handle(command, CancellationToken.None)
                );
        }