public void GetResponsibleLeader_WithNoSub_ShouldGetActualLeader() { var leader = new Person() { Id = 1, FirstName = "Test", LastName = "Testesen", Initials = "TT", FullName = "Test Testesen [TT]" }; var user = new Person() { Id = 2, FirstName = "User", LastName = "Usersen", Initials = "UU", FullName = "User Usersen [UU]" }; var orgUnit = new OrgUnit() { Id = 1, }; var leaderEmpl = new Employment() { Id = 1, OrgUnit = orgUnit, OrgUnitId = 1, Person = leader, PersonId = leader.Id, IsLeader = true }; var userEmpl = new Employment() { Id = 2, OrgUnit = orgUnit, PersonId = user.Id, OrgUnitId = 1, Person = user, IsLeader = false }; var substitute = new Core.DomainModel.Substitute() { Id = 1, OrgUnitId = 12, PersonId = 3, LeaderId = 1, Sub = new Person() { FullName = "En Substitute [ES]" }, StartDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(-1))).TotalSeconds, EndDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(1))).TotalSeconds, }; _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { leaderEmpl, userEmpl }.AsQueryable()); _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { orgUnit }.AsQueryable()); _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>() { substitute }.AsQueryable()); var report = new DriveReport() { Id = 1, Employment = userEmpl, EmploymentId = userEmpl.Id, PersonId = user.Id, Person = user }; var res = _uut.GetResponsibleLeaderForReport(report); Assert.AreEqual("Test Testesen [TT]", res.FullName); }
public void GetResponsibleLeader_WithMultipleReports_SomeWithSubSomeWithout_ShouldFindCorrectLeaders() { var leader1 = new Person() { Id = 1, FirstName = "Test", LastName = "Testesen", Initials = "TT", FullName = "Test Testesen [TT]" }; var leader2 = new Person() { Id = 2, FirstName = "Test", LastName = "Tester", Initials = "TT", FullName = "Test Tester [TT]" }; var user1 = new Person() { Id = 3, FirstName = "User", LastName = "Usersen", Initials = "UU", FullName = "User Usersen [UU]" }; var orgUnit = new OrgUnit() { Id = 1, }; var orgUnit2 = new OrgUnit() { Id = 2, }; var leaderEmpl1 = new Employment() { Id = 1, OrgUnitId = 1, OrgUnit = orgUnit, Person = leader1, PersonId = leader1.Id, IsLeader = true }; var leaderEmpl2 = new Employment() { Id = 2, OrgUnitId = 2, OrgUnit = orgUnit2, Person = leader2, PersonId = leader2.Id, IsLeader = true }; var userEmpl1 = new Employment() { Id = 3, OrgUnitId = 1, OrgUnit = orgUnit, Person = user1, PersonId = user1.Id, IsLeader = false }; var userEmpl2 = new Employment() { Id = 4, OrgUnitId = 2, OrgUnit = orgUnit, Person = user1, PersonId = user1.Id, IsLeader = false }; var substitute = new Core.DomainModel.Substitute() { Id = 1, PersonId = 1, LeaderId = 1, OrgUnitId = leaderEmpl1.Id, Person = leader1, Sub = new Person() { FirstName = "En", LastName = "Substitute", Initials = "ES", FullName = "En Substitute [ES]" }, StartDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(1))).TotalSeconds, EndDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(-1))).TotalSeconds, }; _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { leaderEmpl1, leaderEmpl2, userEmpl1, userEmpl2 }.AsQueryable()); _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { orgUnit, orgUnit2 }.AsQueryable()); _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>() { substitute }.AsQueryable()); var report = new List <DriveReport>() { new DriveReport() { Id = 1, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, }, new DriveReport() { Id = 2, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, }, new DriveReport() { Id = 3, Employment = userEmpl2, EmploymentId = userEmpl2.Id, PersonId = user1.Id, Person = user1, } }; var res0 = _uut.GetResponsibleLeaderForReport(report.AsQueryable().ElementAt(0)); var res1 = _uut.GetResponsibleLeaderForReport(report.AsQueryable().ElementAt(1)); var res2 = _uut.GetResponsibleLeaderForReport(report.AsQueryable().ElementAt(2)); Assert.AreEqual("En Substitute [ES]", res0.FullName); Assert.AreEqual("En Substitute [ES]", res1.FullName); Assert.AreEqual("Test Tester [TT]", res2.FullName); }
public void GetResponsibleLeader_LeaderEmplExpired_ShouldReturnParentOrgLeader() { var leader = new Person() { Id = 1, FirstName = "Leader1", LastName = "Test", Initials = "TT", FullName = "TestLeader1" }; var leader2 = new Person() { Id = 2, FirstName = "Leader2", LastName = "Test", Initials = "TT", FullName = "TestLeader2" }; var user = new Person() { Id = 3, FirstName = "User", LastName = "Usersen", Initials = "UU", FullName = "User Usersen [UU]" }; var orgUnit = new OrgUnit() { Id = 1, }; var orgUnit2 = new OrgUnit() { Id = 2, Level = 1, ParentId = orgUnit.Id, Parent = orgUnit }; var leaderEmpl = new Employment() { Id = 1, OrgUnitId = 1, OrgUnit = orgUnit, Person = leader, PersonId = leader.Id, IsLeader = true }; var leaderEmpl2 = new Employment() { Id = 2, OrgUnitId = 2, EndDateTimestamp = Utilities.ToUnixTime(DateTime.Today.AddHours(5)), OrgUnit = orgUnit2, Person = leader2, PersonId = leader2.Id, IsLeader = true }; var userEmpl = new Employment() { Id = 3, OrgUnitId = 2, OrgUnit = orgUnit2, Person = user, PersonId = user.Id, IsLeader = false }; var substitute = new Core.DomainModel.Substitute() { Id = 1, PersonId = leader2.Id, Person = leader2, OrgUnitId = leaderEmpl2.OrgUnitId, LeaderId = leader2.Id, SubId = 3, StartDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(1))).TotalSeconds, EndDateTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1).AddDays(-1))).TotalSeconds, }; _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { leaderEmpl, leaderEmpl2, userEmpl }.AsQueryable()); _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { orgUnit, orgUnit2 }.AsQueryable()); _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>() { substitute }.AsQueryable()); var report = new DriveReport() { Id = 1, Employment = userEmpl, EmploymentId = userEmpl.Id, PersonId = user.Id, Person = user, }; var res = _uut.GetResponsibleLeadersForReport(report); Assert.AreEqual(1, res.Count); Assert.AreEqual("TestLeader1", res[0].FullName); }
public void RemoveExpiredLeadersForPendingReports() { var todayUnix = Utilities.ToUnixTime(DateTime.Now.AddMinutes(1)); var tomorrowUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(1)); var yesterdayUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(-1)); var weekAgoUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(-7)); var leader1 = new Person() { Id = 1, FirstName = "Test", LastName = "Testesen", Initials = "TT", FullName = "Test Testesen [TT]" }; var user1 = new Person() { Id = 3, FirstName = "User", LastName = "Usersen", Initials = "UU", FullName = "User Usersen [UU]" }; var orgUnit = new OrgUnit() { Id = 1, }; var leaderEmpl1 = new Employment() { Id = 1, OrgUnitId = 1, OrgUnit = orgUnit, Person = leader1, PersonId = leader1.Id, IsLeader = true }; var userEmpl1 = new Employment() { Id = 3, OrgUnitId = 1, OrgUnit = orgUnit, Person = user1, PersonId = user1.Id, IsLeader = false }; var substitute = new Core.DomainModel.Substitute() { Id = 1, PersonId = 1, LeaderId = 1, OrgUnitId = leaderEmpl1.OrgUnitId, Person = leader1, Sub = new Person() { Id = 2, FirstName = "En", LastName = "Substitute", Initials = "ES", FullName = "En Substitute [ES]" }, StartDateTimestamp = weekAgoUnix, EndDateTimestamp = todayUnix, }; var substituteTo = new Core.DomainModel.Substitute() { Id = 2, PersonId = 1, LeaderId = 1, OrgUnitId = leaderEmpl1.OrgUnitId, Person = leader1, Sub = new Person() { Id = 4, FirstName = "To", LastName = "Substitute", Initials = "TS", FullName = "Tn Substitute [TS]" }, StartDateTimestamp = yesterdayUnix, EndDateTimestamp = yesterdayUnix, }; _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { leaderEmpl1, userEmpl1 }.AsQueryable()); _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { orgUnit, }.AsQueryable()); _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>() { substitute, substituteTo }.AsQueryable()); var report = new List <DriveReport>() { new DriveReport() { Id = 1, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, Status = ReportStatus.Pending }, new DriveReport() { Id = 2, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, Status = ReportStatus.Pending } }; var res0 = _uut.GetResponsibleLeadersForReport(report.AsQueryable().ElementAt(0)); var res1 = _uut.GetResponsibleLeadersForReport(report.AsQueryable().ElementAt(1)); Assert.AreEqual(2, res0.Count); Assert.AreEqual("Test Testesen [TT]", res0[0].FullName); Assert.AreEqual("En Substitute [ES]", res0[1].FullName); Assert.AreEqual(2, res1.Count); Assert.AreEqual("Test Testesen [TT]", res1[0].FullName); Assert.AreEqual("En Substitute [ES]", res1[1].FullName); }
public void GetResponsibleLeader_WithMultipleReports_SomeWithSubSomeWithout_ShouldFindCorrectLeaders() { var todayUnix = Utilities.ToUnixTime(DateTime.Today.AddDays(1).AddSeconds(-1)); var tomorrowUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(1)); var yesterdayUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(-1)); var weekAgoUnix = Utilities.ToUnixTime(DateTime.Now.AddDays(-7)); var leader1 = new Person() { Id = 1, FirstName = "Test", LastName = "Testesen", Initials = "TT", FullName = "Test Testesen [TT]" }; var leader2 = new Person() { Id = 2, FirstName = "Test", LastName = "Tester", Initials = "TT", FullName = "Test Tester [TT]" }; var user1 = new Person() { Id = 3, FirstName = "User", LastName = "Usersen", Initials = "UU", FullName = "User Usersen [UU]" }; var orgUnit = new OrgUnit() { Id = 1, }; var orgUnit2 = new OrgUnit() { Id = 2, }; var leaderEmpl1 = new Employment() { Id = 1, OrgUnitId = 1, OrgUnit = orgUnit, Person = leader1, PersonId = leader1.Id, IsLeader = true }; var leaderEmpl2 = new Employment() { Id = 2, OrgUnitId = 2, OrgUnit = orgUnit2, Person = leader2, PersonId = leader2.Id, IsLeader = true }; var userEmpl1 = new Employment() { Id = 3, OrgUnitId = 1, OrgUnit = orgUnit, Person = user1, PersonId = user1.Id, IsLeader = false }; var userEmpl2 = new Employment() { Id = 4, OrgUnitId = 2, OrgUnit = orgUnit2, Person = user1, PersonId = user1.Id, IsLeader = false }; var substitute = new Core.DomainModel.Substitute() { Id = 1, PersonId = 1, LeaderId = 1, OrgUnitId = leaderEmpl1.OrgUnitId, Person = leader1, Sub = new Person() { Id = 1, FirstName = "En", LastName = "Substitute", Initials = "ES", FullName = "En Substitute [ES]" }, StartDateTimestamp = weekAgoUnix, EndDateTimestamp = todayUnix, }; var substituteTo = new Core.DomainModel.Substitute() { Id = 2, PersonId = 1, LeaderId = 1, OrgUnitId = leaderEmpl1.OrgUnitId, Person = leader1, Sub = new Person() { Id = 2, FirstName = "To", LastName = "Substitute", Initials = "TS", FullName = "Tn Substitute [TS]" }, StartDateTimestamp = yesterdayUnix, EndDateTimestamp = todayUnix, }; var substitute3 = new Core.DomainModel.Substitute() { Id = 3, PersonId = 2, LeaderId = 2, OrgUnitId = leaderEmpl2.OrgUnitId, Person = leader2, Sub = new Person() { Id = 3, FirstName = "Test", LastName = "Substitute", Initials = "TEST", FullName = "Test Substitute [TEST]" }, StartDateTimestamp = weekAgoUnix, EndDateTimestamp = todayUnix, }; _emplMock.AsQueryable().ReturnsForAnyArgs(new List <Employment>() { leaderEmpl1, leaderEmpl2, userEmpl1, userEmpl2 }.AsQueryable()); _orgUnitMock.AsQueryable().ReturnsForAnyArgs(new List <OrgUnit>() { orgUnit, orgUnit2 }.AsQueryable()); _subMock.AsQueryable().ReturnsForAnyArgs(new List <Core.DomainModel.Substitute>() { substitute, substituteTo, substitute3 }.AsQueryable()); var report = new List <DriveReport>() { new DriveReport() { Id = 1, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, }, new DriveReport() { Id = 2, Employment = userEmpl1, EmploymentId = userEmpl1.Id, PersonId = user1.Id, Person = user1, }, new DriveReport() { Id = 3, Employment = userEmpl2, EmploymentId = userEmpl2.Id, PersonId = user1.Id, Person = user1, } }; var res0 = _uut.GetResponsibleLeadersForReport(report.AsQueryable().ElementAt(0)); var res1 = _uut.GetResponsibleLeadersForReport(report.AsQueryable().ElementAt(1)); var res2 = _uut.GetResponsibleLeadersForReport(report.AsQueryable().ElementAt(2)); Assert.AreEqual(3, res0.Count); Assert.AreEqual("Test Testesen [TT]", res0[0].FullName); Assert.AreEqual("En Substitute [ES]", res0[1].FullName); Assert.AreEqual("Tn Substitute [TS]", res0[2].FullName); Assert.AreEqual(3, res1.Count); Assert.AreEqual("Test Testesen [TT]", res1[0].FullName); Assert.AreEqual("En Substitute [ES]", res1[1].FullName); Assert.AreEqual("Tn Substitute [TS]", res1[2].FullName); Assert.AreEqual(2, res2.Count); Assert.AreEqual("Test Tester [TT]", res2[0].FullName); Assert.AreEqual("Test Substitute [TEST]", res2[1].FullName); }