Skip to content

Commit 6b20bed

Browse files
author
gdgate
authored
Merge pull request #1646 from tqtu/TMA-1653-1
BUGFIX: TMA-1653 fix issue using find function of Enumerator Reviewed-by: https://github.com/danh-ung
2 parents 45cf8d5 + fce1824 commit 6b20bed

5 files changed

Lines changed: 45 additions & 33 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.7.15
1+
3.7.16

lib/gooddata/models/domain.rb

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -222,22 +222,23 @@ def users(domain, id = :all, opts = {})
222222
domain = client.domain(domain)
223223
if id == :all
224224
GoodData.logger.warn("Retrieving all users from domain #{domain.name}")
225-
Enumerator.new do |y|
226-
page_limit = opts[:page_limit] || 1000
227-
offset = opts[:offset] || 0
228-
loop do
229-
begin
230-
tmp = client(opts).get("#{domain.uri}/users", params: { offset: offset, limit: page_limit })
231-
end
232-
233-
tmp['accountSettings']['items'].each do |user_data|
234-
user = client.create(GoodData::Profile, user_data)
235-
y << user if user
236-
end
237-
break if tmp['accountSettings']['items'].count < page_limit
238-
offset += page_limit
225+
all_users = []
226+
page_limit = opts[:page_limit] || 1000
227+
offset = opts[:offset] || 0
228+
loop do
229+
begin
230+
tmp = client(opts).get("#{domain.uri}/users", params: { offset: offset, limit: page_limit })
239231
end
232+
233+
tmp['accountSettings']['items'].each do |user_data|
234+
user = client.create(GoodData::Profile, user_data)
235+
all_users << user if user
236+
end
237+
break if tmp['accountSettings']['items'].count < page_limit
238+
offset += page_limit
240239
end
240+
241+
all_users
241242
else
242243
find_user_by_login(domain, id)
243244
end

lib/gooddata/models/project.rb

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1546,26 +1546,27 @@ def uri
15461546
# @return [Array<GoodData::User>] List of users
15471547
def users(opts = {})
15481548
client = client(opts)
1549-
Enumerator.new do |y|
1550-
offset = opts[:offset] || 0
1551-
limit = opts[:limit] || 1_000
1552-
loop do
1553-
tmp = client.get("/gdc/projects/#{pid}/users", params: { offset: offset, limit: limit })
1554-
tmp['users'].each do |user_data|
1555-
user = client.create(GoodData::Membership, user_data, project: self)
1556-
1557-
if opts[:all]
1558-
y << user
1559-
elsif opts[:disabled]
1560-
y << user if user && user.disabled?
1561-
else
1562-
y << user if user && user.enabled?
1563-
end
1549+
all_users = []
1550+
offset = opts[:offset] || 0
1551+
limit = opts[:limit] || 1_000
1552+
loop do
1553+
tmp = client.get("/gdc/projects/#{pid}/users", params: { offset: offset, limit: limit })
1554+
tmp['users'].each do |user_data|
1555+
user = client.create(GoodData::Membership, user_data, project: self)
1556+
1557+
if opts[:all]
1558+
all_users << user
1559+
elsif opts[:disabled]
1560+
all_users << user if user && user.disabled?
1561+
else
1562+
all_users << user if user && user.enabled?
15641563
end
1565-
break if tmp['users'].count < limit
1566-
offset += limit
15671564
end
1565+
break if tmp['users'].count < limit
1566+
offset += limit
15681567
end
1568+
1569+
all_users
15691570
end
15701571

15711572
alias_method :members, :users

spec/integration/models/domain_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
describe '#users' do
5858
it 'Should list users' do
5959
users = @domain.users
60-
expect(users).to be_instance_of(Enumerator)
60+
expect(users).to be_instance_of(Array)
6161
users.each do |user|
6262
expect(user).to be_an_instance_of(GoodData::Profile)
6363
end

spec/integration/models/project_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,16 @@
9999
end
100100
end
101101

102+
describe '#get_all_users' do
103+
it 'Returns all user in project' do
104+
users = @project.users
105+
expect(users).to be_instance_of(Array)
106+
users.each do |user|
107+
expect(user).to be_an_instance_of(GoodData::Membership)
108+
end
109+
end
110+
end
111+
102112
describe '#get_role_by_identifier' do
103113
it 'Looks up for role by identifier' do
104114
role = @project.get_role_by_identifier('readOnlyUserRole')

0 commit comments

Comments
 (0)