public async Task AllRepairTasksWorkedByATechnicianAreReturned() { User technician = new User { UserName = "******" }; await this.UserManager.CreateAsync(technician); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.ExpertTechnicianUserRole }); await this.UserManager.AddToRoleAsync(technician, StringConstants.ExpertTechnicianUserRole); UserRepairTask[] userRepairTask = new UserRepairTask[3]; for (int i = 0; i < userRepairTask.Length; i++) { userRepairTask[i] = new UserRepairTask { Expert = technician, IsFinished = false, RepairTask = new RepairTask { Id = i + 1 } }; } this.dbContext.AddRange(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(userRepairTask.Length, this.RepairTaskService.GetAllWorkedByATechnician(technician.UserName).ToArray().Length); }
public async Task NoTechniciansAreReturnedSinceNobodyIsWorkingOnTheGivenRepairTask() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask userRepairTask = new UserRepairTask { RepairTaskId = 1 }; this.dbContext.Add(userRepairTask); this.dbContext.SaveChanges(); Assert.Empty(this.TechnicianService.GetAllNamesOfTechniciansWorkingOnAGivenTask(1).ToArray()); }
public async Task AllTechniciansAreReturnedBecauseNobodyIsWorkingOnTheGivenTask() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask userRepairTask = new UserRepairTask { RepairTask = new RepairTask { Id = 1 } }; this.dbContext.Add(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(technicians.Length, this.TechnicianService.GetAllNamesOfTechniciansNotWorkingOnAGivenTask(1).GetAwaiter().GetResult().ToArray().Length); }
public async Task ARepairTaskIsComletedWhenAllTechniciansCompleteIt() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); await this.UserManager.AddToRoleAsync(technician, StringConstants.NoviceTechnicianUserRole); } User customer = new User { UserName = "******" }; await this.UserManager.CreateAsync(customer); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.CorporateCustomerUserRole }); await this.UserManager.AddToRoleAsync(customer, StringConstants.CorporateCustomerUserRole); UserRepairTask[] userRepairTasks = new UserRepairTask[3]; for (int i = 0; i < userRepairTasks.Length; i++) { userRepairTasks[i] = new UserRepairTask { RepairTask = new RepairTask { Id = 1, Status = Status.WorkedOn, User = customer }, IsFinished = false, Expert = technicians[i] }; } this.dbContext.UsersRepairsTasks.AddRange(userRepairTasks); this.dbContext.SaveChanges(); foreach (User technician in technicians) { await this.RepairTaskService.TechnicianCompletesARepairTaskAsync(1, technician.UserName); } Assert.Equal(Status.Finished, userRepairTasks[0].RepairTask.Status); }
public async Task AddTechnicianToRepairTaskAsync(string nameOfTechnicianToAdd, int id) { string userId = this.userManager.FindByNameAsync(nameOfTechnicianToAdd).GetAwaiter().GetResult().Id; UserRepairTask userRepairTask = new UserRepairTask { UserId = userId, RepairTaskId = id }; await this.dbContext .UsersRepairsTasks .AddAsync(userRepairTask); if (await this.dbContext.SaveChangesAsync() == 0) { throw new ApplicationException(); } }
public async Task RepairTaskStatusChangedToPendingIfAllTechniciansAreRemovedFromRepairTask() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); await this.UserManager.AddToRoleAsync(technician, StringConstants.NoviceTechnicianUserRole); } UserRepairTask[] userRepairTasks = new UserRepairTask[3]; for (int i = 0; i < userRepairTasks.Length; i++) { userRepairTasks[i] = new UserRepairTask { RepairTask = new RepairTask { Id = 1, Status = Status.WorkedOn }, IsFinished = false, Expert = technicians[i] }; } this.dbContext.UsersRepairsTasks.AddRange(userRepairTasks); this.dbContext.SaveChanges(); foreach (User technician in technicians) { await this.RepairTaskService.RemoveTechnicianFromRepairTaskAsync(technician.UserName, 1); } Assert.Equal(Status.Pending, userRepairTasks[0].RepairTask.Status); }
public async Task RemoveTechnicianFromRepairTaskAsync(string nameOfTechnicianToRemove, int id) { string technicianId = this.userManager.FindByNameAsync(nameOfTechnicianToRemove).GetAwaiter().GetResult().Id; UserRepairTask repairTaskToRemove = this.dbContext .UsersRepairsTasks .Where(usersRepairTasks => usersRepairTasks.Expert.Id == technicianId && usersRepairTasks.RepairTaskId == id) .FirstOrDefault(); if (repairTaskToRemove == null) { throw new ArgumentNullException(); } this.dbContext .UsersRepairsTasks .Remove(repairTaskToRemove); if (await this.dbContext.SaveChangesAsync() == 0) { throw new ApplicationException(); } await this.CheckWhetherThereAreAnyTechnicianStillAssignedToTheTaskAsync(id); }
public async Task ATaskCannotBeCompletedIfOneOfTheTechniciansHasNotCompletedIt() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); UserRepairTask[] userRepairTasks = new UserRepairTask[3]; for (int i = 0; i < technicians.Length; i++) { await this.UserManager.CreateAsync(technicians[i]); await this.UserManager.AddToRoleAsync(technicians[i], StringConstants.NoviceTechnicianUserRole); userRepairTasks[i] = new UserRepairTask { RepairTask = new RepairTask { Id = 1, Status = Status.WorkedOn }, IsFinished = false, Expert = technicians[i] }; } this.dbContext.UsersRepairsTasks.AddRange(userRepairTasks); this.dbContext.SaveChanges(); for (int i = 0; i < technicians.Length - 1; i++) { await this.RepairTaskService.TechnicianCompletesARepairTaskAsync(1, technicians[i].UserName); } Assert.Equal(Status.WorkedOn, userRepairTasks[0].RepairTask.Status); }
public async Task GetSomeTechniciansSinceNotAllAreLinkedToTheGivenRepairTask() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask[] userRepairTask = new UserRepairTask[3]; for (int i = 0; i < userRepairTask.Length; i++) { userRepairTask[i] = new UserRepairTask { Expert = technicians[i], RepairTask = new RepairTask { Id = 1 } }; } userRepairTask[0].RepairTask.Id = 2; this.dbContext.AddRange(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(technicians.Length - 1, this.RepairTaskService.GetTechniciansHavingWorkedOnARepairTask(1).ToArray().Length); }
public async Task AllTechniciansThatAreWorkingOnAGivenTaskAreReturned() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask[] userRepairTask = new UserRepairTask[2]; for (int i = 0; i < 2; i++) { userRepairTask[i] = new UserRepairTask { Expert = technicians[i], RepairTask = new RepairTask { Id = 1 } }; } this.dbContext.AddRange(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(technicians.Length - 1, this.TechnicianService.GetAllNamesOfTechniciansWorkingOnAGivenTask(1).ToArray().Length); }
public async Task AllFinishedRepairTasksOfATechnicianAreReturned() { User[] technicians = { new User { UserName = "******" }, }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask[] userRepairTask = new UserRepairTask[6]; for (int i = 0; i < userRepairTask.Length; i++) { userRepairTask[i] = new UserRepairTask(); userRepairTask[i].Expert = technicians[0]; userRepairTask[i].RepairTask = new RepairTask { Id = i + 1 }; } int countOfRepairTasksToBeReturned = 3; for (int i = 0; i < countOfRepairTasksToBeReturned; i++) { userRepairTask[i].IsFinished = true; } this.dbContext.AddRange(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(countOfRepairTasksToBeReturned, this.TechnicianService.GetAllFinishedRepairTaskPerTechnician(technicians[0].UserName).ToArray().Length); }
public async Task OnlyAvailableTechniciansAreReturned() { User[] technicians = { new User { UserName = "******" }, new User { UserName = "******" }, new User { UserName = "******" } }; foreach (User technician in technicians) { await this.UserManager.CreateAsync(technician); } await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); foreach (User technicican in technicians) { await this.UserManager.AddToRoleAsync(technicican, StringConstants.NoviceTechnicianUserRole); } UserRepairTask[] userRepairTask = new UserRepairTask[6]; for (int i = 0; i < userRepairTask.Length; i++) { userRepairTask[i] = new UserRepairTask(); userRepairTask[i].Expert = technicians[0]; userRepairTask[i].RepairTask = new RepairTask { Id = i + 1 }; } this.dbContext.AddRange(userRepairTask); this.dbContext.SaveChanges(); Assert.Equal(technicians.Length - 1, this.TechnicianService.GetAllAvailableTechnicians().GetAwaiter().GetResult().Length); }
public async Task ATechnicianCanCompleteARepairTask() { User technician = new User { UserName = "******" }; await this.UserManager.CreateAsync(technician); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.NoviceTechnicianUserRole }); await this.UserManager.AddToRoleAsync(technician, StringConstants.NoviceTechnicianUserRole); User customer = new User { UserName = "******" }; await this.UserManager.CreateAsync(customer); await this.RoleManager.CreateAsync(new AppRole { Name = StringConstants.CorporateCustomerUserRole }); await this.UserManager.AddToRoleAsync(customer, StringConstants.CorporateCustomerUserRole); UserRepairTask userRepairTask = new UserRepairTask { RepairTask = new RepairTask { Id = 1, Status = Status.WorkedOn, User = customer }, IsFinished = false, Expert = technician }; this.dbContext.UsersRepairsTasks.Add(userRepairTask); this.dbContext.SaveChanges(); await this.RepairTaskService.TechnicianCompletesARepairTaskAsync(1, technician.UserName); Assert.Equal(Status.Finished, userRepairTask.RepairTask.Status); }