public async Task AddAppointmentShouldReturnNull(string clientId, string trainerId) { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options; var db = new ApplicationDbContext(options); var appointmentsRepository = new EfDeletableEntityRepository <Appointment>(db); var usersRepository = new EfDeletableEntityRepository <ApplicationUser>(db); var notificationsService = new Mock <INotificationsService>(); var service = new AppointmentsService( appointmentsRepository, usersRepository, notificationsService.Object); var inputModel = new AddAppointmentInputModel() { StartTime = DateTime.UtcNow, EndTime = DateTime.UtcNow.AddDays(2), ClientId = clientId, TrainerId = trainerId, IsApproved = true, Notes = null, Type = AppointmentType.Consultation, }; var result = await service.AddAppoinmentAsync(inputModel); Assert.Null(result); }
public async Task GetAppointmentRequestsForTrainerShouldNotThrow() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options; var db = new ApplicationDbContext(options); var appointmentsRepository = new EfDeletableEntityRepository <Appointment>(db); var usersRepository = new EfDeletableEntityRepository <ApplicationUser>(db); var notificationsService = new Mock <INotificationsService>(); var service = new AppointmentsService( appointmentsRepository, usersRepository, notificationsService.Object); var client = new ApplicationUser(); var trainer = new ApplicationUser(); var role = new ApplicationRole(GlobalConstants.TrainerRoleName); var identityRole = new IdentityUserRole <string>() { RoleId = role.Id, UserId = trainer.Id, }; trainer.Roles.Add(identityRole); await usersRepository.AddAsync(trainer); await usersRepository.AddAsync(client); await usersRepository.SaveChangesAsync(); var inputModel = new AddAppointmentInputModel() { StartTime = DateTime.UtcNow, EndTime = DateTime.UtcNow.AddDays(2), ClientId = client.Id, TrainerId = trainer.Id, IsApproved = true, Notes = "Plamen", Type = AppointmentType.Consultation, }; var appointment = await service.AddAppoinmentAsync(inputModel); var result = await service.GetAppointmentRequestsForTrainer <TestAppointmentModel>(trainer.Id); Assert.Empty(result); }
public async Task ApproveAppointmentShouldThrow(string clientId, string trainerId, int appointmentId) { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options; var db = new ApplicationDbContext(options); var appointmentsRepository = new EfDeletableEntityRepository <Appointment>(db); var usersRepository = new EfDeletableEntityRepository <ApplicationUser>(db); var notificationsService = new Mock <INotificationsService>(); var service = new AppointmentsService( appointmentsRepository, usersRepository, notificationsService.Object); var client = new ApplicationUser(); var trainer = new ApplicationUser(); var role = new ApplicationRole(GlobalConstants.TrainerRoleName); var identityRole = new IdentityUserRole <string>() { RoleId = role.Id, UserId = trainer.Id, }; trainer.Roles.Add(identityRole); await usersRepository.AddAsync(trainer); await usersRepository.AddAsync(client); await usersRepository.SaveChangesAsync(); var inputModel = new AddAppointmentInputModel() { StartTime = DateTime.UtcNow, EndTime = DateTime.UtcNow.AddDays(3), ClientId = client.Id, TrainerId = trainer.Id, IsApproved = true, Notes = null, Type = AppointmentType.Consultation, }; var appointment = await service.AddAppoinmentAsync(inputModel); await Assert.ThrowsAnyAsync <InvalidOperationException>(async() => await service.ApproveAppointment(appointmentId, trainerId, clientId)); }