public async Task DeleteNationalSocietyUser_WhenSuccessful_NyssContextSaveChangesShouldBeCalledOnce() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); await _nationalSocietyUserService.DeleteUser <ManagerUser>(123, new List <string> { Role.Administrator.ToString() }); await _nyssContext.Received().SaveChangesAsync(); }
public async Task GetNationalSocietyUser_WhenUserDoesntExists_ShouldThrowException() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); await _nationalSocietyUserService.GetNationalSocietyUser <ManagerUser>(999).ShouldThrowAsync <ResultException>(); }
public async Task GetNationalSocietyUser_WhenUserExistsButIsOfOtherType_ShouldThrowException() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); await _nationalSocietyUserService.GetNationalSocietyUser <TechnicalAdvisorUser>(123).ShouldThrowAsync <ResultException>(); }
public async Task GetNationalSocietyUser_WhenUserExistsAndIsOfRequestedType_ShouldReturnUser() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); var user = await _nationalSocietyUserService.GetNationalSocietyUser <ManagerUser>(123); user.ShouldBe(manager); }
public async Task DeleteNationalSocietyUser_WhenUserDoesntExist_ShouldReturnError() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); var result = await _nationalSocietyUserService.DeleteUser <TechnicalAdvisorUser>(999, new List <string> { Role.Administrator.ToString() }); result.IsSuccess.ShouldBeFalse(); }
public async Task DeleteNationalSocietyUser_WhenUserExistsAndIsOfRequestedType_ShouldReturnSuccess() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); var result = await _nationalSocietyUserService.DeleteUser <ManagerUser>(123, new List <string> { Role.Administrator.ToString() }); result.IsSuccess.ShouldBeTrue(); }
public async Task DeleteNationalSocietyUser_WhenSuccessful_IdentityUserDeleteShouldBeCalledOnce() { var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; ArrangeUserNationalSocietiesFrom(new List <UserNationalSociety> { userNationalSociety }); await _nationalSocietyUserService.DeleteUser <ManagerUser>(123, new List <string> { Role.Administrator.ToString() }); await _identityUserRegistrationService.Received().DeleteIdentityUser(Arg.Any <string>()); }
public async Task DeleteNationalSocietyUser_WhenSuccessful_NyssContextRemoveUserNationalSocietiesShouldBeCalledOnce() { //arrange var manager = new ManagerUser { Id = 123, Role = Role.Manager }; ArrangeUsersFrom(new List <User> { manager }); var userNationalSociety = new UserNationalSociety { User = manager, UserId = manager.Id, NationalSocietyId = 1 }; var usersNationalSocieties = new List <UserNationalSociety> { userNationalSociety }; ArrangeUserNationalSocietiesFrom(usersNationalSocieties); manager.UserNationalSocieties = usersNationalSocieties; //act await _nationalSocietyUserService.DeleteUser <ManagerUser>(123, new List <string> { Role.Administrator.ToString() }); //assert _nyssContext.UserNationalSocieties.Received().RemoveRange(Arg.Is <IEnumerable <UserNationalSociety> >(x => x.Contains(userNationalSociety))); }
public async Task <Result> AddExisting(int nationalSocietyId, string userEmail) { var userData = await _dataContext.Users.FilterAvailable() .Where(u => u.EmailAddress == userEmail) .Select(u => new { u.Id, u.Role }) .SingleOrDefaultAsync(); if (userData == null) { return(Error(ResultKey.User.Registration.UserNotFound)); } if (userData.Role != Role.TechnicalAdvisor && userData.Role != Role.DataConsumer) { return(Error(ResultKey.User.Registration.NoAssignableUserWithThisEmailFound)); } var userAlreadyIsInThisNationalSociety = await _dataContext.UserNationalSocieties .FilterAvailableUsers() .AnyAsync(uns => uns.NationalSocietyId == nationalSocietyId && uns.UserId == userData.Id); if (userAlreadyIsInThisNationalSociety) { return(Error(ResultKey.User.Registration.UserIsAlreadyInThisNationalSociety)); } var nationalSocietyIsArchived = await _dataContext.NationalSocieties.AnyAsync(ns => ns.Id == nationalSocietyId && ns.IsArchived); if (nationalSocietyIsArchived) { return(Error(ResultKey.User.Registration.CannotAddExistingUsersToArchivedNationalSociety)); } var userNationalSociety = new UserNationalSociety { NationalSocietyId = nationalSocietyId, UserId = userData.Id }; await _dataContext.UserNationalSocieties.AddAsync(userNationalSociety); await _dataContext.SaveChangesAsync(); return(Success()); }
private async Task HandleHeadManagerStatus(TechnicalAdvisorUser technicalAdvisor, UserNationalSociety nationalSocietyReferenceToRemove, bool allowHeadManagerDeletion) { var nationalSociety = await _dataContext.NationalSocieties.FindAsync(nationalSocietyReferenceToRemove.NationalSocietyId); if (nationalSociety.PendingHeadManager == technicalAdvisor) { nationalSociety.PendingHeadManager = null; } if (nationalSociety.HeadManager == technicalAdvisor) { if (!allowHeadManagerDeletion) { throw new ResultException(ResultKey.User.Deletion.CannotDeleteHeadManager); } nationalSociety.HeadManager = null; } }