public void Save_Invalidates_PreviousRelationship() { // Arrange var options = CreateInMemoryDatabase(); var facade = GetFacade(options); var employeeId = 1; // has only one project EmployeeProject employeeProject; // get current EmployeeProject for the employee using (var ctx = new EmployeeProjectDbContext(options)) { employeeProject = ctx.EmployeeProjects.Single(ep => ep.EmployeeId == employeeId); } var employeeProjectDTO = Mapper.Map <EmployeeProjectDTO>(employeeProject); // Act var savedDTO = facade.Save(employeeProjectDTO); // Assert List <EmployeeProject> employeeProjects; using (var ctx = new EmployeeProjectDbContext(options)) { employeeProjects = ctx.EmployeeProjects.Where(ep => ep.EmployeeId == employeeId).ToList(); } Assert.Equal(2, employeeProjects.Count); var oldRelationship = employeeProjects.SingleOrDefault(ep => ep.Id == employeeProject.Id); var newRelationship = employeeProjects.SingleOrDefault(ep => ep.Id != employeeProject.Id); Assert.NotNull(oldRelationship); Assert.NotNull(newRelationship); Assert.True(oldRelationship.ValidityEndDate == newRelationship.ValidityBeginDate); Assert.True(newRelationship.ValidityBeginDate < DateTime.Now); }
public void Delete_ById_InvalidateItem(int employeeProjectId) { // Arrange var options = CreateInMemoryDatabase(); var facade = GetFacade(options); EmployeeProject employeeProject; // get the EmployeeProject using (var ctx = new EmployeeProjectDbContext(options)) { employeeProject = ctx.EmployeeProjects.First(ep => ep.Id == employeeProjectId); } var employeeId = employeeProject.EmployeeId; var projectId = employeeProject.ProjectId; // Act facade.Delete(employeeProject.Id); // Assert List <EmployeeProject> employeeProjects; using (var ctx = new EmployeeProjectDbContext(options)) { employeeProjects = ctx.EmployeeProjects.Where(ep => ep.EmployeeId == employeeId && ep.ProjectId == projectId).ToList(); } // all items has been invalidated Assert.True(employeeProjects.All(ep => ep.ValidityEndDate < DateTime.Now)); }
public void Delete_ById_InvalidesItem(int employeeProjectId) { // Arrange var options = new DbContextOptionsBuilder <EmployeeProjectDbContext>() .UseInMemoryDatabase(databaseName: "EmployeesAndProjects" + Guid.NewGuid().ToString().Substring(10)) .Options; PrepareInMemoryDbContext(options); var facade = GetFacade(options); EmployeeProject employeeProject; // get the EmployeeProject using (var ctx = new EmployeeProjectDbContext(options)) { employeeProject = ctx.EmployeeProjects.First(ep => ep.Id == employeeProjectId); } var employeeId = employeeProject.EmployeeId; var projectId = employeeProject.ProjectId; // Act facade.Delete(employeeProject.Id); // Assert List <EmployeeProject> employeeProjects; using (var ctx = new EmployeeProjectDbContext(options)) { employeeProjects = ctx.EmployeeProjects.Where(ep => ep.EmployeeId == employeeId && ep.ProjectId == projectId).ToList(); } // all items has been invalidated Assert.True(employeeProjects.All(ep => ep.ValidityEndDate < DateTime.Now)); }
private static void PrepareInMemoryDbContext(DbContextOptions <EmployeeProjectDbContext> options) { // Employee Project EmployeeProject // 1 10 100 // 2 10 101 // 2 11 102 // 9 99 901 // 9 99 902 // 9 99 903 var employeeProject100 = new EmployeeProject { Id = 100, EmployeeId = 1, ProjectId = 10, ValidityBeginDate = DateTime.Today.AddDays(-1), ValidityEndDate = DateTime.Today.AddDays(1) }; var employeeProject101 = new EmployeeProject { Id = 101, EmployeeId = 2, ProjectId = 10, ValidityBeginDate = DateTime.Today.AddDays(-1), ValidityEndDate = DateTime.Today.AddDays(1) }; var employeeProject102 = new EmployeeProject { Id = 102, EmployeeId = 2, ProjectId = 11, ValidityBeginDate = DateTime.Today.AddDays(-1), ValidityEndDate = DateTime.Today.AddDays(1) }; var employeeProject901 = new EmployeeProject { Id = 901, EmployeeId = 9, ProjectId = 99, ValidityBeginDate = null, ValidityEndDate = DateTime.Today.AddDays(-1).AddHours(-2) }; var employeeProject902 = new EmployeeProject { Id = 902, EmployeeId = 9, ProjectId = 99, ValidityBeginDate = DateTime.Today.AddDays(-1).AddHours(-2), ValidityEndDate = DateTime.Today.AddDays(-1).AddHours(-1) }; var employeeProject903 = new EmployeeProject { Id = 903, EmployeeId = 9, ProjectId = 99, ValidityBeginDate = DateTime.Today.AddDays(-1).AddHours(-1), ValidityEndDate = null }; var employees = new List <Employee> { new Employee { Id = 1, EmployeeProjects = new List <EmployeeProject> { employeeProject100 } }, new Employee { Id = 2, EmployeeProjects = new List <EmployeeProject> { employeeProject101, employeeProject102 } }, new Employee { Id = 9, EmployeeProjects = new List <EmployeeProject> { employeeProject901, employeeProject902, employeeProject903 } } }; var projects = new List <Project> { new Project { Id = 10, EmployeeProjects = new List <EmployeeProject> { employeeProject100, employeeProject101 } }, new Project { Id = 11, EmployeeProjects = new List <EmployeeProject> { employeeProject102 } }, new Project { Id = 99, EmployeeProjects = new List <EmployeeProject> { employeeProject901, employeeProject902, employeeProject903 } } }; using (var ctx = new EmployeeProjectDbContext(options)) { ctx.Employees.AddRange(employees); ctx.Projects.AddRange(projects); ctx.EmployeeProjects.Add(employeeProject100); ctx.EmployeeProjects.Add(employeeProject101); ctx.EmployeeProjects.Add(employeeProject102); ctx.EmployeeProjects.Add(employeeProject901); ctx.EmployeeProjects.Add(employeeProject902); ctx.EmployeeProjects.Add(employeeProject903); ctx.SaveChanges(); } }