public void GetAllSalaries_ShouldReturnEmptyListWhenDBIsEmpty() { var dao = new PostgresDataAccessObjectService(dbContext); var objects = dao.GetAllSalaries(); Assert.Empty(objects); }
public async Task AddSalary_WhenNotEmptyTable() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 2 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.SaveChangesAsync(); var objToBeAdded = new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2", EmployeeId = 2 }; var dao = new PostgresDataAccessObjectService(dbContext); dao.AddSalary(objToBeAdded); var coll = dao.GetAllSalaries(); Assert.Equal(3, coll.Count); Assert.Equal(100f, coll[0].Value); Assert.Equal(200f, coll[1].Value); Assert.Equal(1, coll[0].EmployeeId); Assert.Equal(1, coll[1].EmployeeId); Assert.Equal(2, coll[2].EmployeeId); }
public void GetSalariesForAnEmployee_ShouldReturnNull_IfNoMatching() { var dao = new PostgresDataAccessObjectService(dbContext); var obj = dao.GetSalariesForAnEmployee(55); Assert.Empty(obj); }
public async Task AddSalary_Duplicate() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.SaveChangesAsync(); var objToBeAdded = new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2", EmployeeId = 1 }; var dao = new PostgresDataAccessObjectService(dbContext); bool exThrown = false; try { exThrown = true; dao.AddSalary(objToBeAdded); } catch (Exception ex) { Assert.Equal(typeof(ArgumentException), ex.GetType()); Assert.Equal("Salary with TimePeriod: some2 for Employee: 1 already exists", ex.Message); } Assert.True(exThrown); }
public async Task EditEmployeeHours_WhenNotExists() { await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 101, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 102, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var newEH = new EmployeeHours { EmployeeHoursId = 666, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }; bool exThrown = false; try { exThrown = true; dao.EditEmployeeHours(newEH); } catch (Exception e) { Assert.Equal(typeof(InvalidOperationException), e.GetType()); Assert.Equal("EmployeeHours object not found", e.Message); } Assert.True(exThrown); }
public async Task EditEmployeeHours_WhenExists() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 101, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 102, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var newEH = new EmployeeHours { EmployeeHoursId = 101, Value = 777f, TimePeriod = "02.01.2019_08.01.2022", EmployeeId = 4 }; dao.EditEmployeeHours(newEH); var obj = dao.GetOneEmployeeHours(101); Assert.NotNull(obj); Assert.Equal(101, obj.EmployeeHoursId); Assert.Equal(777f, obj.Value); Assert.Equal("02.01.2019_08.01.2022", obj.TimePeriod); Assert.Equal(4, obj.EmployeeId); }
public async Task AddEmployeeHours_WhenNotEmptyTable_KeepId_ConflictingKeyValues() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 100, Value = 100, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var emp = new EmployeeHours { EmployeeHoursId = 100, Value = 100, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }; var dao = new PostgresDataAccessObjectService(dbContext); bool exThrown = false; try { exThrown = true; dao.AddEmployeeHours(emp, true); } catch (Exception ex) { Assert.Equal(typeof(ArgumentException), ex.GetType()); Assert.Equal("EmployeeHours with EmployeeHoursId: 100 already exists", ex.Message); } Assert.True(exThrown); }
public void GetAllEmployees_ShouldReturnEmptyListWhenDBIsEmpty() { var dao = new PostgresDataAccessObjectService(dbContext); var employees = dao.GetAllEmployees(); Assert.Empty(employees); }
public async Task AddEmployeeHours_Fails_WhenAddedAlreadyWithTheSameTimePeriodEndEmployeeId() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 100, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var eh = new EmployeeHours { EmployeeHoursId = 101, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }; var dao = new PostgresDataAccessObjectService(dbContext); bool exThrown = false; try { exThrown = true; dao.AddEmployeeHours(eh); } catch (Exception e) { Assert.Equal(typeof(ArgumentException), e.GetType()); Assert.Equal("EmployeeHours with EmployeeId: 4 and TimePeriod 02.01.2019_08.01.2019 already exists", e.Message); } var coll = dao.GetEmployeeHoursForAnEmployee(4); Assert.Single(coll); Assert.True(exThrown); }
public async Task AddEmployeeHours_WhenNotEmptyTable() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 100, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var eh = new EmployeeHours(); eh.EmployeeId = 4; eh.Value = 90; eh.TimePeriod = "02.03.2019_08.03.2019"; var dao = new PostgresDataAccessObjectService(dbContext); dao.AddEmployeeHours(eh); var coll = dao.GetEmployeeHoursForAnEmployee(4); Assert.Equal(2, coll.Count); Assert.Equal(100f, coll[0].Value); Assert.Equal(90f, coll[1].Value); Assert.Equal(100, coll[0].EmployeeHoursId); Assert.Equal(101, coll[1].EmployeeHoursId); }
public void GetEmployeeHoursForAnEmployee_ShouldReturnEmptyListWhenDBIsEmpty() { var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetEmployeeHoursForAnEmployee(0); Assert.Empty(coll); }
public async Task Synchronize_Works_StartWithEmplyDb_HQEmpty() { var cs = CommonHelpers.MockConfServ(false); var hqApiClient = new Moq.Mock <IHQAPIClient>(); // no employees in HQ hqApiClient.Setup(m => m.ListEmployees(cs.GetBranchOfficeId())).Returns( Task.FromResult(new List <HQEmployee>()) ); // no salaries in HQ hqApiClient.Setup(m => m.ListSalariesForEmployee(Moq.It.IsAny <int>())).Returns( Task.FromResult(new List <HQSalary>()) ); var dao = new PostgresDataAccessObjectService(dbContext); var ss = new SynchronizatorService(hqApiClient.Object, cs, dao); await ss.Synchronize(); hqApiClient.Verify(m => m.ListEmployees(0), Moq.Times.Once); // ListEmployees did not succeed, so no new http requests are handled hqApiClient.Verify(m => m.ListSalariesForEmployee(Moq.It.IsAny <int>()), Moq.Times.Never); ss.Dispose(); var emps = dao.GetAllEmployees(); var eh = dao.GetAllEmployeeHours(); Assert.Empty(emps); Assert.Empty(eh); }
public async Task GetAllEmployees_ShouldReturnAllEmployeesWhenSomeInDB() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola Dwa", Email = "*****@*****.**" }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var employees = dao.GetAllEmployees(); Assert.Single(employees); }
public async Task GetEmployeeHoursForAnEmployee_ShouldReturnAllEmployeesHoursWhenSomeInDB() { await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 100, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 0 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetEmployeeHoursForAnEmployee(0); Assert.Single(coll); }
public async Task Synchronize_Works_StartWithEmplyDb_HQNotEmpty() { var cs = CommonHelpers.MockConfServ(false); var hqApiClient = new Moq.Mock <IHQAPIClient>(); var hqEmp1 = new HQEmployee { Name = "Jan K", Email = "*****@*****.**", IsManager = false, ID = 1 }; var hqEmp2 = new HQEmployee { Name = "Ela K", Email = "*****@*****.**", IsManager = true, ID = 2 }; var hqEmps = new List <HQEmployee>(); hqEmps.Add(hqEmp1); hqEmps.Add(hqEmp2); var hqSalary1 = new HQSalary { ID = 1, EmployeeID = 1, Value = 1000, TimePeriod = "01.02.2019-06.02.2019" }; var hqSalary2 = new HQSalary { ID = 2, EmployeeID = 1, Value = 1000, TimePeriod = "07.02.2019-09.02.2019" }; var hqSalaries = new List <HQSalary>(); hqSalaries.Add(hqSalary1); hqSalaries.Add(hqSalary2); hqApiClient.Setup(m => m.ListEmployees(cs.GetBranchOfficeId())).Returns( Task.FromResult(hqEmps) ); hqApiClient.Setup(m => m.ListSalariesForEmployee(1)).Returns( Task.FromResult(hqSalaries) ); var dao = new PostgresDataAccessObjectService(dbContext); var ss = new SynchronizatorService(hqApiClient.Object, cs, dao); await ss.Synchronize(); hqApiClient.Verify(m => m.ListEmployees(0), Moq.Times.Once); // 1 for each hq employee hqApiClient.Verify(m => m.ListSalariesForEmployee(Moq.It.IsAny <int>()), Moq.Times.Exactly(2)); ss.Dispose(); var emps = dao.GetAllEmployees(); var eh = dao.GetAllEmployeeHours(); var salaries = dao.GetAllSalaries(); Assert.Equal(2, emps.Count); Assert.Equal("*****@*****.**", emps[0].Email); Assert.Equal("*****@*****.**", emps[1].Email); Assert.Empty(eh); Assert.Equal(2, salaries.Count); }
public void DeleteSalary_WhenNotExists() { var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetAllSalaries(); Assert.Empty(coll); dao.DeleteSalary(1); coll = dao.GetAllSalaries(); Assert.Empty(coll); }
public async Task GetOneEmployee_ShouldReturnNull_IfNoEmployee() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola Dwa", Email = "*****@*****.**", EmployeeId = 0 }); await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var employee = dao.GetOneEmployee(55); Assert.Null(employee); }
public async Task GetAllSalaries_ShouldReturnListWhenSomeInDB() { await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var objects = dao.GetAllSalaries(); Assert.Equal(2, objects.Count); Assert.Equal(200, objects[1].Value); }
public async Task GetOneEmployeeHours_ShouldReturnNull_IfNoEmployeeHours() { await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 101, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 102, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var obj = dao.GetOneEmployeeHours(55); Assert.Null(obj); }
public async Task GetOneSalary_ShouldReturnNull_IfNoMatch() { await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2", EmployeeId = 2 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var obj = dao.GetOneSalary(11); Assert.Null(obj); }
public async Task GetSalariesForAnEmployee_ShouldReturnObj_IfExists() { await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2", EmployeeId = 2 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var objects = dao.GetSalariesForAnEmployee(1); Assert.Equal(2, objects.Count); Assert.Equal(200, objects[1].Value); }
public async Task GetOneEmployee_ShouldReturnSpecifiedEmployee_IfExists() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola Dwa", Email = "*****@*****.**", EmployeeId = 0 }); await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var employee = dao.GetOneEmployee(4); Assert.NotNull(employee); Assert.Equal("Ola AAA", employee.Name); Assert.Equal(4, employee.EmployeeId); Assert.Equal("*****@*****.**", employee.Email); }
public void AddEmployee_WhenEmptyTable() { var emp = new Employee { Name = "Ola 2", Email = "*****@*****.**", EmployeeId = 44 }; var dao = new PostgresDataAccessObjectService(dbContext); dao.AddEmployee(emp); var coll = dao.GetAllEmployees(); Assert.Single(coll); Assert.Equal("Ola 2", coll[0].Name); Assert.Equal("*****@*****.**", coll[0].Email); Assert.Equal(1, coll[0].EmployeeId);// apparently we must start from 1 }
public async Task EditEmployee_WhenExists() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 5 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var newEH = new Employee { Name = "Ola 2", Email = "*****@*****.**", EmployeeId = 5 }; dao.EditEmployee(newEH); var returned = dao.GetOneEmployee(5); Assert.Equal(returned.EmployeeId, newEH.EmployeeId); Assert.Equal(returned.Name, newEH.Name); Assert.Equal(returned.Email, newEH.Email); }
public async Task AddSalary_WhenEmptyTable() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var objToBeAdded = new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2", EmployeeId = 4 }; var dao = new PostgresDataAccessObjectService(dbContext); dao.AddSalary(objToBeAdded); var coll = dao.GetAllSalaries(); Assert.Single(coll); Assert.Equal(4, coll[0].EmployeeId); }
public async Task DeleteEmployee_WhenNotExists() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.Employees.AddAsync(new Employee { Name = "Ola 2", Email = "*****@*****.**", EmployeeId = 5 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetAllEmployees(); Assert.Equal(2, coll.Count); dao.DeleteEmployee(477); coll = dao.GetAllEmployees(); Assert.Equal(2, coll.Count); }
public async Task DeleteSalary_WhenExists() { await dbContext.Salaries.AddAsync(new Salary { SalaryId = 1, Value = 100, TimePeriod = "some", EmployeeId = 1 }); await dbContext.Salaries.AddAsync(new Salary { SalaryId = 2, Value = 200, TimePeriod = "some2", EmployeeId = 1 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetAllSalaries(); Assert.Equal(2, coll.Count); dao.DeleteSalary(1); coll = dao.GetAllSalaries(); Assert.Single(coll); Assert.Equal(2, coll[0].SalaryId); }
public async Task DeleteEmployeeHours_WhenNotExists() { await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 101, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.EmployeeHoursCollection.AddAsync( new EmployeeHours { EmployeeHoursId = 102, Value = 100f, TimePeriod = "02.01.2019_08.01.2019", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var coll = dao.GetEmployeeHoursForAnEmployee(4); Assert.Equal(2, coll.Count); dao.DeleteEmployeeHours(100); coll = dao.GetEmployeeHoursForAnEmployee(4); Assert.Equal(2, coll.Count); }
public async Task AddSalary_WhenEmployeeIdNotSet() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 9 }); await dbContext.SaveChangesAsync(); var objToBeAdded = new Salary { SalaryId = 3, Value = 300, TimePeriod = "some2" }; var dao = new PostgresDataAccessObjectService(dbContext); bool exThrown = false; try { exThrown = true; dao.AddSalary(objToBeAdded); } catch (Exception e) { Assert.Equal(typeof(ArgumentException), e.GetType()); Assert.Equal("EmployeeId was not set", e.Message); } Assert.True(exThrown); }
public async Task EditEmployee_WhenNotExists() { await dbContext.Employees.AddAsync(new Employee { Name = "Ola AAA", Email = "*****@*****.**", EmployeeId = 4 }); await dbContext.SaveChangesAsync(); var dao = new PostgresDataAccessObjectService(dbContext); var newEH = new Employee { Name = "Ola 2", Email = "*****@*****.**", EmployeeId = 5 }; bool exThrown = false; try { exThrown = true; dao.EditEmployee(newEH); } catch (Exception e) { Assert.Equal(typeof(InvalidOperationException), e.GetType()); Assert.Equal("Employee object not found", e.Message); } Assert.True(exThrown); }