public void GetPointsOfInterestById_RouteWithMultipleAttributes_ShouldReturnIt() { var poiId = "poiId"; var feature = GetValidFeature(poiId, _adapter.Source); feature.Attributes.DeleteAttribute(FeatureAttributes.NAME); feature.Attributes.Add(FeatureAttributes.IMAGE_URL, FeatureAttributes.IMAGE_URL); feature.Attributes.Add(FeatureAttributes.IMAGE_URL + "1", FeatureAttributes.IMAGE_URL + "1"); feature.Attributes.Add(FeatureAttributes.DESCRIPTION, FeatureAttributes.DESCRIPTION); feature.Attributes.Add(FeatureAttributes.WIKIPEDIA + ":en", "page with space"); _elasticSearchGateway.GetPointOfInterestById(poiId, _adapter.Source).Returns(feature); _wikipediaGateway.GetReference("page with space", "en").Returns(new Reference { Url = "page_with_space" }); _dataContainerConverterService.ToDataContainer(Arg.Any <byte[]>(), Arg.Any <string>()).Returns( new DataContainer { Routes = new List <RouteData> { new RouteData { Segments = new List <RouteSegmentData> { new RouteSegmentData { Latlngs = new List <LatLngTime> { new LatLngTime(0, 0), new LatLngTime(0.1, 0.1) } }, new RouteSegmentData() } } } }); var result = _adapter.GetPointOfInterestById(Sources.OSM, poiId, "en").Result; Assert.IsNotNull(result); Assert.AreEqual(string.Empty, result.Title); Assert.AreEqual(FeatureAttributes.DESCRIPTION, result.Description); Assert.AreEqual(2, result.ImagesUrls.Length); Assert.AreEqual(FeatureAttributes.IMAGE_URL, result.ImagesUrls.First()); Assert.IsTrue(result.References.First().Url.Contains("page_with_space")); Assert.IsTrue(result.IsRoute); Assert.IsTrue(result.LengthInKm > 0); }
/// <inheritdoc /> private Reference[] GetReferences(IFeature feature, string language) { var references = new List <Reference>(); foreach (var websiteUrl in feature.Attributes.GetNames().Where(n => n.StartsWith(FeatureAttributes.WEBSITE))) { var url = feature.Attributes[websiteUrl].ToString(); var indexString = websiteUrl.Substring(FeatureAttributes.WEBSITE.Length); var sourceImageUrl = string.Empty; if (feature.Attributes.Exists(FeatureAttributes.POI_SOURCE_IMAGE_URL + indexString)) { sourceImageUrl = feature.Attributes[FeatureAttributes.POI_SOURCE_IMAGE_URL + indexString].ToString(); } else if (feature.Attributes.Exists(FeatureAttributes.POI_SOURCE_IMAGE_URL)) { sourceImageUrl = feature.Attributes[FeatureAttributes.POI_SOURCE_IMAGE_URL].ToString(); } references.Add(new Reference { Url = url, SourceImageUrl = sourceImageUrl }); } var title = feature.Attributes.GetWikipediaTitle(language); if (string.IsNullOrWhiteSpace(title)) { return(references.ToArray()); } var wikipediaReference = _wikipediaGateway.GetReference(title, language); return(references.Concat(new[] { wikipediaReference }).ToArray()); }
/// <inheritdoc /> protected override Reference[] GetReferences(IFeature feature, string language) { var references = base.GetReferences(feature, language); var title = feature.Attributes.GetWikipediaTitle(language); if (string.IsNullOrWhiteSpace(title)) { return(references); } var wikipediaReference = _wikipediaGateway.GetReference(title, language); return(references.Concat(new[] { wikipediaReference }).ToArray()); }
/// <inheritdoc /> private Reference[] GetReferences(IFeature feature, string language) { var references = new List <Reference>(); foreach (var websiteUrl in feature.Attributes.GetNames().Where(n => n.StartsWith(FeatureAttributes.WEBSITE))) { var url = feature.Attributes[websiteUrl].ToString(); var indexString = websiteUrl.Substring(FeatureAttributes.WEBSITE.Length); var sourceImageUrl = string.Empty; if (feature.Attributes.Exists(FeatureAttributes.POI_SOURCE_IMAGE_URL + indexString)) { sourceImageUrl = feature.Attributes[FeatureAttributes.POI_SOURCE_IMAGE_URL + indexString].ToString(); } else if (feature.Attributes.Exists(FeatureAttributes.POI_SOURCE_IMAGE_URL)) { sourceImageUrl = feature.Attributes[FeatureAttributes.POI_SOURCE_IMAGE_URL].ToString(); } references.Add(new Reference { Url = url, SourceImageUrl = sourceImageUrl }); } // HM TODO: is this needed after the merge is taking into account wikipedia too? var title = feature.Attributes.GetWikipediaTitle(language); if (!string.IsNullOrWhiteSpace(title)) { var wikipediaReference = _wikipediaGateway.GetReference(title, language); references.Add(wikipediaReference); } // unique by url return(references.GroupBy(r => r.Url) .Select(r => r.FirstOrDefault()) .ToArray()); }