Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        public async Task GivenAnSearchResourceRequest_WhenHandled_ThenABundleShouldBeReturned()
        {
            SearchResourceRequest request = new SearchResourceRequest("Patient", null);

            Bundle expectedBundle = new Bundle();

            _searchService.SearchAsync(request.ResourceType, null).Returns(expectedBundle);

            SearchResourceResponse actualResponse = await _searchResourceHandler.Handle(request, CancellationToken.None);

            Assert.NotNull(actualResponse);
            Assert.Equal(expectedBundle, actualResponse.Bundle);
        }
Exemplo n.º 5
0
        public async Task GivenASearchResourceRequest_WhenHandled_ThenABundleShouldBeReturned()
        {
            var request = new SearchResourceRequest("Patient", null);

            var searchResult = new SearchResult(Enumerable.Empty <SearchResultEntry>(), new Tuple <string, string> [0], Array.Empty <(string parameterName, string reason)>(), null);

            _searchService.SearchAsync(request.ResourceType, request.Queries, CancellationToken.None).Returns(searchResult);

            var expectedBundle = new Bundle().ToResourceElement();

            _bundleFactory.CreateSearchBundle(searchResult).Returns(expectedBundle);

            SearchResourceResponse actualResponse = await _searchResourceHandler.Handle(request, CancellationToken.None);

            Assert.NotNull(actualResponse);
            Assert.Equal(expectedBundle, actualResponse.Bundle);
        }