summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsh McKenzie <ash@the-rebellion.net>2019-07-18 12:09:30 +1000
committerAsh McKenzie <amckenzie@gitlab.com>2019-07-18 12:34:17 +1000
commitf53112de5931144ac74819f87c227f06e115ba58 (patch)
tree3181a5601e537b32100f88389779903976097b7a
parentd00d60a66deeacb19ccbd39501946ed646db64b6 (diff)
downloadgitlab-ce-39-count-unique-users-for-more-accurate-smau-reporting.tar.gz
-rw-r--r--app/models/members/group_member.rb2
-rw-r--r--spec/factories/group_members.rb4
-rw-r--r--spec/models/members/group_member_spec.rb36
3 files changed, 28 insertions, 14 deletions
diff --git a/app/models/members/group_member.rb b/app/models/members/group_member.rb
index 4cba69069bb..341d2fe2149 100644
--- a/app/models/members/group_member.rb
+++ b/app/models/members/group_member.rb
@@ -13,8 +13,8 @@ class GroupMember < Member
default_scope { where(source_type: SOURCE_TYPE) }
scope :of_groups, ->(groups) { where(source_id: groups.select(:id)) }
-
scope :count_users_by_group_id, -> { joins(:user).group(:source_id).count }
+ scope :of_ldap_type, -> { where(ldap: true) }
after_create :update_two_factor_requirement, unless: :invite?
after_destroy :update_two_factor_requirement, unless: :invite?
diff --git a/spec/factories/group_members.rb b/spec/factories/group_members.rb
index 077c6ddc5ae..0cf99a31d20 100644
--- a/spec/factories/group_members.rb
+++ b/spec/factories/group_members.rb
@@ -16,5 +16,9 @@ FactoryBot.define do
invite_token 'xxx'
invite_email 'email@email.com'
end
+
+ trait(:ldap) do
+ ldap true
+ end
end
end
diff --git a/spec/models/members/group_member_spec.rb b/spec/models/members/group_member_spec.rb
index f227abd3dae..a6928ec31f4 100644
--- a/spec/models/members/group_member_spec.rb
+++ b/spec/models/members/group_member_spec.rb
@@ -3,19 +3,29 @@
require 'spec_helper'
describe GroupMember do
- describe '.count_users_by_group_id' do
- it 'counts users by group ID' do
- user_1 = create(:user)
- user_2 = create(:user)
- group_1 = create(:group)
- group_2 = create(:group)
-
- group_1.add_owner(user_1)
- group_1.add_owner(user_2)
- group_2.add_owner(user_1)
-
- expect(described_class.count_users_by_group_id).to eq(group_1.id => 2,
- group_2.id => 1)
+ context 'scopes' do
+ describe '.count_users_by_group_id' do
+ it 'counts users by group ID' do
+ user_1 = create(:user)
+ user_2 = create(:user)
+ group_1 = create(:group)
+ group_2 = create(:group)
+
+ group_1.add_owner(user_1)
+ group_1.add_owner(user_2)
+ group_2.add_owner(user_1)
+
+ expect(described_class.count_users_by_group_id).to eq(group_1.id => 2,
+ group_2.id => 1)
+ end
+ end
+
+ describe '.of_ldap_type' do
+ it 'returns ldap type users' do
+ group_member = create(:group_member, :ldap)
+
+ expect(described_class.of_ldap_type).to eq([group_member])
+ end
end
end