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 _mockCoreApiWrapperService; private Mock _mockApplicationMappingService; private Mock _mockRegexMappingService; [SetUp] public void Setup() { _mockCoreApiWrapperService = new Mock(); _mockApplicationMappingService = new Mock(); _mockRegexMappingService = new Mock(); _reportService = new ReportService(_mockCoreApiWrapperService.Object, _mockApplicationMappingService.Object, _mockRegexMappingService.Object); } [Test] public void GetReportsToArchive_OK() { var testReports = new List() { new Report() { ReportName = "Test", QueueNumber = "1234", StopDateTime = Convert.ToDateTime("1/1/2021") } }; var archiveRequest = new ArchiveRequest(); var applicationHistories = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; var applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; var testReports = new List() { new Report() { ReportName = "Test", QueueNumber = "1234", StopDateTime = Convert.ToDateTime("1/1/2021") } }; var archiveRequest = new ArchiveRequest(); var applicationHistories = new List() { new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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(() => _reportService.GetReportsToArchiveAsync(archiveRequest)); } [Test] public void DeteriminApplicationMapping_Return_CorrectApplicationMapping1() { var testApplicationMapping1 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; List applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" }, new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; List applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; List applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; List applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" }, new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; var testApplicationMapping2 = new ApplicationMapping() { Identifier = "1", DesignatedName = "Test_NEW", ParameterMappings = new List() { new ParameterMapping() { ParameterCode = "TestingCode2", ParameterValue = "TestingParameterValue2" } } }; List applicationMappings = new List() { testApplicationMapping1, testApplicationMapping2 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; List applicationMappings = new List() { testApplicationMapping1 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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() { new ParameterMapping() { ParameterCode = "TestingCode_NoMatch", ParameterValue = "TestingParameterValue" } } }; List applicationMappings = new List() { testApplicationMapping1 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { 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 applicationMappings = new List() { testApplicationMapping1 }; ApplicationHistory applicationHistory = new ApplicationHistory() { ApplicationName = "Test", ApplicationNumber = 1, QueueNumber = 1234, StopDateTime = Convert.ToDateTime("1/1/2021"), QueueApplicationParameters = new List() { new QueueApplicationParameter() { QueueNumber = 1234, ApplicationNumber = 1, ParameterCode = "TestingCode", ParameterValue = "TestingParameterValue" } } }; var result = _reportService.DeteriminApplicationMapping(applicationMappings, applicationHistory); Assert.NotNull(result); Assert.AreEqual(testApplicationMapping1, result); } }