Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 4
0
        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();
            }
        }