public static JobCategory Map(this JobCategoryApiResponse resp) { if (resp != null) { return(new JobCategory { DocumentId = resp.Uri != null?Guid.Parse(resp.Uri.Segments.Last().TrimEnd('/')) : Guid.NewGuid(), Description = resp.Description, Title = resp.Title, Uri = resp.Uri, Links = resp.Links, //Build a fake URI to get the last segment CanonicalName = new Uri("http://unspecifiedhost" + resp.WebsiteUri).Segments.Last().TrimEnd('/'), }); } throw new InvalidOperationException($"{nameof(resp)} is null"); }
public void MapJobCategoryApiResponseToJobCategoryReturnsJobProfile() { // arrange var apiJobCategory = new JobCategoryApiResponse { Description = "An emergency services category", WebsiteUri = new Uri("http://somewhere/something/something-else/"), Title = "Emergency Services", Uri = new Uri($"http://someuri/jobcategory/identifier/{Guid.NewGuid()}"), Links = new List <Link> { new Link { LinkValue = new KeyValuePair <string, Models.DynamicLink>("jobprofile", new Models.DynamicLink { Href = new Uri($"http://someuri/jobprofile/identifier/{Guid.NewGuid()}") }) } } }; // act var jobCategory = apiJobCategory.Map(); // assert Assert.NotNull(apiJobCategory); Assert.Equal(apiJobCategory.Title, jobCategory.Title); Assert.Equal(apiJobCategory.Description, jobCategory.Description); Assert.Equal(apiJobCategory.Uri, jobCategory.Uri); Assert.Equal(apiJobCategory.Links, jobCategory.Links); Assert.Equal(apiJobCategory.WebsiteUri.Segments.Last().TrimEnd('/'), jobCategory.CanonicalName); }