todos_filtering_spec.rb 3.5 KB
Newer Older
L
Luke Bennett 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
require 'spec_helper'

describe 'Dashboard > User filters todos', feature: true, js: true do
  include WaitForAjax

  let(:user_1)    { create(:user, username: 'user_1', name: 'user_1') }
  let(:user_2)    { create(:user, username: 'user_2', name: 'user_2') }

  let(:project_1) { create(:empty_project, name: 'project_1') }
  let(:project_2) { create(:empty_project, name: 'project_2') }

  let(:issue) { create(:issue, title: 'issue', project: project_1) }

  let!(:merge_request) { create(:merge_request, source_project: project_2, title: 'merge_request') }

  before do
    create(:todo, user: user_1, author: user_2, project: project_1, target: issue, action: 1)
    create(:todo, user: user_1, author: user_1, project: project_2, target: merge_request, action: 2)

    project_1.team << [user_1, :developer]
    project_2.team << [user_1, :developer]
    login_as(user_1)
    visit dashboard_todos_path
  end

  it 'filters by project' do
    click_button 'Project'
    within '.dropdown-menu-project' do
      fill_in 'Search projects', with: project_1.name_with_namespace
      click_link project_1.name_with_namespace
    end
32

L
Luke Bennett 已提交
33
    wait_for_ajax
34 35 36

    expect(page).to     have_content project_1.name_with_namespace
    expect(page).not_to have_content project_2.name_with_namespace
L
Luke Bennett 已提交
37 38
  end

V
Valery Sizov 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51
  context "Author filter" do
    it 'filters by author' do
      click_button 'Author'

      within '.dropdown-menu-author' do
        fill_in 'Search authors', with: user_1.name
        click_link user_1.name
      end

      wait_for_ajax

      expect(find('.todos-list')).to     have_content user_1.name
      expect(find('.todos-list')).not_to have_content user_2.name
L
Luke Bennett 已提交
52
    end
53

V
Valery Sizov 已提交
54 55 56 57 58 59 60 61 62 63
    it "shows only authors of existing todos" do
      click_button 'Author'

      within '.dropdown-menu-author' do
        # It should contain two users + "Any Author"
        expect(page).to have_selector('.dropdown-menu-user-link', count: 3)
        expect(page).to have_content(user_1.name)
        expect(page).to have_content(user_2.name)
      end
    end
64

V
Valery Sizov 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
    it "shows only authors of existing done todos" do
      user_3 = create :user
      user_4 = create :user
      create(:todo, user: user_1, author: user_3, project: project_1, target: issue, action: 1, state: :done)
      create(:todo, user: user_1, author: user_4, project: project_2, target: merge_request, action: 2, state: :done)

      project_1.team << [user_3, :developer]
      project_2.team << [user_4, :developer]

      visit dashboard_todos_path(state: 'done')

      click_button 'Author'

      within '.dropdown-menu-author' do
        # It should contain two users + "Any Author"
        expect(page).to have_selector('.dropdown-menu-user-link', count: 3)
        expect(page).to have_content(user_3.name)
        expect(page).to have_content(user_4.name)
        expect(page).not_to have_content(user_1.name)
        expect(page).not_to have_content(user_2.name)
      end
    end
L
Luke Bennett 已提交
87 88 89 90 91 92 93
  end

  it 'filters by type' do
    click_button 'Type'
    within '.dropdown-menu-type' do
      click_link 'Issue'
    end
94

L
Luke Bennett 已提交
95
    wait_for_ajax
96 97 98

    expect(find('.todos-list')).to     have_content issue.to_reference
    expect(find('.todos-list')).not_to have_content merge_request.to_reference
L
Luke Bennett 已提交
99 100 101 102 103 104 105
  end

  it 'filters by action' do
    click_button 'Action'
    within '.dropdown-menu-action' do
      click_link 'Assigned'
    end
106

L
Luke Bennett 已提交
107
    wait_for_ajax
108 109 110

    expect(find('.todos-list')).to     have_content ' assigned you '
    expect(find('.todos-list')).not_to have_content ' mentioned '
L
Luke Bennett 已提交
111 112
  end
end