Skip to content
Snippets Groups Projects
Commit 43afe46b authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Refactor contributions events and write tests for calendar

parent 20a12438
No related branches found
No related tags found
1 merge request!8686add "Uplaod" and "Replace" functionality
Loading
Loading
@@ -4,10 +4,7 @@ class UsersController < ApplicationController
layout :determine_layout
 
def show
@contributed_projects = Project.
where(id: authorized_projects_ids & @user.contributed_projects_ids).
in_group_namespace.
includes(:namespace).
@contributed_projects = contributed_projects.joined(@user).
reject(&:forked?)
 
@projects = @user.personal_projects.
Loading
Loading
@@ -76,11 +73,12 @@ class UsersController < ApplicationController
 
def contributed_projects
@contributed_projects = Project.
where(id: authorized_projects_ids & @user.contributed_projects_ids).reject(&:forked?)
where(id: authorized_projects_ids & @user.contributed_projects_ids).
includes(:namespace)
end
 
def contributions_calendar
@contributions_calendar ||= Gitlab::ContributionsCalendar.
new(contributed_projects, @user)
new(contributed_projects.reject(&:forked?), @user)
end
end
Loading
Loading
@@ -55,6 +55,12 @@ class Event < ActiveRecord::Base
order('id DESC').limit(100).
update_all(updated_at: Time.now)
end
def contributions
where("action = ? OR (target_type in (?) AND action in (?))",
Event::PUSHED, ["MergeRequest", "Issue"],
[Event::CREATED, Event::CLOSED, Event::MERGED])
end
end
 
def proper?
Loading
Loading
Loading
Loading
@@ -603,13 +603,10 @@ class User < ActiveRecord::Base
end
 
def contributed_projects_ids
Event.where(author_id: self).
Event.contributions.where(author_id: self).
where("created_at > ?", Time.now - 1.year).
where("action = :pushed OR (target_type = 'MergeRequest' AND action = :created)",
pushed: Event::PUSHED, created: Event::CREATED).
reorder(project_id: :desc).
select(:project_id).
uniq
.map(&:project_id)
uniq.map(&:project_id)
end
end
- if @contributed_projects.present?
.panel.panel-default
.panel.panel-default.contributed-projects
.panel-heading Projects contributed to
= render 'shared/projects_list',
projects: @contributed_projects.sort_by(&:star_count).reverse,
Loading
Loading
Loading
Loading
@@ -7,4 +7,39 @@ class Spinach::Features::User < Spinach::FeatureSteps
step 'I should see user "John Doe" page' do
expect(title).to match(/^\s*John Doe/)
end
step '"John Doe" has contributions' do
user = User.find_by(name: 'John Doe')
project = contributed_project
# Issue controbution
issue_params = { title: 'Bug in old browser' }
Issues::CreateService.new(project, user, issue_params).execute
# Push code contribution
push_params = {
project: project,
action: Event::PUSHED,
author_id: user.id,
data: { commit_count: 3 }
}
Event.create(push_params)
end
step 'I should see contributed projects' do
within '.contributed-projects' do
page.should have_content(@contributed_project.name)
end
end
step 'I should see contributions calendar' do
within '.calendar' do
page.should have_css('.graph-rect.r2.q2')
end
end
def contributed_project
@contributed_project ||= create(:project, :public)
end
end
Loading
Loading
@@ -67,3 +67,12 @@ Feature: User
And I should see project "Enterprise"
And I should not see project "Internal"
And I should not see project "Community"
@javascript
Scenario: "John Doe" contribution profile
Given I sign in as a user
And "John Doe" has contributions
When I visit user "John Doe" page
Then I should see user "John Doe" page
And I should see contributed projects
And I should see contributions calendar
Loading
Loading
@@ -14,7 +14,7 @@ module Gitlab
date_from = 1.year.ago
date_to = Date.today
 
events = Event.where(author_id: user.id).where(action: event_type).
events = Event.contributions.where(author_id: user.id).
where("created_at > ?", date_from).where(project_id: projects)
 
grouped_events = events.to_a.group_by { |event| event.created_at.to_date.to_s }
Loading
Loading
@@ -41,7 +41,7 @@ module Gitlab
end
 
def events_by_date(date)
events = Event.where(author_id: user.id).where(action: event_type).
events = Event.contributions.where(author_id: user.id).
where("created_at > ? AND created_at < ?", date.beginning_of_day, date.end_of_day).
where(project_id: projects)
 
Loading
Loading
@@ -57,9 +57,5 @@ module Gitlab
def starting_month
Date.today.strftime("%m").to_i
end
def event_type
[Event::PUSHED, Event::CREATED, Event::CLOSED, Event::MERGED]
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment