diff options
Diffstat (limited to 'spec/support/shared_examples/views')
-rw-r--r-- | spec/support/shared_examples/views/milestone_shared_examples.rb | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/support/shared_examples/views/milestone_shared_examples.rb b/spec/support/shared_examples/views/milestone_shared_examples.rb new file mode 100644 index 00000000000..b6f4d0db0e9 --- /dev/null +++ b/spec/support/shared_examples/views/milestone_shared_examples.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'milestone empty states' do + include Devise::Test::ControllerHelpers + + let_it_be(:user) { build(:user) } + let(:empty_state) { 'Use milestones to track issues and merge requests over a fixed period of time' } + + before do + assign(:projects, []) + allow(view).to receive(:current_user).and_return(user) + end + + context 'with no milestones' do + before do + assign(:milestones, []) + assign(:milestone_states, { opened: 0, closed: 0, all: 0 }) + render + end + + it 'shows empty state' do + expect(rendered).to have_content(empty_state) + end + + it 'does not show tabs or searchbar' do + expect(rendered).not_to have_link('Open') + expect(rendered).not_to have_link('Closed') + expect(rendered).not_to have_link('All') + end + end + + context 'with no open milestones' do + before do + allow(view).to receive(:milestone_path).and_return("/milestones/1") + assign(:milestones, []) + assign(:milestone_states, { opened: 0, closed: 1, all: 1 }) + end + + it 'shows tabs and searchbar', :aggregate_failures do + render + + expect(rendered).not_to have_content(empty_state) + expect(rendered).to have_link('Open') + expect(rendered).to have_link('Closed') + expect(rendered).to have_link('All') + end + + it 'shows empty state' do + render + + expect(rendered).to have_content('There are no open milestones') + end + end + + context 'with no closed milestones' do + before do + allow(view).to receive(:milestone_path).and_return("/milestones/1") + allow(view).to receive(:params).and_return(state: 'closed') + assign(:milestones, []) + assign(:milestone_states, { opened: 1, closed: 0, all: 1 }) + end + + it 'shows tabs and searchbar', :aggregate_failures do + render + + expect(rendered).not_to have_content(empty_state) + expect(rendered).to have_link('Open') + expect(rendered).to have_link('Closed') + expect(rendered).to have_link('All') + end + + it 'shows empty state on closed milestones' do + render + + expect(rendered).to have_content('There are no closed milestones') + end + end +end |