group_links_spec.rb 2.13 KB
Newer Older
1 2
require 'spec_helper'

3
feature 'Project group links', :js do
4 5 6
  include Select2Helper

  let(:master) { create(:user) }
7
  let(:project) { create(:empty_project) }
8 9 10
  let!(:group) { create(:group) }

  background do
11
    project.add_master(master)
12
    sign_in(master)
13 14 15 16
  end

  context 'setting an expiration date for a group link' do
    before do
17
      visit project_settings_members_path(project)
18

19 20
      click_on 'share-with-group-tab'

21
      select2 group.id, from: '#link_group_id'
22
      fill_in 'expires_at_groups', with: (Time.current + 4.5.days).strftime('%Y-%m-%d')
23
      page.find('body').click
Annabel Dunstone Gray's avatar
Annabel Dunstone Gray committed
24
      find('.btn-create').trigger('click')
25 26 27
    end

    it 'shows the expiration time with a warning class' do
28
      page.within('.project-members-groups') do
Annabel Dunstone Gray's avatar
Annabel Dunstone Gray committed
29
        expect(page).to have_content('Expires in 4 days')
30 31 32 33
        expect(page).to have_selector('.text-warning')
      end
    end
  end
34 35 36 37

  context 'nested group project' do
    let!(:nested_group) { create(:group, parent: group) }
    let!(:another_group) { create(:group) }
38
    let!(:project) { create(:empty_project, namespace: nested_group) }
39 40 41 42 43 44

    background do
      group.add_master(master)
      another_group.add_master(master)
    end

45
    it 'does not show ancestors', :nested_groups do
46
      visit project_settings_members_path(project)
47

48
      click_on 'share-with-group-tab'
49 50 51 52 53 54 55 56
      click_link 'Search for a group'

      page.within '.select2-drop' do
        expect(page).to have_content(another_group.name)
        expect(page).not_to have_content(group.name)
      end
    end
  end
57 58 59 60 61 62 63

  describe 'the groups dropdown' do
    before do
      group_two = create(:group)
      group.add_owner(master)
      group_two.add_owner(master)

64
      visit project_settings_members_path(project)
65 66 67 68 69 70 71 72 73 74 75 76
      execute_script 'GroupsSelect.PER_PAGE = 1;'
      open_select2 '#link_group_id'
    end

    it 'should infinitely scroll' do
      expect(find('.select2-drop .select2-results')).to have_selector('.select2-result', count: 1)

      scroll_select2_to_bottom('.select2-drop .select2-results:visible')

      expect(find('.select2-drop .select2-results')).to have_selector('.select2-result', count: 2)
    end
  end
77
end