public async Task VolunteerCannotCompleteTaskFromAcceptedStatus()
        {
            var volunteerTaskSignup = Context.VolunteerTaskSignups.First();

            volunteerTaskSignup.Status = VolunteerTaskStatus.Accepted;
            await Context.SaveChangesAsync();

            var volunteerTask = Context.VolunteerTasks.First();
            var user          = Context.Users.First();
            var command       = new ChangeVolunteerTaskStatusCommand
            {
                VolunteerTaskId                = volunteerTask.Id,
                UserId                         = user.Id,
                VolunteerTaskStatus            = VolunteerTaskStatus.CanNotComplete,
                VolunteerTaskStatusDescription = $"{user.UserName} cannot complete {volunteerTask.Name}"
            };
            await commandHandler.Handle(command);

            volunteerTaskSignup = Context.VolunteerTaskSignups.First();
            mediator.Verify(b => b.PublishAsync(It.Is <VolunteerTaskSignupStatusChanged>(notifyCommand => notifyCommand.SignupId == volunteerTaskSignup.Id)), Times.Once());
            volunteerTaskSignup.Status.ShouldBe(command.VolunteerTaskStatus);
            volunteerTaskSignup.User.Id.ShouldBe(command.UserId);
            volunteerTaskSignup.VolunteerTask.Id.ShouldBe(command.VolunteerTaskId);
            volunteerTaskSignup.StatusDescription.ShouldBe(command.VolunteerTaskStatusDescription);
        }
        public async Task VolunteerAcceptsTask()
        {
            var mediator = new Mock <IMediator>();

            var volunteerTask = Context.VolunteerTasks.First();
            var user          = Context.Users.First();
            var command       = new ChangeVolunteerTaskStatusCommand
            {
                VolunteerTaskId     = volunteerTask.Id,
                UserId              = user.Id,
                VolunteerTaskStatus = VolunteerTaskStatus.Accepted
            };
            var handler = new ChangeVolunteerTaskStatusCommandHandler(Context, mediator.Object);
            await handler.Handle(command);

            var volunteerTaskSignup = Context.VolunteerTaskSignups.First();

            mediator.Verify(b => b.PublishAsync(It.Is <VolunteerTaskSignupStatusChanged>(notifyCommand => notifyCommand.SignupId == volunteerTaskSignup.Id)), Times.Once());
        }
        public async Task VolunteerRejectsTask()
        {
            var volunteerTask = Context.VolunteerTasks.First();
            var user          = Context.Users.First();
            var command       = new ChangeVolunteerTaskStatusCommand
            {
                VolunteerTaskId                = volunteerTask.Id,
                UserId                         = user.Id,
                VolunteerTaskStatus            = VolunteerTaskStatus.Rejected,
                VolunteerTaskStatusDescription = $"{user.UserName} rejected task {volunteerTask.Name}"
            };
            await commandHandler.Handle(command);

            var volunteerTaskSignup = Context.VolunteerTaskSignups.First();

            mediator.Verify(b => b.PublishAsync(It.Is <VolunteerTaskSignupStatusChanged>(notifiyCommand => notifiyCommand.SignupId == volunteerTaskSignup.Id)), Times.Once());
            volunteerTaskSignup.Status.ShouldBe(command.VolunteerTaskStatus);
            volunteerTaskSignup.VolunteerTask.Id.ShouldBe(command.VolunteerTaskId);
            volunteerTaskSignup.User.Id.ShouldBe(command.UserId);
            volunteerTaskSignup.StatusDescription.ShouldBe(command.VolunteerTaskStatusDescription);
        }