using System; using System.Linq; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApi.Services; using LCU.Library.Internal.IncentiveApiModels.Entities; using Microsoft.EntityFrameworkCore; using Moq; using NUnit.Framework; using System.Collections.Generic; using LCU.API.Internal.Operations.IncentiveApiLib.Persistence; using LCU.API.Internal.Operations.IncentiveApiLib.Repositories; using LCU.Library.Internal.IncentiveApiModels.Enums; using LCU.API.Internal.Operations.IncentiveApiLib; using LCU.Library.Internal.IncentiveApiModels.Requests; using LCU.Library.Internal.IncentiveApiModels.Common; namespace Application.UnitTests.Repository { public class UserRepositoryTest { private ApplicationDbContext _context; private UserRepository _repository; [SetUp] public void Setup() { var mockDateTime = new DateTimeService(); var mockCurrentUserService = Mock.Of(); Mock.Get(mockCurrentUserService) .Setup(s => s.GetCurrentUser()) .Returns(new ApplicationUser() { Email = "JohnTest@test.com", }); var options = new DbContextOptionsBuilder() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .EnableSensitiveDataLogging(true) .Options; _context = new ApplicationDbContext(options, mockCurrentUserService, mockDateTime); _repository = new UserRepository(_context); } [Test] public async Task Save_Load_Test() { var userA = await _repository.SaveUserAsync(new AppUser() { AdEmail = "me1@test.com", PersonId = 321, EmployeeId = "ABC", BaseRole = "Developer", Role = Role.Admin, HomeDepartment = "Branch-44", FullName = "Tester, Jane", Departments = new List() }); userA.Departments.Add(new UserDepartment() { IsHome = true, StartDate = DateTime.Today, Note = "Auto Generated", Employee = userA, Role = Role.BusinessLineManager, Department = new Department() { DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", DnaOrgNbr = "1", BusinessLineCode = BusinessLine.Operations.Code, State = DepartmentState.Active } } ); userA.Assignments.Add(new UserAssignment { Id = 0, Key = "ABC", Type = AssignmentType.RegionalManager }); await _context.SaveChangesAsync(); Assert.NotNull(userA); var allUsers = await _repository.GetAllUsersAsync(); Assert.AreEqual(1, allUsers.Count); var user = await _repository.FindUserAsync("ABC", "me1@test.com"); Assert.NotNull(user); Assert.AreEqual(user.AdEmail, "me1@test.com"); Assert.NotNull(user.Departments); Assert.IsNotEmpty(user.Departments); Assert.NotNull(user.Assignments); Assert.IsNotEmpty(user.Assignments); Assert.NotNull(user.Created); Assert.NotNull(user.CreatedBy); Assert.AreEqual(1, user.Assignments.Count); } [Test] public async Task Basic_Flow_test() { var userA = await _repository.SaveUserAsync(new AppUser() { AdEmail = "me1@test.com", PersonId = 321, EmployeeId = "ABC", BaseRole = "Developer", Role = Role.Admin, HomeDepartment = "Branch-44", FullName = "Tester, Jane" }); await _context.SaveChangesAsync(); Assert.NotNull(userA); var userList = await _repository.SaveUserRangeAsync(new List() { new() { Id = Guid.NewGuid(), AdEmail = "me2@test.com", FullName = "Test", PersonId = 123, EmployeeId = "CBA", BaseRole = "Developer", Role = Role.UNKNOWN_ROLE, HomeDepartment = "Branch-44", }, new() { Id = Guid.NewGuid(), AdEmail = "me3@test.com", FullName = "Test", PersonId = 456, EmployeeId = "DEF", BaseRole = "Developer", Role = Role.Admin, HomeDepartment = "Branch-44" }, new() { Id = Guid.NewGuid(), AdEmail = "me4@test.com", FullName = "Test", PersonId = 789, EmployeeId = "CONTRACTOR", BaseRole = "QA", Role = Role.Teller, HomeDepartment = "Branch-44" }, new() { Id = Guid.NewGuid(), AdEmail = "me5@test.com", FullName = "Test", PersonId = 900, EmployeeId = "CONTRACTOR", BaseRole = "QA", Role = Role.BM, HomeDepartment = "Branch-0" } }); await _context.SaveChangesAsync(); Assert.NotNull(userList); Assert.AreEqual(4, userList.Count); var allUsers = await _repository.GetAllUsersAsync(); Assert.AreEqual(5, allUsers.Count); var user = await _repository.FindUserAsync("CBA", "me2@test.com"); Assert.NotNull(user); Assert.AreEqual(user.AdEmail, "me2@test.com"); user = await _repository.FindUserByAdEmailAsync("me5@test.com"); Assert.NotNull(user); Assert.IsTrue(user.Role == Role.BM); user = await _repository.FindUserByAdEmailAsync("noemail@email.com"); Assert.Null(user); user = await _repository.FindUserByEmployeeIdAsync("DEF"); Assert.NotNull(user); Assert.IsTrue(user.Role == Role.Admin); var users = await _repository.FindUsersByBaseRolesAsync(new List() { "QA" }); Assert.NotNull(users); Assert.AreEqual(2, users.Count); Assert.AreEqual(2, users.Count(x => x.EmployeeId == "CONTRACTOR")); users = await _repository.FindUsersByHomeDepartmentsAsync(new List() { "Branch-44" }); Assert.NotNull(users); Assert.AreEqual(4, users.Count); Assert.True(users.Any(x => x.AdEmail != "me5@test.com")); } [Test] public async Task Find_None_Test() { var userList = await _repository.SaveUserRangeAsync(new List() { new() { Id = Guid.NewGuid(), AdEmail = "me2@test.com", FullName = "Test", PersonId = 123, EmployeeId = "ABC", BaseRole = "Developer", Role = Role.UNKNOWN_ROLE, HomeDepartment = "Branch-44" }, new() { Id = Guid.NewGuid(), AdEmail = "me3@test.com", FullName = "Test", PersonId = 456, EmployeeId = "DEF", BaseRole = "Developer", Role = Role.Admin, HomeDepartment = "Branch-44" }, new() { Id = Guid.NewGuid(), AdEmail = "me4@test.com", FullName = "Test", PersonId = 789, EmployeeId = "CONTRACTOR1", BaseRole = "QA", Role = Role.Teller, HomeDepartment = "Branch-44" }, new() { Id = Guid.NewGuid(), AdEmail = "me5@test.com", FullName = "Test", PersonId = 900, EmployeeId = "CONTRACTOR2", BaseRole = "QA", Role = Role.BM, HomeDepartment = "Branch-0" } }); await _context.SaveChangesAsync(); var results = await _repository.FindUserAsync("CONTRACTOR", "me2@test.com"); Assert.Null(results); } [Test] public async Task search_test() { var userList = await _repository.SaveUserRangeAsync(new List() { new() { Id = Guid.NewGuid(), AdEmail = "abcQ@test.com", PersonId = 123, EmployeeId = "99x", BaseRole = "Developer", FullName = "John Doe", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "51", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.UNKNOWN_ROLE } } }, new() { Id = Guid.NewGuid(), AdEmail = "defQ@test.com", PersonId = 456, EmployeeId = "99y", BaseRole = "Developer", FullName = "Jane Doe", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "52", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Admin } } }, new() { Id = Guid.NewGuid(), AdEmail = "ghiQ@test.com", PersonId = 789, EmployeeId = "99z", BaseRole = "QA", FullName = "John Deer", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "53", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Teller } } }, new() { Id = Guid.NewGuid(), AdEmail = "jklQ@test.com", PersonId = 900, EmployeeId = "CONTRACTOR", FullName = "Emily Random", BaseRole = "QA", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "54", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.BM } }, HomeDepartment = "Branch-0" }, new() { Id = Guid.NewGuid(), AdEmail = "JohnDWayne@test.com", PersonId = 910, EmployeeId = "314159", FullName = "Wayne, John D", BaseRole = "QA", HomeDepartment = "Branch-0", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "55", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Developer } } } }); await _context.SaveChangesAsync(); Assert.NotNull(userList); Assert.AreEqual(5, userList.Count); var allUsers = await _repository.GetAllUsersAsync(); Assert.AreEqual(5, allUsers.Count); var searchParameters = new UserSearchRequest { Query = "abc" }; var userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().AdEmail, "abcQ@test.com"); searchParameters = new UserSearchRequest { Query = "CONTRACTOR" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().AdEmail, "jklQ@test.com"); searchParameters = new UserSearchRequest { Query = " q " }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(4, userResults.Count); searchParameters = new UserSearchRequest { Query = " 99 " }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(3, userResults.Count); searchParameters = new UserSearchRequest { Query = " doe " }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(2, userResults.Count); Assert.AreEqual(userResults.First().FullName, "John Doe"); searchParameters = new UserSearchRequest { Role = "UNKNOWN" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "John Doe"); searchParameters = new UserSearchRequest { Role = " BM " }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Emily Random"); searchParameters = new UserSearchRequest { Role = "Manager" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Emily Random"); searchParameters = new UserSearchRequest { Query = "Fq, De" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Jane Doe"); searchParameters = new UserSearchRequest { DnaOrgNbr = "6" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(0, userResults.Count); searchParameters = new UserSearchRequest { DnaOrgNbr = "55" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Wayne, John D"); searchParameters = new UserSearchRequest { FirstName = "John", LastName = "Wayne", DnaOrgNbr = "55" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Wayne, John D"); searchParameters = new UserSearchRequest { FirstName = "John", MiddleInit = "D" }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(1, userResults.Count); Assert.AreEqual(userResults.First().FullName, "Wayne, John D"); searchParameters = new UserSearchRequest { Query = "," }; userResults = await _repository.SearchUsersAsync(searchParameters); Assert.NotNull(userResults); Assert.AreEqual(5, userResults.Count); } [Test] public async Task users_for_payouts() { var startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); var range = new MonthRange(DateTime.Today.Year, DateTime.Today.Month); var users = new List() { new() { Id = Guid.NewGuid(), AdEmail = "abcQ@test.com", PersonId = 123, EmployeeId = "99x", BaseRole = "TERMINATED - No", FullName = "John Terminated", HomeDepartment = "Branch-44", Terminated = DateTime.Today.Subtract(TimeSpan.FromDays(30)), Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "51", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.UNKNOWN_ROLE } } }, new() { Id = Guid.NewGuid(), AdEmail = "defQ@test.com", PersonId = 456, EmployeeId = "99y", BaseRole = "Developer New This Month - Yes", FullName = "Jane Active", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "52", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Admin, StartDate = startDate, EndDate = null } } }, new() { Id = Guid.NewGuid(), AdEmail = "ghiQ@test.com", PersonId = 789, EmployeeId = "99z", BaseRole = "QA Active 90 days - Yes", FullName = "John Deer", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "53", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Teller, StartDate = startDate.Subtract(TimeSpan.FromDays(90)), EndDate = range.EndTime } } }, new() { Id = Guid.NewGuid(), AdEmail = "jklQ@test.com", PersonId = 900, EmployeeId = "CONTRACTOR", FullName = "Emily Random", BaseRole = "QA Not Active Yet? - No", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "54", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.BM, StartDate = startDate.Add(TimeSpan.FromDays(90)), EndDate = null } }, HomeDepartment = "Branch-0" }, new() { Id = Guid.NewGuid(), AdEmail = "JohnDWayne@test.com", PersonId = 910, EmployeeId = "314159", FullName = "Wayne, John D", BaseRole = "QA Exact - Yes", HomeDepartment = "Branch-0", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "55", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Developer, StartDate = startDate, EndDate = startDate.AddMonths(1).Subtract(TimeSpan.FromSeconds(1)) } } } }; var userList = await _repository.SaveUserRangeAsync(users); await _context.SaveChangesAsync(); Assert.NotNull(userList); Assert.AreEqual(5, userList.Count); var allUsers = await _repository.GetAllUsersToPayoutAsync(range); Assert.AreEqual(3, allUsers.Count); var selected = allUsers.Select(x => x.EmployeeId).ToList(); var expected = new List() { "99y", "99z", "314159" }; Assert.AreEqual(selected, expected); } [Test] public async Task TerminatedUsers() { var startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); var inThePast = DateTime.Today.Subtract(TimeSpan.FromDays(DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) != 31 ? 30 : 31)); var range = new MonthRange(inThePast.Year, inThePast.Month); var users = new List() { new() { Id = Guid.NewGuid(), AdEmail = "abcQ@test.com", PersonId = 123, EmployeeId = "99x", BaseRole = "TERMINATED - No", FullName = "John Terminated", HomeDepartment = "Branch-44", Terminated = DateTime.Today.Subtract(TimeSpan.FromDays(DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) != 31 ? 30 : 31)), Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "51", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.UNKNOWN_ROLE } } }, new() { Id = Guid.NewGuid(), AdEmail = "defQ@test.com", PersonId = 456, EmployeeId = "99y", BaseRole = "Developer New This Month - Yes", FullName = "Jane Active", HomeDepartment = "Branch-44", Terminated = DateTime.Today, Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "52", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Admin, StartDate = startDate, EndDate = null } } }, new() { Id = Guid.NewGuid(), AdEmail = "ghiQ@test.com", PersonId = 789, EmployeeId = "99z", BaseRole = "QA Active 90 days - Yes", FullName = "John Deer", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "53", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Teller, StartDate = startDate.Subtract(TimeSpan.FromDays(90)), EndDate = range.EndTime } } }, new() { Id = Guid.NewGuid(), AdEmail = "jklQ@test.com", PersonId = 900, EmployeeId = "CONTRACTOR", FullName = "Emily Random", BaseRole = "QA Not Active Yet? - No", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "54", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.BM, StartDate = startDate.Add(TimeSpan.FromDays(90)), EndDate = null } }, HomeDepartment = "Branch-0" }, new() { Id = Guid.NewGuid(), AdEmail = "JohnDWayne@test.com", PersonId = 910, EmployeeId = "314159", FullName = "Wayne, John D", BaseRole = "QA Exact - Yes", HomeDepartment = "Branch-0", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "55", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Developer, StartDate = startDate, EndDate = startDate.AddMonths(1).Subtract(TimeSpan.FromSeconds(1)) } } } }; var userList = await _repository.SaveUserRangeAsync(users); await _context.SaveChangesAsync(); Assert.NotNull(userList); Assert.AreEqual(5, userList.Count); var termList = _repository.GetTerminatedUsersAsync(range); Assert.AreEqual(1, termList.Count); var selected = termList.Select(x => x.EmployeeId).ToList(); var expected = new List() { "99x" }; Assert.AreEqual(selected, expected); range = new MonthRange(DateTime.Today.Year, DateTime.Today.Month); termList = _repository.GetTerminatedUsersAsync(range); Assert.AreEqual(1, termList.Count); selected = termList.Select(x => x.EmployeeId).ToList(); expected = new List() { "99y" }; Assert.AreEqual(selected, expected); range = new MonthRange(inThePast.Year, inThePast.Month, DateTime.Today.Year, DateTime.Today.Month); Assert.Throws(() => { _repository.GetTerminatedUsersAsync(range); }); } [Test] public async Task GetActiveEmployeeReturnsNothingWhenOnlyMatchingInfoAppUserHasNonNullTermDate() { var startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); var inThePast = DateTime.Today.Subtract(TimeSpan.FromDays(30)); var range = new MonthRange(inThePast.Year, inThePast.Month); const string termedEmployeeQueryEmail = "defQ@test.com"; const string termedEmployeeQueryEmployeeId = "99y"; var laterTermedEmployeeRecordGuid = Guid.NewGuid(); var users = new List() { new() { Id = Guid.NewGuid(), AdEmail = "abcQ@test.com", PersonId = 123, EmployeeId = "99x", BaseRole = "TERMINATED - No", FullName = "John Terminated", HomeDepartment = "Branch-44", Terminated = DateTime.Today.Subtract(TimeSpan.FromDays(30)), Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "51", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.UNKNOWN_ROLE } } }, new() { Id = laterTermedEmployeeRecordGuid, AdEmail = termedEmployeeQueryEmail, PersonId = 456, EmployeeId = termedEmployeeQueryEmployeeId, BaseRole = "Developer New This Month - Yes", FullName = "Jane Active", HomeDepartment = "Branch-44", Terminated = DateTime.Today, Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "52", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Admin, StartDate = startDate, EndDate = null } } }, new() { Id = Guid.NewGuid(), AdEmail = termedEmployeeQueryEmail, PersonId = 456, EmployeeId = termedEmployeeQueryEmployeeId, BaseRole = "Developer New This Month - Yes", FullName = "Jane Active", HomeDepartment = "Branch-44", Terminated = DateTime.Today.AddDays(-10), Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "52", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Admin, StartDate = startDate, EndDate = null } } }, new() { Id = Guid.NewGuid(), AdEmail = "ghiQ@test.com", PersonId = 789, EmployeeId = "99z", BaseRole = "QA Active 90 days - Yes", FullName = "John Deer", HomeDepartment = "Branch-44", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "53", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Teller, StartDate = startDate.Subtract(TimeSpan.FromDays(90)), EndDate = range.EndTime } } }, new() { Id = Guid.NewGuid(), AdEmail = "jklQ@test.com", PersonId = 900, EmployeeId = "CONTRACTOR", FullName = "Emily Random", BaseRole = "QA Not Active Yet? - No", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "54", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.BM, StartDate = startDate.Add(TimeSpan.FromDays(90)), EndDate = null } }, HomeDepartment = "Branch-0" }, new() { Id = Guid.NewGuid(), AdEmail = "JohnDWayne@test.com", PersonId = 910, EmployeeId = "314159", FullName = "Wayne, John D", BaseRole = "QA Exact - Yes", HomeDepartment = "Branch-0", Role = Role.BusinessLineManager, Departments = new List() { new() { Department = new Department() { DnaOrgNbr = "55", DayforceDepartmentName = "Test", DayForceGlCode = "Test", DepartmentName = "Test", BusinessLineCode = BusinessLine.Operations.Code, }, DepartmentId = 3, Role = Role.Developer, StartDate = startDate, EndDate = startDate.AddMonths(1).Subtract(TimeSpan.FromSeconds(1)) } } } }; var userList = await _repository.SaveUserRangeAsync(users); await _context.SaveChangesAsync(); Assert.NotNull(userList); Assert.AreEqual(6, userList.Count); var termedShouldBeNullEmployeeEmailResult = await _repository.FindActiveUserByAdEmailAsync(termedEmployeeQueryEmail); var termedShouldBeNullEmployeeEmployeeIdResult = await _repository.FindActiveUserByEmployeeIdAsync(termedEmployeeQueryEmployeeId); Assert.IsNull(termedShouldBeNullEmployeeEmailResult); Assert.IsNull(termedShouldBeNullEmployeeEmployeeIdResult); var termedShouldNotBeNullEmployeeEmailResult = await _repository.FindUserByAdEmailAsync(termedEmployeeQueryEmail); var termedShouldNotBeNullEmployeeEmployeeIdResult = await _repository.FindUserByEmployeeIdAsync(termedEmployeeQueryEmployeeId); Assert.IsNotNull(termedShouldNotBeNullEmployeeEmailResult); Assert.IsNotNull(termedShouldNotBeNullEmployeeEmployeeIdResult); Assert.AreEqual(termedShouldNotBeNullEmployeeEmailResult.Id, laterTermedEmployeeRecordGuid); Assert.AreEqual(termedShouldNotBeNullEmployeeEmployeeIdResult.Id, laterTermedEmployeeRecordGuid); } } }