コード例 #1
0
        public async Task ListAllUnsupportedTypes()
        {
            var unsupported = new UnsupportedSearchParameters();

            SearchParameterDefinitionManager manager = await SearchParameterFixtureData.CreateSearchParameterDefinitionManagerAsync(ModelInfoProvider.Instance);

            var resourceAndSearchParameters = ModelInfoProvider.Instance
                                              .GetResourceTypeNames()
                                              .Select(resourceType => (resourceType, parameters: manager.GetSearchParameters(resourceType)));

            foreach (var searchParameterRow in resourceAndSearchParameters)
            {
                foreach (SearchParameterInfo parameterInfo in searchParameterRow.parameters)
                {
                    if (parameterInfo.Code != "_type")
                    {
                        var converters = await GetConvertsForSearchParameters(searchParameterRow.resourceType, parameterInfo);

                        if (converters.All(x => x.hasConverter == false))
                        {
                            unsupported.Unsupported.Add(parameterInfo.Url);
                        }
                        else if (converters.Any(x => x.hasConverter == false))
                        {
                            unsupported.PartialSupport.Add(parameterInfo.Url);
                        }
                    }
                }
            }

            // Print the current state to the console
            _outputHelper.WriteLine(JsonConvert.SerializeObject(unsupported, new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                Formatting        = Formatting.Indented,
            }));

            // Check this against the list already in the system:
            var systemUnsupported = new UnsupportedSearchParameters();

            foreach (var searchParameter in resourceAndSearchParameters.SelectMany(x => x.parameters))
            {
                if (!searchParameter.IsSupported)
                {
                    systemUnsupported.Unsupported.Add(searchParameter.Url);
                }
                else if (searchParameter.IsPartiallySupported)
                {
                    systemUnsupported.PartialSupport.Add(searchParameter.Url);
                }
            }

            // Expect that the static file "unsupported-search-parameters.json" equals the generated list
            Assert.Equal(systemUnsupported.Unsupported, unsupported.Unsupported);
            Assert.Equal(systemUnsupported.PartialSupport, unsupported.PartialSupport);
        }
コード例 #2
0
        public Task <IReadOnlyCollection <ResourceSearchParameterStatus> > GetSearchParameterStatuses()
        {
            if (_statusResults == null)
            {
                using Stream stream     = _resourceAssembly.GetManifestResourceStream(_unsupportedParamsEmbeddedResourceName);
                using TextReader reader = new StreamReader(stream);
                UnsupportedSearchParameters unsupportedParams = JsonConvert.DeserializeObject <UnsupportedSearchParameters>(reader.ReadToEnd());

                // Loads unsupported parameters
                var support = unsupportedParams.Unsupported
                              .Select(x => new ResourceSearchParameterStatus
                {
                    Uri         = x,
                    Status      = SearchParameterStatus.Disabled,
                    LastUpdated = Clock.UtcNow,
                })
                              .Concat(unsupportedParams.PartialSupport
                                      .Select(x => new ResourceSearchParameterStatus
                {
                    Uri    = x,
                    Status = SearchParameterStatus.Enabled,
                    IsPartiallySupported = true,
                    LastUpdated          = Clock.UtcNow,
                }))
                              .ToDictionary(x => x.Uri);

                // Merge with supported list
                _statusResults = _searchParameterDefinitionManager.AllSearchParameters
                                 .Where(x => !support.ContainsKey(x.Url))
                                 .Select(x => new ResourceSearchParameterStatus
                {
                    Uri         = x.Url,
                    Status      = SearchParameterStatus.Enabled,
                    LastUpdated = Clock.UtcNow,
                })
                                 .Concat(support.Values)
                                 .ToArray();
            }

            return(Task.FromResult <IReadOnlyCollection <ResourceSearchParameterStatus> >(_statusResults));
        }