Example #1
0
        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>());
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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>());
        }
Example #5
0
        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>());
        }
Example #6
0
        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);
        }
Example #7
0
 public async Task <Result> Edit(int supervisorId, [FromBody] EditSupervisorRequestDto editSupervisorRequestDto) =>
 await _supervisorService.Edit(supervisorId, editSupervisorRequestDto);