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