using System; using System.Collections.Generic; using System.Xml.Linq; using Xunit; using CRIF.ACTion.Decisioning; using Landmark.OLA.Models.Decisioning; using Landmark.OLA.Models.Decisioning.Enums; namespace CRIF.ACTion.Tests.Decisioning { public class GetApplicationProductsResponseParserTest { private const string LoanApplicationId = "1200217"; [Fact] public void DecisionStatus_Review() { GetDecisionStatusParserResponse("CashBackCC_Under-Review.xml", new DecisioningDetails([85,]) { DecisioningState = DecisioningState.Ready, DecisioningResult = DecisioningResult.DecisionStatus_Review, }); } [Fact] public void InvalidApplication() { /* This situation would likely not occur with our use cases, but if an application has more than one AppDetail section, the client will need to ask for a specific result. */ Assert.Throws(() => GetDecisionStatusParserResponse("Multiple-AppDetails.xml", null)); } [Fact] public void InvalidApplicationIdInResponse() { Assert.Throws(() => GetDecisionStatusParserResponse("InvalidApplicationId.xml", null)); } private static void GetDecisionStatusParserResponse(string fileName, DecisioningDetails expectedResult) { string successResponsePath = "ExampleXML" + System.IO.Path.DirectorySeparatorChar + "GetApplicationsProductsParser" + System.IO.Path.DirectorySeparatorChar + fileName; var decisionResponse = (XElement)XDocument.Load(successResponsePath).FirstNode; var parser = new GetApplicationProductsResponseParser(); parser.SetLoanId(LoanApplicationId); var result = parser.Parse(decisionResponse); Assert.Equal(expectedResult, result); } } }