Commit 46997c6a89c6115c64f6e0c8836bb3b598fcd433

Authored by Dmitriy Zaporozhets
1 parent 234b86c9

Remove unnecessary contexts

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
app/contexts/filter_context.rb
@@ -1,58 +0,0 @@ @@ -1,58 +0,0 @@
1 -class FilterContext  
2 - attr_accessor :klass, :current_user, :params  
3 -  
4 - def initialize(klass, current_user, params)  
5 - @klass = klass  
6 - @current_user = current_user  
7 - @params = params  
8 - end  
9 -  
10 - def execute  
11 - items = by_scope  
12 - items = by_state(items)  
13 - items = by_project(items)  
14 - items = by_search(items)  
15 - end  
16 -  
17 - private  
18 -  
19 - def by_scope  
20 - table_name = klass.table_name  
21 -  
22 - case params[:scope]  
23 - when 'authored' then  
24 - current_user.send(table_name)  
25 - when 'all' then  
26 - klass.of_projects(current_user.authorized_projects.pluck(:id))  
27 - else  
28 - current_user.send("assigned_#{table_name}")  
29 - end  
30 - end  
31 -  
32 - def by_state(items)  
33 - case params[:status]  
34 - when 'closed'  
35 - items.closed  
36 - when 'all'  
37 - items  
38 - else  
39 - items.opened  
40 - end  
41 - end  
42 -  
43 - def by_project(items)  
44 - if params[:project_id].present?  
45 - items = items.of_projects(params[:project_id])  
46 - end  
47 -  
48 - items  
49 - end  
50 -  
51 - def by_search(items)  
52 - if params[:search].present?  
53 - items = items.search(params[:search])  
54 - end  
55 -  
56 - items  
57 - end  
58 -end  
app/contexts/issues/list_context.rb
@@ -1,39 +0,0 @@ @@ -1,39 +0,0 @@
1 -module Issues  
2 - class ListContext < BaseContext  
3 - attr_accessor :issues  
4 -  
5 - def execute  
6 - @issues = @project.issues  
7 -  
8 - @issues = case params[:state]  
9 - when 'all' then @issues  
10 - when 'closed' then @issues.closed  
11 - else @issues.opened  
12 - end  
13 -  
14 - @issues = case params[:scope]  
15 - when 'assigned-to-me' then @issues.assigned_to(current_user)  
16 - when 'created-by-me' then @issues.authored(current_user)  
17 - else @issues  
18 - end  
19 -  
20 - @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?  
21 - @issues = @issues.includes(:author, :project)  
22 -  
23 - # Filter by specific assignee_id (or lack thereof)?  
24 - if params[:assignee_id].present?  
25 - @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))  
26 - end  
27 -  
28 - # Filter by specific milestone_id (or lack thereof)?  
29 - if params[:milestone_id].present?  
30 - @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))  
31 - end  
32 -  
33 - # Sort by :sort param  
34 - @issues = @issues.sort(params[:sort])  
35 -  
36 - @issues  
37 - end  
38 - end  
39 -end  
app/contexts/merge_requests_load_context.rb
@@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
1 -# Build collection of Merge Requests  
2 -# based on filtering passed via params for @project  
3 -class MergeRequestsLoadContext < BaseContext  
4 - def execute  
5 - merge_requests = @project.merge_requests  
6 -  
7 - merge_requests = case params[:state]  
8 - when 'all' then merge_requests  
9 - when 'closed' then merge_requests.closed  
10 - else merge_requests.opened  
11 - end  
12 -  
13 - merge_requests = case params[:scope]  
14 - when 'assigned-to-me' then merge_requests.assigned_to(current_user)  
15 - when 'created-by-me' then merge_requests.authored(current_user)  
16 - else merge_requests  
17 - end  
18 -  
19 -  
20 - merge_requests = merge_requests.page(params[:page]).per(20)  
21 - merge_requests = merge_requests.includes(:author, :source_project, :target_project).order("created_at desc")  
22 -  
23 - # Filter by specific assignee_id (or lack thereof)?  
24 - if params[:assignee_id].present?  
25 - merge_requests = merge_requests.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))  
26 - end  
27 -  
28 - # Filter by specific milestone_id (or lack thereof)?  
29 - if params[:milestone_id].present?  
30 - merge_requests = merge_requests.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))  
31 - end  
32 -  
33 - # Sort by :sort param  
34 - merge_requests = merge_requests.sort(params[:sort])  
35 -  
36 - merge_requests  
37 - end  
38 -end  
spec/contexts/filter_context_spec.rb
@@ -1,65 +0,0 @@ @@ -1,65 +0,0 @@
1 -require 'spec_helper'  
2 -  
3 -describe FilterContext do  
4 - let(:user) { create :user }  
5 - let(:user2) { create :user }  
6 - let(:project1) { create(:project) }  
7 - let(:project2) { create(:project) }  
8 - let(:merge_request1) { create(:merge_request, author: user, source_project: project1, target_project: project2) }  
9 - let(:merge_request2) { create(:merge_request, author: user, source_project: project2, target_project: project1) }  
10 - let(:merge_request3) { create(:merge_request, author: user, source_project: project2, target_project: project2) }  
11 - let(:issue1) { create(:issue, assignee: user, project: project1) }  
12 - let(:issue2) { create(:issue, assignee: user, project: project2) }  
13 - let(:issue3) { create(:issue, assignee: user2, project: project2) }  
14 -  
15 - before do  
16 - project1.team << [user, :master]  
17 - project2.team << [user, :developer]  
18 - end  
19 -  
20 - describe 'merge requests' do  
21 - before :each do  
22 - merge_request1  
23 - merge_request2  
24 - merge_request3  
25 - end  
26 -  
27 - it 'should filter by scope' do  
28 - params = { scope: 'authored' }  
29 - merge_requests = FilterContext.new(MergeRequest, user, params).execute  
30 - merge_requests.size.should == 3  
31 - end  
32 -  
33 - it 'should filter by project' do  
34 - params = { project_id: project1.id, scope: 'authored' }  
35 - merge_requests = FilterContext.new(MergeRequest, user, params).execute  
36 - merge_requests.size.should == 1  
37 - end  
38 - end  
39 -  
40 - describe 'issues' do  
41 - before :each do  
42 - issue1  
43 - issue2  
44 - issue3  
45 - end  
46 -  
47 - it 'should filter by all' do  
48 - params = { scope: "all" }  
49 - issues = FilterContext.new(Issue, user, params).execute  
50 - issues.size.should == 3  
51 - end  
52 -  
53 - it 'should filter by assignee' do  
54 - params = {}  
55 - issues = FilterContext.new(Issue, user, params).execute  
56 - issues.size.should == 2  
57 - end  
58 -  
59 - it 'should filter by project' do  
60 - params = { project_id: project1.id }  
61 - issues = FilterContext.new(Issue, user, params).execute  
62 - issues.size.should == 1  
63 - end  
64 - end  
65 -end