public async Task ShouldNotThrowIfNotCancelled(
                Bucket bucket,
                [Target] DefaultBucketRepository repository,
                CancellationToken cancellationToken
                )
            {
                Func <Task> func = () => repository.Remove(bucket, cancellationToken);

                await func.Should().NotThrowAsync <OperationCanceledException>();
            }
            public async Task ShouldThrowIfCancelled(
                Bucket bucket,
                [Target] DefaultBucketRepository repository
                )
            {
                var cancellationToken = new CancellationToken(true);

                Func <Task> func = () => repository.Save(bucket, cancellationToken);

                await func.Should().ThrowAsync <OperationCanceledException>();
            }
            public async Task ShouldSaveChanges(
                Bucket bucket,
                [Frozen] DatabaseContext context,
                [Target] DefaultBucketRepository repository,
                CancellationToken cancellationToken
                )
            {
                await repository.Save(bucket, cancellationToken);

                await context.Received().SaveChangesAsync(Is(cancellationToken));
            }
            public async Task ShouldRemoveTheBucketFromTheDatabase(
                Bucket bucket,
                [Frozen] DatabaseContext databaseContext,
                [Target] DefaultBucketRepository repository,
                CancellationToken cancellationToken
                )
            {
                await repository.Remove(bucket, cancellationToken);

                databaseContext.Received().Remove(Is(bucket));
                await databaseContext.Received().SaveChangesAsync(Is(cancellationToken));
            }