public void WriteToOutput_GivenFacetResult_OutputStreamShouldIncludeTheFacetsInXML2() { var request = new PortalRequest(); var response = new PortalResponse(request) { ReturnFormat = ReturnFormat.XML2 }; var solrResponse = Make_SolrResponseWithFacets(); var faceted = new QueryResult { FieldFacets = solrResponse.FacetResponse.FacetFieldsResult.Select(item => new FieldFacet(item.Value, item.Facets.Select(facet => new Core.Data.Model.Facet(facet.Value, facet.Count)).ToList())).ToList() }; response.ReturnFormat = ReturnFormat.XML2; request.Stopwatch.Reset(); response.WriteToOutput(faceted); using (var stream = new StreamReader(response.GetResponseStream())) { Assert.That(stream.ReadToEnd(), Is.EqualTo("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" + "<PortalResponse>" + "<Header>" + "<Duration>0</Duration>" + "</Header>" + "<Body>" + "<FieldFacets>" + "<FieldFacet>" + "<Value>NetworkId</Value>" + "<Facets>" + "<Facet>" + "<Key>00000000-0000-0000-0000-000000000001</Key>" + "<Count>71</Count>" + "</Facet>" + "<Facet>" + "<Key>fc2e10f7-3eee-49d8-b441-3235f96e5c0a</Key>" + "<Count>2</Count>" + "</Facet>" + "<Facet>" + "<Key>3cbcdafc-af3b-4955-9d79-64d397b6393d</Key>" + "<Count>1</Count>" + "</Facet>" + "<Facet>" + "<Key>3ec2f894-bdf2-4281-a91f-46a84b982039</Key>" + "<Count>1</Count>" + "</Facet>" + "</Facets>" + "</FieldFacet>" + "</FieldFacets>" + "</Body>" + "<Error />" + "</PortalResponse>")); } }
public object Create(object obj, IPortalRequest request) { if (obj == null) throw new NullReferenceException("Returned object is null"); var result = obj as IResult; result = result == null ? obj as AResult : result; var results = obj as IEnumerable<IResult>; var pagedResult = obj as IPagedResult<IResult>; var queryResult = obj as QueryResult; var groupedResult = obj as IGroupedResult<IResult>; var uinteger = obj as uint?; var integer = obj as int?; var attachment = obj as Attachment; var exception = obj as Exception; if (result != null) { var portalResult = new PagedResult(1, 0, new[] {result}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (results != null) { var lst = results.ToList(); var portalResult = new PagedResult((uint) lst.Count, 0, lst); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (pagedResult != null) { var portalResult = new PagedResult(pagedResult.FoundCount, pagedResult.StartIndex, pagedResult.Results); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (queryResult != null) { var response = new PortalResponse(new PortalHeader(request.Stopwatch), queryResult, new PortalError()); return response; } if (groupedResult != null) { var portalResult = new QueryResult {Groups = groupedResult.Groups.ToList()}; var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (uinteger != null) { var portalResult = new PagedResult(1, 0, new[] {new ScalarResult((int) uinteger.Value)}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (integer != null) { var portalResult = new PagedResult(1, 0, new[] {new ScalarResult(integer.Value)}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (attachment != null) return attachment; else { if (exception == null) exception = new UnsupportedExtensionReturnTypeException("Return type is not supported: " + obj.GetType().FullName); var response = new PortalResponse(new PortalHeader(request.Stopwatch), new PortalResult(), new PortalError()); response.Error.SetException(exception); return response; } }