public async Task TestResourceHasReferenceShouldReturnResource()
        {
            var searchRepository = new InMemorySearchRepository();
            await searchRepository.AddResourceAsync(FhirResourceProvider.Observation);

            await searchRepository.AddResourceAsync(new Observation { Id = "4354363", Subject = new ResourceReference("did:iota:765658556") });

            var interactor = new SearchResourcesInteractor(new InMemoryFhirRepository(), searchRepository);
            var result     = await interactor.ExecuteAsync(new SearchResourcesRequest { ResourceType = "Observation", Parameters = "_reference=did:iota:1234567890" });

            Assert.AreEqual(1, ((Bundle)result.Resource).Entry.Count);
        }
        public async Task TestSearchByTagReturnsRightResource()
        {
            var searchRepository = new InMemorySearchRepository();
            await searchRepository.AddResourceAsync(FhirResourceProvider.Observation);

            await searchRepository.AddResourceAsync(new Observation { Id = "4354363", Subject = new ResourceReference("did:iota:765658556"), Meta = new Meta {
                                                                          Tag = new List <Coding> {
                                                                              new Coding("Test", "Unit")
                                                                          }
                                                                      } });

            var interactor = new SearchResourcesInteractor(new InMemoryFhirRepository(), searchRepository);
            var result     = await interactor.ExecuteAsync(new SearchResourcesRequest { ResourceType = "Observation", Parameters = "_tag=Test|" });

            Assert.AreEqual(1, ((Bundle)result.Resource).Entry.Count);
            Assert.AreEqual("4354363", ((Bundle)result.Resource).Entry.First().Resource.Id);
        }
        public async Task TestResourceCanBeImportedAndIsAddedToSearch()
        {
            var fhirRepository   = new InMemoryFhirRepository();
            var resourceTracker  = new InMemoryResourceTracker();
            var searchRepository = new InMemorySearchRepository();

            var resourceImporter = new ResourceImporter(searchRepository, fhirRepository, new RandomSeedManager(resourceTracker));

            var rootHash = Seed.Random().Value;
            var patient  = FhirResourceProvider.Patient;

            patient.Id = rootHash.Substring(0, 64);

            fhirRepository.Resources.Add(patient);

            await resourceImporter.ImportResourceAccessAsync(rootHash, Seed.Random().Value);

            Assert.IsNotNull(await resourceTracker.GetEntryAsync(rootHash));
            Assert.AreEqual(1, (await searchRepository.FindResourcesByTypeAsync("Patient")).Count);
        }