436 lines
14 KiB
C#
436 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using LCU.API.Collections.RepoApi.Domain.AlertChecker;
|
|
using LCU.API.Collections.RepoApi.Domain.Processing;
|
|
using LCU.Shared.Collections.RepoApiLib.Models;
|
|
using LCU.Shared.Collections.RepoApiLib.Models.Consumer;
|
|
using Moq;
|
|
using Xunit;
|
|
|
|
namespace LCU.API.Collections.RepoApiTests.AlertCheckers
|
|
{
|
|
public class DocumentNotFoundCheckerTest
|
|
{
|
|
public DocumentNotFoundCheckerTest()
|
|
{
|
|
}
|
|
|
|
private MemberDetail MakeMemberWithAddressInState(string state)
|
|
{
|
|
return new MemberDetail
|
|
{
|
|
Address = new AddressDetail
|
|
{
|
|
State = state
|
|
}
|
|
};
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfSaleBankruptcy_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
Bankruptcy = "B13",
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfSaleWiFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>
|
|
{
|
|
new RepoLetter
|
|
{
|
|
ActionCode = "LTR35",
|
|
NoticeType = "WI Repo-Notice of Plan to Sell"
|
|
}
|
|
},
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfSaleIlFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>
|
|
{
|
|
new RepoLetter
|
|
{
|
|
ActionCode = "701",
|
|
NoticeType = "Right to Reinstate/Redeem-Illinois"
|
|
}
|
|
},
|
|
Member = MakeMemberWithAddressInState("IL"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfSaleWrongStatus_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Sale", "LTR35", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfSaleNotFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 5,
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 5,
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
|
|
var checker = new DocumentNotFoundChecker("Notice of Plan to Sell", "LTR35", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal("Notice of Plan to Sell Not Found", result[0].Message);
|
|
Assert.Equal("123456-789", result[0].AccountNo);
|
|
Assert.Equal("Batch", result[0].CreatedBy);
|
|
Assert.InRange(result[0].DateAdded, DateTime.Now.AddSeconds(-1), DateTime.Now.AddSeconds(1));
|
|
Assert.Equal(5, result[0].RepoId);
|
|
Assert.Null(result[0].MarkedReadBy);
|
|
Assert.Null(result[0].DateMarkedRead);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfRepossessionBankruptcy_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
Bankruptcy = "B13",
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfRepossessionWiFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>
|
|
{
|
|
new RepoLetter
|
|
{
|
|
ActionCode = "LTR34",
|
|
NoticeType = "Repo-WI Notice of Repossession"
|
|
}
|
|
},
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfRepossessionIlFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>
|
|
{
|
|
new RepoLetter
|
|
{
|
|
ActionCode = "701",
|
|
NoticeType = "Right to Reinstate/Redeem-Illinois"
|
|
}
|
|
},
|
|
Member = MakeMemberWithAddressInState("IL"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfRepossessionWrongStatus_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "RECA"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Create_NoticeOfRepossessionNotFound_Ok()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 5,
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
RepoId = 5,
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
var checker = new DocumentNotFoundChecker("Notice of Repossession", "LTR34", "701", "REPO");
|
|
|
|
var result = checker.CheckForAlert(slip);
|
|
|
|
Assert.NotNull(result[0]);
|
|
Assert.Equal("Notice of Repossession Not Found", result[0].Message);
|
|
Assert.Equal("123456-789", result[0].AccountNo);
|
|
Assert.Equal("Batch", result[0].CreatedBy);
|
|
Assert.InRange(result[0].DateAdded, DateTime.Now.AddSeconds(-1), DateTime.Now.AddSeconds(1));
|
|
Assert.Equal(5, result[0].RepoId);
|
|
Assert.Null(result[0].MarkedReadBy);
|
|
Assert.Null(result[0].DateMarkedRead);
|
|
}
|
|
|
|
[Fact]
|
|
public void Null_Letters_Dont_Throw_Exception()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = null,
|
|
Member = MakeMemberWithAddressInState("WI"),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
Bankruptcy = "B13",
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
|
|
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
|
|
|
|
List<EventAlert> result = null;
|
|
|
|
try
|
|
{
|
|
result = checker.CheckForAlert(slip);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Assert.True(false, "Null letters should not have thrown an exception.");
|
|
}
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Null_Member_Does_Not_Throw_Exception()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = null,
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
Bankruptcy = "B13",
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
|
|
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
|
|
|
|
List<EventAlert> result = null;
|
|
|
|
try
|
|
{
|
|
result = checker.CheckForAlert(slip);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Assert.True(false, "A null member should not have thrown an exception.");
|
|
}
|
|
|
|
Assert.Null(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Null_Member_Address_Does_Not_Throw_Exception()
|
|
{
|
|
var slip = new RepoAccountProcessingSlip()
|
|
{
|
|
Letters = new List<RepoLetter>(),
|
|
Member = MakeMemberWithAddressInState(null),
|
|
ExistingRepoAccount = new RepoAccount()
|
|
{
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
},
|
|
UpdatedRepoAccount = new RepoAccount()
|
|
{
|
|
Bankruptcy = "B13",
|
|
AccountNo = "123456-789",
|
|
Status = "REPO"
|
|
}
|
|
};
|
|
|
|
var checker = new DocumentNotFoundChecker("RTC Letter", "RTC 3");
|
|
|
|
List<EventAlert> result = null;
|
|
|
|
try
|
|
{
|
|
result = checker.CheckForAlert(slip);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Assert.True(false, "A null member address should not have thrown an exception.");
|
|
}
|
|
|
|
Assert.Null(result);
|
|
}
|
|
}
|
|
} |