Files
monorepo/LCU.API.Internal.ArchiverApi/LCU.Api.Internal.ArchiverApiTest/Services/ReportServiceTest.cs
T
2026-03-17 10:03:23 -05:00

597 lines
21 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Moq;
using NUnit.Framework;
using LCU.Api.Internal.ArchiverApi.Services;
using LCU.Library.Internal.ArchiverApiModel.Models;
using LCU.Library.Internal.ArchiverApiModel.Entities;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.ApplicationHistories;
namespace LCU.Api.Internal.ArchiverApiTest;
public class ReportServiceTest
{
private ReportService _reportService;
private Mock<ICoreApiWrapperService> _mockCoreApiWrapperService;
private Mock<IApplicationMappingService> _mockApplicationMappingService;
private Mock<IRegexMappingService> _mockRegexMappingService;
[SetUp]
public void Setup()
{
_mockCoreApiWrapperService = new Mock<ICoreApiWrapperService>();
_mockApplicationMappingService = new Mock<IApplicationMappingService>();
_mockRegexMappingService = new Mock<IRegexMappingService>();
_reportService = new ReportService(_mockCoreApiWrapperService.Object, _mockApplicationMappingService.Object, _mockRegexMappingService.Object);
}
[Test]
public void GetReportsToArchive_OK()
{
var testReports = new List<Report>()
{
new Report()
{
ReportName = "Test",
QueueNumber = "1234",
StopDateTime = Convert.ToDateTime("1/1/2021")
}
};
var archiveRequest = new ArchiveRequest();
var applicationHistories = new List<ApplicationHistory>()
{
new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021")
}
};
_mockCoreApiWrapperService.Setup(x => x.GetApplicationHistories(archiveRequest)).ReturnsAsync(applicationHistories);
var result = _reportService.GetReportsToArchiveAsync(archiveRequest).Result;
Assert.NotNull(result);
Assert.AreEqual("Test", result.FirstOrDefault().ReportName);
Assert.AreEqual("1234", result.FirstOrDefault().QueueNumber);
Assert.AreEqual(Convert.ToDateTime("1/1/2021"), result.FirstOrDefault().StopDateTime);
Assert.AreEqual("Test", result.FirstOrDefault().DisplayReportName);
}
[Test]
public void GetReportsToArchive_DispalyReportName_FromApplicationMapping()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW_1",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
var applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
var testReports = new List<Report>()
{
new Report()
{
ReportName = "Test",
QueueNumber = "1234",
StopDateTime = Convert.ToDateTime("1/1/2021")
}
};
var archiveRequest = new ArchiveRequest();
var applicationHistories = new List<ApplicationHistory>()
{
new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
}
};
_mockCoreApiWrapperService.Setup(x => x.GetApplicationHistories(archiveRequest)).ReturnsAsync(applicationHistories);
_mockApplicationMappingService.Setup(x => x.GetAsync()).ReturnsAsync(applicationMappings);
var result = _reportService.GetReportsToArchiveAsync(archiveRequest).Result;
Assert.NotNull(result);
Assert.AreEqual("Test", result.FirstOrDefault().ReportName);
Assert.AreEqual("1234", result.FirstOrDefault().QueueNumber);
Assert.AreEqual(Convert.ToDateTime("1/1/2021"), result.FirstOrDefault().StopDateTime);
}
[Test]
public void GetReportsToArchive_Exception()
{
var archiveRequest = new ArchiveRequest();
_mockCoreApiWrapperService.Setup(x => x.GetApplicationHistories(archiveRequest)).Throws(new Exception("Error"));
Assert.ThrowsAsync<Exception>(() => _reportService.GetReportsToArchiveAsync(archiveRequest));
}
[Test]
public void DeteriminApplicationMapping_Return_CorrectApplicationMapping1()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.NotNull(result);
Assert.AreEqual(testApplicationMapping1, result);
}
[Test]
public void DeteriminApplicationMapping_Return_testApplicationMapping1_MatchBothParameters()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
},
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
},
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.NotNull(result);
Assert.AreEqual(testApplicationMapping1, result);
}
[Test]
public void DeteriminApplicationMapping_Return_Null_ParameterCodeNoMatch()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode_NOPE",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.Null(result);
}
[Test]
public void DeteriminApplicationMapping_Return_Null_ParameterValueNoMatch()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue_NOPE"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.Null(result);
}
[Test]
public void DeteriminApplicationMapping_Return_Null_DoesNotMatchBothParameters()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
},
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
var testApplicationMapping2 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode2",
ParameterValue = "TestingParameterValue2"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1,
testApplicationMapping2
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.Null(result);
}
[Test]
public void DeteriminApplicationMapping_Return_SingleWithParameters_CorrectApplicationMapping1()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.NotNull(result);
Assert.AreEqual(testApplicationMapping1, result);
}
[Test]
public void DeteriminApplicationMapping_Return_SingleWithParameters_NoMatch_Null()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ParameterMappings = new List<ParameterMapping>()
{
new ParameterMapping()
{
ParameterCode = "TestingCode_NoMatch",
ParameterValue = "TestingParameterValue"
}
}
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.Null(result);
}
[Test]
public void DeteriminApplicationMapping_Return_SingleWithOutParameters_CorrectApplicationMapping1()
{
var testApplicationMapping1 = new ApplicationMapping()
{
Identifier = "1",
DesignatedName = "Test_NEW",
ApplicationOverrideName = "Test-File"
};
List<ApplicationMapping> applicationMappings = new List<ApplicationMapping>()
{
testApplicationMapping1
};
ApplicationHistory applicationHistory = new ApplicationHistory()
{
ApplicationName = "Test",
ApplicationNumber = 1,
QueueNumber = 1234,
StopDateTime = Convert.ToDateTime("1/1/2021"),
QueueApplicationParameters = new List<QueueApplicationParameter>()
{
new QueueApplicationParameter()
{
QueueNumber = 1234,
ApplicationNumber = 1,
ParameterCode = "TestingCode",
ParameterValue = "TestingParameterValue"
}
}
};
var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory);
Assert.NotNull(result);
Assert.AreEqual(testApplicationMapping1, result);
}
}