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   -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   -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   -# 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   -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