Commit 4a5e4b18f5470eedc0fb8af9a135edc609d167f6

Authored by Dmitriy Zaporozhets
1 parent 6153aa13

Specs for FilteringService

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing 1 changed file with 65 additions and 0 deletions   Show diff stats
spec/services/filtering_service_spec.rb 0 → 100644
... ... @@ -0,0 +1,65 @@
  1 +require 'spec_helper'
  2 +
  3 +describe FilteringService 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', state: 'opened' }
  29 + merge_requests = FilteringService.new.execute(MergeRequest, user, params)
  30 + merge_requests.size.should == 3
  31 + end
  32 +
  33 + it 'should filter by project' do
  34 + params = { project_id: project1.id, scope: 'authored', state: 'opened' }
  35 + merge_requests = FilteringService.new.execute(MergeRequest, user, params)
  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", state: 'opened' }
  49 + issues = FilteringService.new.execute(Issue, user, params)
  50 + issues.size.should == 3
  51 + end
  52 +
  53 + it 'should filter by assignee' do
  54 + params = { scope: "assigned-to-me", state: 'opened' }
  55 + issues = FilteringService.new.execute(Issue, user, params)
  56 + issues.size.should == 2
  57 + end
  58 +
  59 + it 'should filter by project' do
  60 + params = { scope: "assigned-to-me", state: 'opened', project_id: project1.id }
  61 + issues = FilteringService.new.execute(Issue, user, params)
  62 + issues.size.should == 1
  63 + end
  64 + end
  65 +end
... ...