using System; using System.Collections.Generic; using System.Xml; using System.Xml.Linq; using Org.XmlUnit.Diff; using Xunit; using CRIF.ACTion.Common.Parsers; using CRIF.ACTion.Loan.Individuals; using Landmark.OLA.Models.Addresses.Enums; using Landmark.OLA.Models.Individuals; using Landmark.OLA.Models.Individuals.Enums; using Landmark.OLA.Models.Residences; namespace CRIF.ACTion.Tests.Loan.Individuals { public class AddIndividualResponseParserTest { private readonly IResponseParser IndividualParser; private readonly int applicationId = 1100950; public AddIndividualResponseParserTest() { IndividualParser = new AddIndividualResponseParser(); } private readonly Individual individual = new(new Guid("325f9caf-b08a-44dc-af67-bd49db6a822c")) { FirstName = "Jane", MiddleInitial = "A", LastName = "Doe", DOB = new DateTime(2018, 7, 9), Phone = "1235555555", PhoneType = PhoneType.Home, SSN = "000090001", Email = "test@example.com", IsMarried = false, Language = LanguageOption.English, HasOptedOutTCPA = true, Address = new CurrentResidenceAddress(new Guid("325f9caf-b08a-44dc-af67-bd49db6a822c")) { Address1 = "123 Main St", City = "New Berlin", State = StateOption.WI, PostalCode = "53151", Country = CountryOption.UnitedStates, MonthsResided = 12, ResidenceType = ResidenceTypeOption.Own, MonthlyPayment = 100, }, }; [Fact] public void ErrorResponseParse() { XmlDocument doc = new(); doc.Load("ExampleXML" + System.IO.Path.DirectorySeparatorChar + "AddIndividualError.xml"); XDocument response; using (XmlNodeReader reader = new(doc)) { response = XDocument.Load(reader); } Exception ex = Assert.Throws(() => IndividualParser.Parse(response.Root)); Assert.Equal("The 'Common:isCollateralGrantorFL' attribute is not declared. on line 1 position 166", ex.Message); } [Fact] public void SuccessResponseParse() { XmlDocument doc = new(); doc.Load("ExampleXML" + System.IO.Path.DirectorySeparatorChar + "AddIndividualSuccess.xml"); XDocument response; using (XmlNodeReader reader = new(doc)) { response = XDocument.Load(reader); } var parsedIndividual = IndividualParser.Parse(response.Root); Assert.Equal("Jane", parsedIndividual.FirstName); } [Fact] public void Validate() { var addIndividual = new AddIndividualRequestBuilder(applicationId.ToString(), individual, TestCommon.GetTestSettings()).Build(); Assert.Empty(TestCommon.Validate(addIndividual)); } [Fact] public void CorrectBuild() { var addIndividual = new AddIndividualRequestBuilder(applicationId.ToString(), individual, TestCommon.GetTestSettings()).Build(); var result = TestCommon.Compare(addIndividual, "ExampleXML" + System.IO.Path.DirectorySeparatorChar + "AddIndividual-Simple.xml"); Assert.Empty(result); } [Fact] public void BadNamespace() { var addIndividual = new AddIndividualRequestBuilder(applicationId.ToString(), individual, TestCommon.GetTestSettings()).Build(); var result = TestCommon.Compare(addIndividual, "ExampleXML" + System.IO.Path.DirectorySeparatorChar + "AddIndividual-BadNamespace.xml"); Assert.NotEmpty(result); } } }