public async Task GivenARequest_WhenListValueFound_ExpectedIdQueriesAdded() { var behavior = new ListSearchPipeBehavior(_searchOptionsFactory, _bundleFactory, _scopedDataStore, Deserializers.ResourceDeserializer, new ReferenceSearchValueParser(new FhirRequestContextAccessor())); IReadOnlyList <Tuple <string, string> > list = new[] { Tuple.Create("_list", "existing-list") }; var getResourceRequest = Substitute.For <SearchResourceRequest>("Patient", list); Assert.True(getResourceRequest.Queries.Count == 1); Assert.Equal("_list", getResourceRequest.Queries[0].Item1); Assert.Equal("existing-list", getResourceRequest.Queries[0].Item2); SearchResourceResponse response = await behavior.Handle( getResourceRequest, CancellationToken.None, () => { return(Task.FromResult(new SearchResourceResponse(_nonEmptyBundle))); }); Assert.Equal(1, getResourceRequest.Received().Queries.Count); Assert.Equal("_id", getResourceRequest.Received().Queries[0].Item1); Assert.Contains("pat1", getResourceRequest.Received().Queries[0].Item2); Assert.Contains("pat2", getResourceRequest.Received().Queries[0].Item2); Assert.Contains("pat3", getResourceRequest.Received().Queries[0].Item2); }
public async Task GivenARequest_WhenNoListQuery_QueriesUnchanged() { var behavior = new ListSearchPipeBehavior(_searchOptionsFactory, _bundleFactory, _scopedDataStore, Deserializers.ResourceDeserializer, new ReferenceSearchValueParser(new FhirRequestContextAccessor())); string guid1 = Guid.NewGuid().ToString(); string guid2 = Guid.NewGuid().ToString(); IReadOnlyList <Tuple <string, string> > list = new[] { Tuple.Create("firstItem", guid1), Tuple.Create("secondItem", guid2), }; var getResourceRequest = Substitute.For <SearchResourceRequest>("Patient", list); SearchResourceResponse response = await behavior.Handle( getResourceRequest, CancellationToken.None, () => { return(Task.FromResult(new SearchResourceResponse(_nonEmptyBundle))); }); Assert.Equal(_nonEmptyBundle, response.Bundle); Assert.Equal(2, getResourceRequest.Received().Queries.Count); Assert.Equal("firstItem", getResourceRequest.Received().Queries[0].Item1); Assert.Equal(guid1, getResourceRequest.Received().Queries[0].Item2); Assert.Equal("secondItem", getResourceRequest.Received().Queries[1].Item1); Assert.Equal(guid2, getResourceRequest.Received().Queries[1].Item2); }
public async Task GivenARequest_WhenListValueExistsButValueNotFound_EmptyResponseReturned() { var behavior = new ListSearchPipeBehavior(_searchOptionsFactory, _bundleFactory, _scopedDataStore, Deserializers.ResourceDeserializer, new ReferenceSearchValueParser(new FhirRequestContextAccessor())); IReadOnlyList <Tuple <string, string> > list = new[] { Tuple.Create("_list", Guid.NewGuid().ToString()), Tuple.Create("_tag", Guid.NewGuid().ToString()), Tuple.Create("_id", Guid.NewGuid().ToString()), }; var getResourceRequest = Substitute.For <SearchResourceRequest>("Patient", list); Assert.True(getResourceRequest.Queries.Count == 3); SearchResourceResponse response = await behavior.Handle( getResourceRequest, CancellationToken.None, () => { return(Task.FromResult(new SearchResourceResponse(_nonEmptyBundle))); }); var emptyResponse = behavior.CreateEmptySearchResponse(getResourceRequest); Assert.Equal(emptyResponse.Bundle, response.Bundle); }