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); }
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)); }