Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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();
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }