summaryrefslogtreecommitdiff
path: root/spec/features/groups/show_spec.rb
blob: 8502d902e2ed67172d890af38c6ae32cc1ad547a (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require 'spec_helper'

feature 'Group show page', js: true do
  let(:group) { create(:group) }
  let(:path) { group_path(group) }

  context 'when signed in' do
    let(:user) do
      create(:group_member, :developer, user: create(:user), group: group ).user
    end

    before do
      sign_in(user)
    end

    it_behaves_like "an autodiscoverable RSS feed with current_user's RSS token" do
      before do
        visit path
      end
    end

    context 'subgroups', :nested_groups do
      let!(:subgroup) { create(:group, parent: group) }
      let!(:subsub_group) { create(:group, parent: subgroup) }
      let!(:project) { create(:project, namespace: subsub_group) }

      subject(:visit_subgroups) { visit subgroups_group_path(group) }

      it 'only shows the direct children by default' do
        visit_subgroups

        expect(page).to have_selector('.groups-list-tree-container .group-list-tree', count: 1)
        expect(page).to have_content(subgroup.name)
        expect(page).not_to have_content(subsub_group.name)
      end

      context 'nested projects' do
        def expand_groups
          visit_subgroups

          find("#group-#{subgroup.id}").trigger('click')
          wait_for_requests

          find("#group-#{subsub_group.id}").trigger('click')
          wait_for_requests
        end

        it 'allows expanding to see a subgroups projects' do
          expand_groups

          expect(page).to have_content(project.name)
        end

        it 'shows a link to the group page if there are more than 10 projects' do
          create_list(:project, 10, namespace: subsub_group)

          expand_groups

          expect(page).to have_link('1 more project')
        end
      end

      describe 'filtering subgroups' do
        let!(:other_subgroup) { create(:group, parent: group) }

        it 'shows the parent of the group matching a search' do
          visit_subgroups

          expect(page).to have_content(subgroup.name)
          expect(page).to have_content(other_subgroup.name)

          fill_in 'filter_groups', with: subsub_group.name
          wait_for_requests

          expect(page).to have_content(subgroup.name)
          expect(page).not_to have_content(other_subgroup.name)
        end
      end
    end
  end

  context 'when signed out' do
    it_behaves_like "an autodiscoverable RSS feed without an RSS token" do
      before do
        visit group_path(group)
      end
    end
  end
end