public async Task Edit_WhenRemovingProjectReference_NyssContextRemoveProjectIsCalledOnce() { //Arrange var editRequest = new EditSupervisorRequestDto { Name = "New name", PhoneNumber = "432432", Sex = Sex.Female, DecadeOfBirth = 1980, AdditionalPhoneNumber = "123123", ProjectId = null }; //Act await _supervisorService.Edit(_supervisorWithDataCollectorsId, editRequest); //Assert _nyssContext.SupervisorUserProjects.Received(1).Remove(Arg.Any <SupervisorUserProject>()); }
public async Task <Result> Edit(int supervisorId, EditSupervisorRequestDto editSupervisorRequestDto) { try { var supervisorUserData = await _dataContext.Users.FilterAvailable() .OfType <SupervisorUser>() .Include(u => u.UserNationalSocieties) .Where(u => u.Id == supervisorId) .Select(u => new { User = u, CurrentProjectReference = u.SupervisorUserProjects .SingleOrDefault(sup => sup.Project.State == ProjectState.Open) }) .SingleOrDefaultAsync(); if (supervisorUserData == null) { _loggerAdapter.Debug($"A supervisor with id {supervisorId} was not found"); return(Error(ResultKey.User.Common.UserNotFound)); } var supervisorUser = supervisorUserData.User; supervisorUser.Name = editSupervisorRequestDto.Name; supervisorUser.Sex = editSupervisorRequestDto.Sex; supervisorUser.DecadeOfBirth = editSupervisorRequestDto.DecadeOfBirth; supervisorUser.PhoneNumber = editSupervisorRequestDto.PhoneNumber; supervisorUser.AdditionalPhoneNumber = editSupervisorRequestDto.AdditionalPhoneNumber; supervisorUser.Organization = editSupervisorRequestDto.Organization; await UpdateSupervisorProjectReferences(supervisorUser, supervisorUserData.CurrentProjectReference, editSupervisorRequestDto.ProjectId); await _dataContext.SaveChangesAsync(); return(Success()); } catch (ResultException e) { _loggerAdapter.Debug(e); return(e.Result); } }
public async Task Edit_WhenSwitchingProjectToOneFromOtherNationalSociety_ShouldReturnError() { //Arrange var editRequest = new EditSupervisorRequestDto { Name = "New name", PhoneNumber = "432432", Sex = Sex.Female, DecadeOfBirth = 1980, AdditionalPhoneNumber = "123123", ProjectId = 4 }; //Act var result = await _supervisorService.Edit(_supervisorWithDataCollectorsId, editRequest); //Assert result.IsSuccess.ShouldBeFalse(); result.Message.Key.ShouldBe(ResultKey.User.Supervisor.ProjectDoesNotExistOrNoAccess); }
public async Task Edit_WhenSwitchingProjectToTheSameProject_NyssContextRemoveAndAddProjectShouldNotBeCalled() { //Arrange var editRequest = new EditSupervisorRequestDto { Name = "New name", PhoneNumber = "432432", Sex = Sex.Female, DecadeOfBirth = 1980, AdditionalPhoneNumber = "123123", ProjectId = 1 }; //Act await _supervisorService.Edit(_supervisorWithDataCollectorsId, editRequest); //Assert _nyssContext.SupervisorUserProjects.Received(0).Remove(Arg.Any <SupervisorUserProject>()); await _nyssContext.Received(0).AddAsync(Arg.Any <SupervisorUserProject>()); }
public async Task Edit_WhenSwitchingProject_NyssContextRemoveAndAddProjectEachAreCalledOnce() { //Arrange var editRequest = new EditSupervisorRequestDto { Name = "New name", PhoneNumber = "432432", Sex = Sex.Female, DecadeOfBirth = 1980, AdditionalPhoneNumber = "123123", ProjectId = 2 }; var projectReferenceToBeRemoved = _nyssContext.SupervisorUserProjects.Single(x => x.ProjectId == _projectId1 && x.SupervisorUserId == _supervisorWithDataCollectorsId); //Act await _supervisorService.Edit(_supervisorWithDataCollectorsId, editRequest); //Assert _nyssContext.SupervisorUserProjects.Received(1).Remove(projectReferenceToBeRemoved); await _nyssContext.Received(1).AddAsync(Arg.Any <SupervisorUserProject>()); }
public async Task Edit_WhenEditingExistingUser_ExpectedFieldsGetEdited() { var existingUserEmail = _nyssContext.Users.Single(u => u.Id == _supervisorWithDataCollectorsId)?.EmailAddress; var editRequest = new EditSupervisorRequestDto { Name = "New name", PhoneNumber = "432432", Sex = Sex.Female, DecadeOfBirth = 1980, AdditionalPhoneNumber = "123123" }; await _supervisorService.Edit(_supervisorWithDataCollectorsId, editRequest); var editedUser = _nyssContext.Users.Single(u => u.Id == _supervisorWithDataCollectorsId) as SupervisorUser; editedUser.ShouldNotBeNull(); editedUser.Name.ShouldBe(editRequest.Name); editedUser.PhoneNumber.ShouldBe(editRequest.PhoneNumber); editedUser.EmailAddress.ShouldBe(existingUserEmail); editedUser.DecadeOfBirth.ShouldBe(editRequest.DecadeOfBirth); editedUser.Sex.ShouldBe(editRequest.Sex); }
public async Task <Result> Edit(int supervisorId, [FromBody] EditSupervisorRequestDto editSupervisorRequestDto) => await _supervisorService.Edit(supervisorId, editSupervisorRequestDto);