Files
monorepo/LCU.API.Internal.OnlineLoanApp/CRIF.ACTion.Tests/Decisioning/GetApplicationProductsResponseParserTest.cs
T
2026-03-11 11:18:25 -05:00

61 lines
2.0 KiB
C#

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<ArgumentException>(() =>
GetDecisionStatusParserResponse("Multiple-AppDetails.xml", null));
}
[Fact]
public void InvalidApplicationIdInResponse()
{
Assert.Throws<InvalidOperationException>(() =>
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);
}
}
}