Adding
This commit is contained in:
+323
@@ -0,0 +1,323 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services;
|
||||
using CsvHelper;
|
||||
using CsvHelper.Configuration;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Entities;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Enums;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Requests;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services.MicroApiServices;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services.Temenos;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Models.Temenos;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Models.Constants;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
|
||||
namespace Application.UnitTests.Services.Temenos
|
||||
{
|
||||
public class ImportCreditCardSalesServiceTest
|
||||
{
|
||||
private ImportCreditCardSalesService _importCreditCardSalesService;
|
||||
private Mock<IUserRepository> _mockUserRepository;
|
||||
private Mock<IActivityService> _mockActivityService;
|
||||
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
|
||||
private Mock<IDeadActivityService> _mockDeadActivityService;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_mockUserRepository = new Mock<IUserRepository>();
|
||||
_mockActivityService = new Mock<IActivityService>();
|
||||
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
|
||||
_mockDeadActivityService = new Mock<IDeadActivityService>();
|
||||
_importCreditCardSalesService = new ImportCreditCardSalesService(_mockActivityService.Object,
|
||||
_mockUserRepository.Object,
|
||||
_mockFileOperationsApiService.Object,
|
||||
_mockDeadActivityService.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportCreditCardSales_BusinessPersonalAndDeadActivities_OK()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny<string>())).ReturnsAsync(fileContents);
|
||||
|
||||
AppUser user = GetAppUser();
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockActivityService.Setup(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()));
|
||||
_mockDeadActivityService.Setup(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
await _importCreditCardSalesService.HandleImportCreditCardSales(request);
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Exactly(3));
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Once);
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportCreditCardSales_UserRepositoryFails_ActivitesSavedAsDead()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny<string>())).ReturnsAsync(fileContents);
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Failure"));
|
||||
_mockDeadActivityService.Setup(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
await _importCreditCardSalesService.HandleImportCreditCardSales(request);
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Exactly(3));
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportCreditCardSales_UserHomeDeptIsNull_ActivitesSavedAsDead()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny<string>())).ReturnsAsync(fileContents);
|
||||
|
||||
AppUser user = GetAppUser(false);
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockDeadActivityService.Setup(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
await _importCreditCardSalesService.HandleImportCreditCardSales(request);
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Exactly(3));
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportCreditCardSales_DeadActivityServiceFails_OtherActivitiesSave()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny<string>())).ReturnsAsync(fileContents);
|
||||
|
||||
AppUser user = GetAppUser();
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockActivityService.Setup(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()));
|
||||
_mockDeadActivityService.Setup(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
await _importCreditCardSalesService.HandleImportCreditCardSales(request);
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Exactly(3));
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Once);
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void HandleImportCreditCardSales_FileOperationsFindFilesFails_ExceptionThrown()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importCreditCardSalesService.HandleImportCreditCardSales(request));
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void HandleImportCreditCardSales_FileOperationsGetFileContentFails_ExceptionThrown()
|
||||
{
|
||||
string fileContents = GetFileContent();
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent("path\\filename")).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportCreditCardSalesRequest()
|
||||
{
|
||||
FilePath = "path",
|
||||
DynamicFileName = "filename"
|
||||
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importCreditCardSalesService.HandleImportCreditCardSales(request));
|
||||
|
||||
_mockFileOperationsApiService.Verify(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
}
|
||||
|
||||
private static AppUser GetAppUser(bool assignHomeDepartment = true)
|
||||
{
|
||||
var department = new Department
|
||||
{
|
||||
DepartmentName = "Dept1",
|
||||
Id = 55,
|
||||
State = DepartmentState.Active
|
||||
};
|
||||
var user = new AppUser
|
||||
{
|
||||
AdEmail = "[email protected]",
|
||||
EmployeeId = "11771",
|
||||
FullName = "John Doe",
|
||||
Departments = new List<UserDepartment>()
|
||||
};
|
||||
var assignment = new UserDepartment
|
||||
{
|
||||
Id = 99,
|
||||
Department = department,
|
||||
Employee = user,
|
||||
Role = Role.BM,
|
||||
IsHome = true,
|
||||
StartDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1),
|
||||
EndDate = null
|
||||
};
|
||||
|
||||
if (assignHomeDepartment)
|
||||
{
|
||||
user.Departments.Add(assignment);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
private static string GetFileContent()
|
||||
{
|
||||
var fileContent = new List<TemenosCreditCardSale>()
|
||||
{
|
||||
new()
|
||||
{
|
||||
ApplicationID = "123",
|
||||
SubProduct = TemenosImportConstants.PersonalCardSubProduct,
|
||||
FinalLoanAmount = "$1000.00",
|
||||
DisbursedDate = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy"),
|
||||
ApplicantFirstName = "FName",
|
||||
ApplicantLastName = "LName",
|
||||
OrganizationName = string.Empty,
|
||||
LOResponsibleEmployeeEmail = string.Empty,
|
||||
LODirectLoanOfficer = string.Empty,
|
||||
ReferringEmployeeEmail = "[email protected]",
|
||||
},
|
||||
new()
|
||||
{
|
||||
ApplicationID = "456",
|
||||
SubProduct = TemenosImportConstants.PersonalCardSubProduct,
|
||||
FinalLoanAmount = "$1000.00",
|
||||
DisbursedDate = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy"),
|
||||
ApplicantFirstName = "FName",
|
||||
ApplicantLastName = "LName",
|
||||
OrganizationName = string.Empty,
|
||||
LOResponsibleEmployeeEmail = string.Empty,
|
||||
LODirectLoanOfficer = "LastName, FirstName",
|
||||
ReferringEmployeeEmail = string.Empty,
|
||||
},
|
||||
new()
|
||||
{
|
||||
ApplicationID = "789",
|
||||
SubProduct = "BusinessCard",
|
||||
FinalLoanAmount = "$1000.00",
|
||||
DisbursedDate = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy"),
|
||||
ApplicantFirstName = string.Empty,
|
||||
ApplicantLastName = string.Empty,
|
||||
OrganizationName = "Business Name",
|
||||
LOResponsibleEmployeeEmail = "[email protected]",
|
||||
LODirectLoanOfficer = string.Empty,
|
||||
ReferringEmployeeEmail = string.Empty,
|
||||
},
|
||||
new()
|
||||
{
|
||||
ApplicationID = "987",
|
||||
SubProduct = "BusinessCard",
|
||||
FinalLoanAmount = "$1000.00",
|
||||
DisbursedDate = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy"),
|
||||
ApplicantFirstName = "Dead",
|
||||
ApplicantLastName = "Activity",
|
||||
OrganizationName = string.Empty,
|
||||
LOResponsibleEmployeeEmail = string.Empty,
|
||||
LODirectLoanOfficer = string.Empty,
|
||||
ReferringEmployeeEmail = string.Empty,
|
||||
},
|
||||
new()
|
||||
{
|
||||
ApplicationID = "654",
|
||||
SubProduct = string.Empty,
|
||||
FinalLoanAmount = "$1000.00",
|
||||
DisbursedDate = DateTime.Now.AddDays(-1).ToString("MM/dd/yyyy"),
|
||||
ApplicantFirstName = "Record",
|
||||
ApplicantLastName = "Ignored",
|
||||
OrganizationName = string.Empty,
|
||||
LOResponsibleEmployeeEmail = string.Empty,
|
||||
LODirectLoanOfficer = string.Empty,
|
||||
ReferringEmployeeEmail = string.Empty,
|
||||
}
|
||||
};
|
||||
|
||||
var writer = new StringWriter();
|
||||
|
||||
var config = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = "|", HasHeaderRecord = false };
|
||||
|
||||
using (var csv = new CsvWriter(writer, config))
|
||||
{
|
||||
csv.WriteRecords(fileContent);
|
||||
}
|
||||
|
||||
return writer.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
+673
@@ -0,0 +1,673 @@
|
||||
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using CsvHelper.Configuration;
|
||||
using CsvHelper;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Requests;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Entities;
|
||||
using LCU.Library.Internal.IncentiveApiModels.Enums;
|
||||
using LCU.Library.Internal.Exceptions;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services.MicroApiServices;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Services.Temenos;
|
||||
using LCU.API.Internal.Operations.IncentiveApi.Models.Temenos;
|
||||
using LCU.Library.Internal.FileOperationsModels.Models;
|
||||
|
||||
namespace Application.UnitTests.Services.Temenos
|
||||
{
|
||||
public class ImportIndirectVehicleSalesServiceTest
|
||||
{
|
||||
private ImportIndirectVehicleSalesService _importIndirectVehicleSalesService;
|
||||
private Mock<IUserRepository> _mockUserRepository;
|
||||
private Mock<IActivityService> _mockActivityService;
|
||||
private Mock<IFileOperationsApiService> _mockFileOperationsApiService;
|
||||
private Mock<IDeadActivityService> _mockDeadActivityService;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp()
|
||||
{
|
||||
_mockUserRepository = new Mock<IUserRepository>();
|
||||
_mockActivityService = new Mock<IActivityService>();
|
||||
_mockFileOperationsApiService = new Mock<IFileOperationsApiService>();
|
||||
_mockDeadActivityService = new Mock<IDeadActivityService>();
|
||||
_importIndirectVehicleSalesService = new ImportIndirectVehicleSalesService(_mockActivityService.Object,
|
||||
_mockUserRepository.Object,
|
||||
_mockFileOperationsApiService.Object,
|
||||
_mockDeadActivityService.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_DeadAndAcceptedActivities_Ok()
|
||||
{
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
ApplicationID = "123",
|
||||
CreatedDate = DateTime.Now.AddDays(-50).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
},
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
ApplicationID = "321",
|
||||
CreatedDate = DateTime.Now.AddDays(-30).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ApplicationID = "321",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser("[email protected]");
|
||||
_mockUserRepository.SetupSequence(x => x.FindUserByAdEmailAsync(It.IsAny<string>()))
|
||||
.ReturnsAsync(user)
|
||||
.ReturnsAsync((AppUser)null);
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Exactly(2));
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_NoMatches_NoActivitiesSaved()
|
||||
{
|
||||
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
ApplicationID = "123",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
},
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
ApplicationID = "321",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "987-65-4321",
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-20).ToString(),
|
||||
ApplicationID = "321",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser("[email protected]");
|
||||
_mockUserRepository.SetupSequence(x => x.FindUserByAdEmailAsync(It.IsAny<string>()))
|
||||
.ReturnsAsync(user)
|
||||
.ReturnsAsync((AppUser)null);
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Never);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_OneIndirectMatch_CorrectActivitySaved()
|
||||
{
|
||||
|
||||
var referringEmail = "[email protected]";
|
||||
var matchedSsn = "123-45-6789";
|
||||
var directCreatedDate = DateTime.Now.AddDays(-50).ToString();
|
||||
var indirectCreatedDate = DateTime.Now.AddDays(-10).ToString();
|
||||
var disbursedDate = DateTime.Now.ToString();
|
||||
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
ApplicationID = "123",
|
||||
CreatedDate = directCreatedDate,
|
||||
ReferringEmployeeEmail = referringEmail
|
||||
},
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-9876",
|
||||
ApplicationID = "123",
|
||||
CreatedDate = DateTime.Now.AddDays(-30).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = disbursedDate
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-60).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.AddDays(-70).ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "999-99-9999",
|
||||
CreatedDate = DateTime.Now.AddDays(-60).ToString(),
|
||||
ApplicationID = "999",
|
||||
DisbursedDate = DateTime.Now.AddDays(-65).ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser(referringEmail);
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockActivityService.Setup(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "filename",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.Is<List<Activity>>(x => x.Count == 1
|
||||
&& x[0].EmployeeEmail == referringEmail
|
||||
&& x[0].SourceCreated == DateTime.Parse(disbursedDate)
|
||||
&& x[0].Accepted == DateTime.Parse(disbursedDate).Date.AddHours(12))));
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_MultipleIndirectApplicants_FirstRecordMatches()
|
||||
{
|
||||
var referringEmail = "[email protected]";
|
||||
var matchedSsn = "123-45-6789";
|
||||
var directCreatedDate = DateTime.Now.AddDays(-50).ToString();
|
||||
var indirectCreatedDate = DateTime.Now.AddDays(-10).ToString();
|
||||
var disbursedDate = DateTime.Now.ToString();
|
||||
var matchedApplicantName = "matchedName";
|
||||
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
ApplicationID = "123",
|
||||
CreatedDate = directCreatedDate,
|
||||
ReferringEmployeeEmail = referringEmail
|
||||
},
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
ApplicationID = "123",
|
||||
CreatedDate = directCreatedDate,
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = disbursedDate,
|
||||
ApplicantName = matchedApplicantName
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = matchedSsn,
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = disbursedDate
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser(referringEmail);
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockActivityService.Setup(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "filename",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.Is<List<Activity>>(x => x.Count == 1
|
||||
&& x[0].Detail.MemberName == matchedApplicantName
|
||||
&& x[0].EmployeeEmail == referringEmail
|
||||
&& x[0].SourceCreated == DateTime.Parse(disbursedDate)
|
||||
&& x[0].Accepted == DateTime.Parse(disbursedDate).Date.AddHours(12))));
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void HandleImportIndirectVehicleSales_DeadActivityServiceFails_ExceptionThrown()
|
||||
{
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
ApplicationID = "321",
|
||||
CreatedDate = DateTime.Now.AddDays(-30).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ApplicationID = "321",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser("[email protected]");
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync((AppUser)null);
|
||||
|
||||
_mockDeadActivityService.Setup(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request));
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Once);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void HandleImportIndirectVehicleSales_ActivityServiceFails_ExceptionThrown()
|
||||
{
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
ApplicationID = "321",
|
||||
CreatedDate = DateTime.Now.AddDays(-30).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>()))
|
||||
.ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser("[email protected]");
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
_mockActivityService.Setup(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request));
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Once);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_UserRepositoryFails_DeadActivitySaved()
|
||||
{
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
ApplicationID = "123",
|
||||
CreatedDate = DateTime.Now.AddDays(-50).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ApplicationID = "321",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.Is<List<DeadActivity>>(x => x.Count == 1)), Times.Once);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task HandleImportIndirectVehicleSales_NullEmployeeHomedepartment_DeadActivitySaved()
|
||||
{
|
||||
var directFileContent = new List<DirectVehicleSaleRecord>()
|
||||
{
|
||||
new DirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
ApplicationID = "123",
|
||||
CreatedDate = DateTime.Now.AddDays(-50).ToString(),
|
||||
ReferringEmployeeEmail = "[email protected]"
|
||||
}
|
||||
};
|
||||
var directWriter = GetWriter(directFileContent);
|
||||
|
||||
var indirectFileContent = new List<IndirectVehicleSaleRecord>()
|
||||
{
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "123-45-6789",
|
||||
CreatedDate = DateTime.Now.AddDays(-40).ToString(),
|
||||
ApplicationID = "123",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
},
|
||||
new IndirectVehicleSaleRecord()
|
||||
{
|
||||
ApplicantSSN = "555-55-5555",
|
||||
CreatedDate = DateTime.Now.AddDays(-10).ToString(),
|
||||
ApplicationID = "321",
|
||||
DisbursedDate = DateTime.Now.ToString()
|
||||
}
|
||||
};
|
||||
var indirectWriter = GetWriter(indirectFileContent);
|
||||
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.SetupSequence(x => x.GetFileContent(It.IsAny<string>()))
|
||||
.ReturnsAsync(directWriter.ToString())
|
||||
.ReturnsAsync(indirectWriter.ToString());
|
||||
|
||||
var user = GetAppUser("[email protected]", false);
|
||||
_mockUserRepository.Setup(x => x.FindUserByAdEmailAsync(It.IsAny<string>())).ReturnsAsync(user);
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
await _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request);
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.Is<List<DeadActivity>>(x => x.Count == 1)), Times.Once);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Once);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Exactly(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public Task HandleImportIndirectVehicleSales_FileOperationsGetContentServiceFails_ExceptionThrown()
|
||||
{
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ReturnsAsync(fileResponse);
|
||||
|
||||
_mockFileOperationsApiService.Setup(x => x.GetFileContent(It.IsAny<string>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request));
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Never);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Once);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public Task HandleImportIndirectVehicleSales_FileOperationsBuildListServiceFails_ExceptionThrown()
|
||||
{
|
||||
var fileResponse = new string[] { "filename" };
|
||||
_mockFileOperationsApiService.Setup(x => x.BuildDynamicFileList(It.IsAny<DynamicFileListRequest>())).ThrowsAsync(new Exception("Failure"));
|
||||
|
||||
var request = new ImportIndirectVehicleSalesRequest()
|
||||
{
|
||||
FilePath = "path\\",
|
||||
DirectDynamicFileName = "directFileName",
|
||||
IndirectDynamicFileName = "indirectFileName"
|
||||
};
|
||||
|
||||
Assert.ThrowsAsync<ServiceException>(() => _importIndirectVehicleSalesService.HandleImportIndirectVehicleSales(request));
|
||||
|
||||
_mockDeadActivityService.Verify(x => x.SaveDeadActivityRange(It.IsAny<List<DeadActivity>>()), Times.Never);
|
||||
_mockActivityService.Verify(x => x.SaveActivityRangeAsync(It.IsAny<List<Activity>>()), Times.Never);
|
||||
_mockUserRepository.Verify(x => x.FindUserByAdEmailAsync(It.IsAny<string>()), Times.Never);
|
||||
_mockFileOperationsApiService.Verify(x => x.GetFileContent(It.IsAny<string>()), Times.Never);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private StringWriter GetWriter<T>(List<T> fileContent)
|
||||
{
|
||||
var writer = new StringWriter();
|
||||
|
||||
var config = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = "|", HasHeaderRecord = false };
|
||||
|
||||
using (var csv = new CsvWriter(writer, config))
|
||||
{
|
||||
csv.WriteRecords(fileContent);
|
||||
}
|
||||
|
||||
return writer;
|
||||
}
|
||||
|
||||
private AppUser GetAppUser(string emailAddress, bool assignHomeDepartment = true)
|
||||
{
|
||||
var department = new Department
|
||||
{
|
||||
DepartmentName = "Dept1",
|
||||
Id = 55,
|
||||
State = DepartmentState.Active
|
||||
};
|
||||
var user = new AppUser
|
||||
{
|
||||
AdEmail = emailAddress,
|
||||
EmployeeId = "11771",
|
||||
FullName = "John Doe",
|
||||
Departments = new List<UserDepartment>()
|
||||
};
|
||||
var assignment = new UserDepartment
|
||||
{
|
||||
Id = 99,
|
||||
Department = department,
|
||||
Employee = user,
|
||||
Role = Role.BM,
|
||||
IsHome = true,
|
||||
StartDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1),
|
||||
EndDate = null
|
||||
};
|
||||
|
||||
if (assignHomeDepartment)
|
||||
{
|
||||
user.Departments.Add(assignment);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user