public virtual async Task <Employee> FindAsync(int id) { using (var context = new CodingExerciseContext()) { return(await context.Employees.FirstOrDefaultAsync(x => x.Id == id)); } }
public virtual async Task <Employee> SaveAsync(Employee employee) { using (var context = new CodingExerciseContext()) { if (employee == null) { throw new ArgumentException("Invalid Employee."); } context.Employees.Add(employee); await context.SaveChangesAsync(); return(employee); } }
public void CleanDatabase() { using (var context = new CodingExerciseContext()) { var tableNames = context.Database .SqlQuery <string>( "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME NOT LIKE '%Migration%'") .ToList(); foreach (var tableName in tableNames) { // Table names cannot be sent as parameters. The table names are resolved at parse time, since they are needed for planning and such things. // We need to use string replacement for it. // It's not a security issue (or even the risk of becoming one) as long as the table name does not come from a user input. context.Database.ExecuteSqlCommand($"DELETE FROM {tableName}"); } context.SaveChanges(); } }
public async Task SaveAsync_SavesEmployee() { // Arrange var employee = CreateEmployee(); var repository = new EmployeeRepository(); // Act var savedEmployee = await repository.SaveAsync(employee); // Assert using (var context = new CodingExerciseContext()) { Assert.IsNotNull(savedEmployee); var employeeFromDatabase = context.Employees.FirstOrDefault(e => e.Id == savedEmployee.Id); Assert.IsNotNull(employeeFromDatabase); Assert.AreEqual(employee.Name, employeeFromDatabase.Name); Assert.AreEqual(employee.Email, employeeFromDatabase.Email); Assert.AreEqual(employee.ManagerId, employeeFromDatabase.ManagerId); Assert.AreEqual(employee.Role, employeeFromDatabase.Role); } }