Skip to content
Snippets Groups Projects
Commit 82816184 authored by Lee Tickett's avatar Lee Tickett
Browse files

Merge branch '155-fix-org-leaderboard' into 'main'

Fix organizations leaderboard to include recent (today's) contributions

Closes #155

See merge request gitlab-org/developer-relations/contributor-success/contributors-gitlab-com!952
parents d591db83 ea2648f6
No related branches found
No related tags found
No related merge requests found
......@@ -4,15 +4,15 @@ class Organization < ApplicationRecord
self.table_name = 'users'
self.primary_key = nil
default_scope lambda {
select('MAX(users.organization) AS name, SUM(view_activity_summaries.points) AS score,
select('MAX(users.organization) AS name, SUM(view_combined_activity_summaries.points) AS score,
COUNT(DISTINCT users.id) AS contributors_count')
.joins(:view_activity_summaries)
.joins(:view_combined_activity_summaries)
.where.not(organization: [nil, ''])
.group('LOWER(users.organization)')
}
has_many :view_activity_summaries, class_name: 'Views::ActivitySummary', primary_key: :id, foreign_key: :user_id,
inverse_of: false, dependent: nil
has_many :view_combined_activity_summaries, class_name: 'Views::CombinedActivitySummary',
primary_key: :id, foreign_key: :user_id, inverse_of: false, dependent: nil
def read_only?
true
......
......@@ -12,9 +12,9 @@ class OrganizationsQuery < ApplicationQuery
end
def execute
relation = Organization
.where(view_activity_summaries: { community_member: true,
activity_date: options[:from_date]..options[:to_date] })
relation = Organization.where(view_combined_activity_summaries: {
community_member: true, activity_date: options[:from_date]..options[:to_date]
})
unless options[:search].nil?
relation = relation.where("organization ILIKE '%#{sanitize_sql_like(options[:search])}%'")
end
......
......@@ -16,15 +16,16 @@ RSpec.describe OrganizationsQuery do
bob = create(:user, organization: 'FOO', community_member: true)
alice = create(:user, organization: 'Foo', community_member: true)
johny = create(:user, organization: 'Bar', community_member: true)
create(:issue, user: bob, opened_date: 1.week.ago)
create(:issue, user: alice, opened_date: 1.day.ago)
create(:note, user: johny, added_date: 1.day.ago)
Views::ActivitySummary.refresh(concurrently: false)
create(:note, user: johny, added_date: Time.zone.now)
Views::RecentActivitySummary.refresh(concurrently: false)
end
shared_examples 'works correctly' do
it 'returns expected organizations in correct order' do
Views::ActivitySummary.refresh(concurrently: false)
records = query.execute
expect(records.total_count).to eq(expected_total_count)
expect(records.as_json).to eq(expected_organizations)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment