public async Task TestResourceDoesExistShouldApplyPatch()
        {
            var repository = new InMemoryFhirRepository();
            var resource   = await repository.CreateResourceAsync(FhirResourceProvider.Patient);

            var patchedResource = new Patient();

            resource.CopyTo(patchedResource);
            patchedResource.BirthDate = "01.01.1111";

            var patchApplier = new Mock <IPatchApplier>();

            patchApplier.Setup(p => p.ApplyTo(It.IsAny <Resource>(), It.IsAny <List <PatchOperation> >())).Returns(patchedResource);

            var interactor = new PatchResourceInteractor(repository, patchApplier.Object);
            var response   = await interactor.ExecuteAsync(
                new PatchResourceRequest
            {
                ResourceId = resource.Id, Payload = "[{ \"op\": \"test\", \"path\": \"/a/b/c\", \"value\": \"foo\" }]"
            });


            var savedResource = await repository.ReadResourceAsync(resource.Id);

            Assert.AreEqual(ResponseCode.Success, response.Code);
            Assert.AreEqual("01.01.1111", ((Patient)response.Resource).BirthDate);
            Assert.AreEqual("01.01.1111", ((Patient)savedResource).BirthDate);
        }
        public async Task TestResourceDoesNotExistShouldReturnErrorCode()
        {
            var repository = new Mock <IFhirRepository>();

            repository.Setup(r => r.ReadResourceAsync(It.IsAny <string>())).ThrowsAsync(new ResourceNotFoundException("7812456"));

            var interactor = new PatchResourceInteractor(repository.Object, null);
            var result     = await interactor.ExecuteAsync(new PatchResourceRequest { ResourceId = "7812456" });

            Assert.AreEqual(ResponseCode.ResourceNotFound, result.Code);
        }