public async Task GivenAFhirBlobConsumer_WhenConsumeData_AllDataShouldbeUploaded()
        {
            string containerName                = Guid.NewGuid().ToString("N");
            string blobName                     = Guid.NewGuid().ToString("N");
            string connectionString             = "UseDevelopmentStorage=true";
            BlobContainerClient containerClient = new BlobContainerClient(connectionString, containerName);
            await containerClient.CreateIfNotExistsAsync();

            try
            {
                BlockBlobClient blobClient = new BlockBlobClient(connectionString, containerName, blobName);
                await blobClient.DeleteIfExistsAsync();

                FhirBlobConsumer consumer  = new FhirBlobConsumer(blobClient);
                long             totalSize = 0;
                Progress <long>  progress  = new Progress <long>();
                progress.ProgressChanged += (obj, args) =>
                {
                    Interlocked.Add(ref totalSize, args);
                };
                consumer.ProgressHandler = progress;
                int seed = DateTime.Now.Second % 30;
                foreach (var batch in GenerateTestData(20, 10000, seed))
                {
                    await consumer.ConsumeAsync(batch);
                }

                await consumer.CompleteAsync();

                using StreamReader reader = new StreamReader((await blobClient.DownloadAsync()).Value.Content);
                foreach (var batch in GenerateTestData(20, 10000, seed))
                {
                    foreach (var item in batch)
                    {
                        Assert.Equal(item, await reader.ReadLineAsync());
                    }
                }
                Assert.Null(await reader.ReadLineAsync());
                Assert.Equal((await blobClient.GetPropertiesAsync()).Value.ContentLength, totalSize);
            }
            finally
            {
                await containerClient.DeleteIfExistsAsync();
            }
        }