public void DeleteExtraClassCommandHandler_GivenSuccessfulValidation_ShouldThrowNotFoundException()
        {
            var command = new DeleteExtraClassCommand {
                Id = 99
            };

            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <NotFoundException>();
        }
        public async Task DeleteExtraClass_GivenSuccessfulValidation_ShouldThrowDeleteFailureException()
        {
            var subjectId = await SendAsync(new CreateSubjectCommand { Name = "Wizardry" });

            var extraClassId = await SendAsync(new CreateExtraClassCommand
            {
                SubjectId = subjectId,
                Date      = DateTime.Now,
                Duration  = TimeSpan.FromMinutes(60),
                Name      = "StaffLogic",
                Price     = 100,
                Size      = 2
            });

            await SendAsync(new CreateBookingCommand { ExtraClassId = extraClassId });

            var command = new DeleteExtraClassCommand {
                Id = extraClassId
            };

            // Assert
            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <DeleteFailureException>();
        }
        public async Task DeleteExtraClass_ShouldDeleteSuccessfully()
        {
            var subjectId = await SendAsync(new CreateSubjectCommand { Name = "StaffLogic" });

            var extraClassId = await SendAsync(new CreateExtraClassCommand
            {
                SubjectId = subjectId,
                Date      = DateTime.Now,
                Duration  = TimeSpan.FromMinutes(60),
                Name      = "StaffLogic",
                Price     = 100,
                Size      = 2
            });

            var command = new DeleteExtraClassCommand {
                Id = extraClassId
            };

            await SendAsync(command);

            var extraClass = await FindAsync <ExtraClass>(extraClassId);

            extraClass.Should().BeNull();
        }