Beispiel #1
0
        public void ProviderProjectTo_CallsMapperMapCorrectTimes()
        {
            //arrange
            var someFakeCollection = new List <Category>
            {
                new Category(),
                new Category(),
                new Category(),
                new Category(),
                new Category()
            }.AsQueryable();

            var mockMapper          = new Mock <IMapper>();
            var fakeMappingProvider = new MappingProvider(mockMapper.Object);

            //act
            fakeMappingProvider.ProjectTo <CategoryDTO>(someFakeCollection);
            //assert
            mockMapper.Verify(x => x.Map <CategoryDTO>(It.IsAny <Category>()), Times.Exactly(5));
        }
        public async Task <IEnumerable <UserDto> > GetAllUsers()
        {
            var users = (await this.UserRepository.GetAll()).Where(u => !u.IsDeleted);

            Guard.WhenArgument(users, "Users").IsNull().Throw();

            var usersDto = MappingProvider.ProjectTo <User, UserDto>(users).ToList();

            Guard.WhenArgument(usersDto, "UsersDto").IsNull().Throw();

            var adminRoleId = await this.UserRepository.GetAdminRoleId();

            Guard.WhenArgument(adminRoleId, "AdminRole Id").IsNullOrEmpty().Throw();

            var roles  = (await this.UserRepository.GetAllRoles())?.Where(r => r.RoleId == adminRoleId);
            var admins = usersDto.Join(roles, u => u.Id, r => r.UserId, (u, r) => u);

            Guard.WhenArgument(admins, "Admins").IsNull().Throw();

            //foreach (var admin in admins)
            //{
            //    admin.IsAdmin = true;
            //}

            for (int i = 0; i < usersDto.Count(); i++)
            {
                foreach (var admin in admins)
                {
                    if (usersDto[i].Id == admin.Id)
                    {
                        usersDto[i].IsAdmin = true;
                        admin.IsAdmin       = true;
                    }
                }
            }

            return(usersDto);
        }