public async Task GivenANonExistingResourceToDeleteRequest_WhenHandled_ThenTheResponseShouldHaveANullWeakETag(bool hardDelete)
        {
            var repository         = Substitute.For <IFhirRepository>();
            var handler            = new DeleteResourceHandler(repository);
            var resourceId         = Guid.NewGuid().ToString();
            var deletedResourceKey = new ResourceKey("Observation", resourceId);

            repository.DeleteAsync(Arg.Any <ResourceKey>(), hardDelete).Returns(deletedResourceKey);

            DeleteResourceResponse response = await handler.Handle(
                new DeleteResourceRequest("Observation", resourceId, hardDelete),
                CancellationToken.None);

            await repository.Received().DeleteAsync(Arg.Any <ResourceKey>(), hardDelete);

            Assert.Null(response.WeakETag);
        }
        public async Task GivenADeleteResourceRequest_WhenHandled_ThenTheResponseShouldHaveTheDeletedVersion()
        {
            var repository         = Substitute.For <IFhirRepository>();
            var handler            = new DeleteResourceHandler(repository);
            var resourceId         = Guid.NewGuid().ToString();
            var deletedResourceKey = new ResourceKey("Observation", resourceId, Guid.NewGuid().ToString());

            repository.DeleteAsync(Arg.Any <ResourceKey>(), false).Returns(deletedResourceKey);

            DeleteResourceResponse response = await handler.Handle(
                new DeleteResourceRequest("Observation", resourceId, false),
                CancellationToken.None);

            await repository.Received().DeleteAsync(Arg.Any <ResourceKey>(), false);

            Assert.Equal(deletedResourceKey.VersionId, response.WeakETag.VersionId);
        }