diff options
Diffstat (limited to 'spec/features/contextual_sidebar_spec.rb')
-rw-r--r-- | spec/features/contextual_sidebar_spec.rb | 109 |
1 files changed, 92 insertions, 17 deletions
diff --git a/spec/features/contextual_sidebar_spec.rb b/spec/features/contextual_sidebar_spec.rb index 39881a28b11..29c7e0ddd21 100644 --- a/spec/features/contextual_sidebar_spec.rb +++ b/spec/features/contextual_sidebar_spec.rb @@ -3,35 +3,110 @@ require 'spec_helper' RSpec.describe 'Contextual sidebar', :js do - let_it_be(:project) { create(:project) } + context 'when context is a project' do + let_it_be(:project) { create(:project) } - let(:user) { project.owner } + let(:user) { project.owner } - before do - sign_in(user) + before do + sign_in(user) + end - visit project_path(project) - end + context 'when analyzing the menu' do + before do + visit project_path(project) + end + + it 'shows flyout navs when collapsed or expanded apart from on the active item when expanded', :aggregate_failures do + expect(page).not_to have_selector('.js-sidebar-collapsed') + + find('.rspec-link-pipelines').hover + + expect(page).to have_selector('.is-showing-fly-out') + + find('.rspec-project-link').hover + + expect(page).not_to have_selector('.is-showing-fly-out') + + find('.rspec-toggle-sidebar').click + + find('.rspec-link-pipelines').hover + + expect(page).to have_selector('.is-showing-fly-out') - it 'shows flyout navs when collapsed or expanded apart from on the active item when expanded', :aggregate_failures do - expect(page).not_to have_selector('.js-sidebar-collapsed') + find('.rspec-project-link').hover + + expect(page).to have_selector('.is-showing-fly-out') + end + end + + context 'with invite_members_in_side_nav experiment', :experiment do + it 'allows opening of modal for the candidate experience' do + stub_experiments(invite_members_in_side_nav: :candidate) + expect(experiment(:invite_members_in_side_nav)).to track(:assignment) + .with_context(group: project.group) + .on_next_instance + + visit project_path(project) + + page.within '[data-test-id="side-nav-invite-members"' do + find('[data-test-id="invite-members-button"').click + end + + expect(page).to have_content("You're inviting members to the") + end + + it 'does not have invite members link in side nav for the control experience' do + stub_experiments(invite_members_in_side_nav: :control) + expect(experiment(:invite_members_in_side_nav)).to track(:assignment) + .with_context(group: project.group) + .on_next_instance + + visit project_path(project) + + expect(page).not_to have_css('[data-test-id="side-nav-invite-members"') + end + end + end - find('.rspec-link-pipelines').hover + context 'when context is a group' do + let_it_be(:user) { create(:user) } + let_it_be(:group) do + create(:group).tap do |g| + g.add_owner(user) + end + end - expect(page).to have_selector('.is-showing-fly-out') + before do + sign_in(user) + end - find('.rspec-project-link').hover + context 'with invite_members_in_side_nav experiment', :experiment do + it 'allows opening of modal for the candidate experience' do + stub_experiments(invite_members_in_side_nav: :candidate) + expect(experiment(:invite_members_in_side_nav)).to track(:assignment) + .with_context(group: group) + .on_next_instance - expect(page).not_to have_selector('.is-showing-fly-out') + visit group_path(group) - find('.rspec-toggle-sidebar').click + page.within '[data-test-id="side-nav-invite-members"' do + find('[data-test-id="invite-members-button"').click + end - find('.rspec-link-pipelines').hover + expect(page).to have_content("You're inviting members to the") + end - expect(page).to have_selector('.is-showing-fly-out') + it 'does not have invite members link in side nav for the control experience' do + stub_experiments(invite_members_in_side_nav: :control) + expect(experiment(:invite_members_in_side_nav)).to track(:assignment) + .with_context(group: group) + .on_next_instance - find('.rspec-project-link').hover + visit group_path(group) - expect(page).to have_selector('.is-showing-fly-out') + expect(page).not_to have_css('[data-test-id="side-nav-invite-members"') + end + end end end |