public PostcodeDto MapToPostcodeDto(string postcode, IEnumerable <QasFormatRootResponse> qasFormatRootResponses) { DateTime timeNow = DateTime.UtcNow; postcode = PostcodeFormatter.FormatPostcode(postcode); PostcodeDto postcodeDto = new PostcodeDto(); postcodeDto.Postcode = postcode; postcodeDto.LastUpdated = timeNow; foreach (var qasFormatRootResponse in qasFormatRootResponses) { AddressDetailsDto addressDetailsDto = new AddressDetailsDto(); foreach (QasFormatAddressReponse address in qasFormatRootResponse.Address) // to deal with strange way results are returned ... { if (!String.IsNullOrWhiteSpace(address.AddressLine1)) { addressDetailsDto.AddressLine1 = address.AddressLine1; } else if (!String.IsNullOrWhiteSpace(address.AddressLine2)) { addressDetailsDto.AddressLine2 = address.AddressLine2; } else if (!String.IsNullOrWhiteSpace(address.AddressLine3)) { addressDetailsDto.AddressLine3 = address.AddressLine3; } else if (!String.IsNullOrWhiteSpace(address.Locality)) { addressDetailsDto.Locality = address.Locality; } else if (!String.IsNullOrWhiteSpace(address.PostalCode)) { addressDetailsDto.Postcode = PostcodeFormatter.FormatPostcode(address.PostalCode); } } // filter out postcodes that weren't returned or don't have the expected postcode if (!String.IsNullOrWhiteSpace(addressDetailsDto.Postcode) && addressDetailsDto.Postcode == postcode) { addressDetailsDto.LastUpdated = timeNow; postcodeDto.AddressDetails.Add(addressDetailsDto); } } return(postcodeDto); }
public void MapToPostcodeDto() { QasMapper qasMapper = new QasMapper(); var postCode = "ng1 5fs"; var expectedPostcode = PostcodeFormatter.FormatPostcode(postCode); IEnumerable <QasFormatRootResponse> qasFormatRootResponses = new List <QasFormatRootResponse>() { new QasFormatRootResponse() { Address = new List <QasFormatAddressReponse>() { new QasFormatAddressReponse() { PostalCode = postCode }, new QasFormatAddressReponse() { AddressLine1 = "line1" }, new QasFormatAddressReponse() { AddressLine2 = "line2" }, new QasFormatAddressReponse() { AddressLine3 = "line3" }, new QasFormatAddressReponse() { Locality = "loc" }, } }, new QasFormatRootResponse() { Address = new List <QasFormatAddressReponse>() { new QasFormatAddressReponse() { PostalCode = "FilterMeOut" }, new QasFormatAddressReponse() { AddressLine1 = "line1" }, new QasFormatAddressReponse() { AddressLine2 = "line2" }, new QasFormatAddressReponse() { AddressLine3 = "line3" }, new QasFormatAddressReponse() { Locality = "loc" } } }, new QasFormatRootResponse() { Address = new List <QasFormatAddressReponse>() { new QasFormatAddressReponse() { PostalCode = null }, new QasFormatAddressReponse() { AddressLine1 = "line1" }, new QasFormatAddressReponse() { AddressLine2 = "line2" }, new QasFormatAddressReponse() { AddressLine3 = "line3" }, new QasFormatAddressReponse() { Locality = "loc" } } } }; PostcodeDto result = qasMapper.MapToPostcodeDto(postCode, qasFormatRootResponses); Assert.AreEqual(1, result.AddressDetails.Count); Assert.AreEqual(expectedPostcode, result.Postcode); Assert.AreNotEqual(DateTime.MinValue, result.LastUpdated); AddressDetailsDto addressResult = result.AddressDetails.FirstOrDefault(); Assert.AreEqual(expectedPostcode, addressResult.Postcode); Assert.AreEqual("line1", addressResult.AddressLine1); Assert.AreEqual("line2", addressResult.AddressLine2); Assert.AreEqual("line3", addressResult.AddressLine3); Assert.AreEqual("loc", addressResult.Locality); Assert.AreNotEqual(DateTime.MinValue, addressResult.LastUpdated); }