Files
2026-03-17 09:53:09 -05:00

300 lines
10 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using LCU.API.Internal.Operations.IncentiveApi.Services;
using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Accounts;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Activity;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Transaction;
using Moq;
using NUnit.Framework;
using LCU.API.Internal.Operations.IncentiveApi.Services.MicroApiServices;
namespace Application.UnitTests.Services
{
public class DnaServiceTests
{
private IDnaService _dnaService;
private Mock<ICoreApiWrapperService> _mockCoreApiWrapperService;
[SetUp]
public void SetUp()
{
_mockCoreApiWrapperService = new Mock<ICoreApiWrapperService>();
_dnaService = new DnaService(_mockCoreApiWrapperService.Object);
}
[Test]
public async Task GetNewAccountDetailsForActivities_OK()
{
_mockCoreApiWrapperService.Setup(x => x.GetUpdatedAccountInformation(It.IsAny<List<long>>())).ReturnsAsync(
new List<ActivityAccountDetails>()
{
new ActivityAccountDetails()
{
AccountNumber = 1
},
new ActivityAccountDetails()
{
AccountNumber = 2
},
new ActivityAccountDetails()
{
AccountNumber = 3
}
});
var results = await _dnaService.GetNewAccountDetailsForActivities(new List<Activity>()
{
new Activity()
{
Id = 1,
Detail = new ActivityDetail()
{
AccountNumber = "1"
}
},
new Activity()
{
Id = 2,
Detail = new ActivityDetail()
{
AccountNumber = "2"
}
},
new Activity()
{
Id = 3,
Detail = new ActivityDetail()
{
AccountNumber = "3"
}
}
});
Assert.NotNull(results);
Assert.AreEqual(3, results.Count);
_mockCoreApiWrapperService.Verify(x =>
x.GetUpdatedAccountInformation(It.Is<List<long>>(x =>
x.Contains(1) && x.Contains(2) && x.Contains(3))));
}
[Test]
public async Task GetNewAccountDetailsForActivities_OnlyKnown_OK()
{
_mockCoreApiWrapperService.Setup(x => x.GetUpdatedAccountInformation(It.IsAny<List<long>>())).ReturnsAsync(
new List<ActivityAccountDetails>()
{
new ActivityAccountDetails()
{
AccountNumber = 1
},
new ActivityAccountDetails()
{
AccountNumber = 3
}
});
var results = await _dnaService.GetNewAccountDetailsForActivities(new List<Activity>()
{
new Activity()
{
Id = 1,
Detail = new ActivityDetail()
{
AccountNumber = "1"
}
},
//Null Account Number
new Activity()
{
Id = 2,
Detail = new ActivityDetail()
{
}
},
new Activity()
{
Id = 3,
Detail = new ActivityDetail()
{
AccountNumber = "3"
}
}
});
Assert.NotNull(results);
Assert.AreEqual(2, results.Count);
_mockCoreApiWrapperService.Verify(x =>
x.GetUpdatedAccountInformation(It.Is<List<long>>(x =>
x.Contains(1) && x.Contains(3))));
}
[Test]
public async Task GetNewAccountDetailsForActivities_BadAccountNumber_OK()
{
_mockCoreApiWrapperService.Setup(x => x.GetUpdatedAccountInformation(It.IsAny<List<long>>())).ReturnsAsync(
new List<ActivityAccountDetails>()
{
new ActivityAccountDetails()
{
AccountNumber = 1
},
new ActivityAccountDetails()
{
AccountNumber = 3
}
});
var results = await _dnaService.GetNewAccountDetailsForActivities(new List<Activity>()
{
new Activity()
{
Id = 1,
Detail = new ActivityDetail()
{
AccountNumber = "ADJFALKDSFJA"
}
},
//Null Account Number
new Activity()
{
Id = 2,
Detail = new ActivityDetail()
{
AccountNumber = "1"
}
},
new Activity()
{
Id = 3,
Detail = new ActivityDetail()
{
AccountNumber = "12aDFKADFSF"
}
}
});
Assert.NotNull(results);
Assert.AreEqual(2, results.Count);
_mockCoreApiWrapperService.Verify(x =>
x.GetUpdatedAccountInformation(It.Is<List<long>>(x =>
x.Contains(1))));
}
[Test]
public async Task QueryActivityManagerForActivities_OK()
{
_mockCoreApiWrapperService.Setup(x => x.GetActivityManagerActivities(It.IsAny<ActivityQueryRequest>())).ReturnsAsync(
new List<NewActivityManagerReferral>()
{
new NewActivityManagerReferral()
{
ActivityId = 1
},
new NewActivityManagerReferral()
{
ActivityId = 2
},
new NewActivityManagerReferral()
{
ActivityId = 3
}
});
var results = await _dnaService.QueryActivityManagerForActivities(new List<string>()
{
"1","2","3"
});
Assert.NotNull(results);
Assert.AreEqual(3, results.Count);
_mockCoreApiWrapperService.Verify(x =>
x.GetActivityManagerActivities(It.Is<ActivityQueryRequest>(x =>
x.ActivityIds.Contains(1) && x.ActivityIds.Contains(2) && x.ActivityIds.Contains(3))));
}
[Test]
public async Task QueryActivityManagerForActivities_Null_OK()
{
_mockCoreApiWrapperService.Setup(x => x.GetActivityManagerActivities(It.IsAny<ActivityQueryRequest>())).ReturnsAsync(
new List<NewActivityManagerReferral>()
{
new NewActivityManagerReferral()
{
ActivityId = 1
},
new NewActivityManagerReferral()
{
ActivityId = 3
}
});
var results = await _dnaService.QueryActivityManagerForActivities(new List<string>()
{
"1",null,"3"
});
Assert.NotNull(results);
Assert.AreEqual(2, results.Count);
_mockCoreApiWrapperService.Verify(x =>
x.GetActivityManagerActivities(It.Is<ActivityQueryRequest>(x =>
x.ActivityIds.Contains(1) && x.ActivityIds.Contains(3))));
}
[Test]
public async Task GetTransactionHistory_OK()
{
var accountNumber = "123456";
var startDate = DateTime.Now.AddDays(-1);
var endDate = DateTime.Now;
var transactionCodes = new List<string> { "XDEP" };
_mockCoreApiWrapperService.Setup(x => x.GetTransactionHistory(accountNumber, startDate, endDate, transactionCodes)).ReturnsAsync(
new List<TransactionHistory>()
{
new TransactionHistory()
{
Id = "1"
},
new TransactionHistory()
{
Id = "2"
}
}.AsReadOnly).Verifiable();
var results = await _dnaService.GetTransactionHistory(accountNumber, startDate, endDate, transactionCodes);
_mockCoreApiWrapperService.Verify();
Assert.NotNull(results);
Assert.AreEqual(2, results.Count);
}
[Test]
public async Task GetTransactionHistory_Null()
{
var accountNumber = "123456";
var startDate = DateTime.Now.AddDays(-1);
var endDate = DateTime.Now;
var transactionCodes = new List<string> { "XDEP" };
_mockCoreApiWrapperService.Setup(x => x.GetTransactionHistory(accountNumber, startDate, endDate, transactionCodes)).ReturnsAsync((IReadOnlyCollection<TransactionHistory>)null).Verifiable();
var results = await _dnaService.GetTransactionHistory(accountNumber, startDate, endDate, transactionCodes);
_mockCoreApiWrapperService.Verify();
Assert.Null(results);
}
}
}