diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 21:09:11 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 21:09:11 +0300 |
commit | 0434f38ef1dce4fe640fe1e4542235746ceb943c (patch) | |
tree | 3affe5902c9da74441dfbf5069f76c023b5cd03a /spec/features/projects/snippets/user_views_snippets_spec.rb | |
parent | c27acb1d376f7127cd33eadcc8f5683ed55262bc (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/features/projects/snippets/user_views_snippets_spec.rb')
-rw-r--r-- | spec/features/projects/snippets/user_views_snippets_spec.rb | 97 |
1 files changed, 81 insertions, 16 deletions
diff --git a/spec/features/projects/snippets/user_views_snippets_spec.rb b/spec/features/projects/snippets/user_views_snippets_spec.rb index 5739c9510a8..a02f7f8a8d2 100644 --- a/spec/features/projects/snippets/user_views_snippets_spec.rb +++ b/spec/features/projects/snippets/user_views_snippets_spec.rb @@ -3,32 +3,97 @@ require 'spec_helper' describe 'Projects > Snippets > User views snippets' do - let(:project) { create(:project) } - let!(:project_snippet) { create(:project_snippet, project: project, author: user) } - let!(:snippet) { create(:snippet, author: user) } - let(:snippets) { [project_snippet, snippet] } # Used by the shared examples + let_it_be(:project) { create(:project) } let(:user) { create(:user) } - before do - project.add_maintainer(user) - sign_in(user) - + def visit_project_snippets visit(project_snippets_path(project)) end - context 'pagination' do + context 'snippets list' do + let!(:project_snippet) { create(:project_snippet, project: project, author: user) } + let!(:snippet) { create(:snippet, author: user) } + let(:snippets) { [project_snippet, snippet] } # Used by the shared examples + before do - create(:project_snippet, project: project, author: user) - allow(Snippet).to receive(:default_per_page).and_return(1) + project.add_maintainer(user) + sign_in(user) + end + + context 'pagination' do + before do + create(:project_snippet, project: project, author: user) + allow(Snippet).to receive(:default_per_page).and_return(1) - visit project_snippets_path(project) + visit_project_snippets + end + + it_behaves_like 'paginated snippets' end - it_behaves_like 'paginated snippets' + it 'shows snippets' do + visit_project_snippets + + expect(page).to have_link(project_snippet.title, href: project_snippet_path(project, project_snippet)) + expect(page).not_to have_content(snippet.title) + end end - it 'shows snippets' do - expect(page).to have_link(project_snippet.title, href: project_snippet_path(project, project_snippet)) - expect(page).not_to have_content(snippet.title) + context 'when current user is a guest' do + before do + project.add_guest(user) + sign_in(user) + end + + context 'when snippets list is empty' do + it 'hides New Snippet button' do + visit_project_snippets + + page.within(find('.empty-state')) do + expect(page).not_to have_link('New snippet') + end + end + end + + context 'when project has snippets' do + let!(:project_snippet) { create(:project_snippet, project: project, author: user) } + + it 'hides New Snippet button' do + visit_project_snippets + + page.within(find('.top-area')) do + expect(page).not_to have_link('New snippet') + end + end + end + end + + context 'when current user is not a guest' do + before do + project.add_developer(user) + sign_in(user) + end + + context 'when snippets list is empty' do + it 'shows New Snippet button' do + visit_project_snippets + + page.within(find('.empty-state')) do + expect(page).to have_link('New snippet') + end + end + end + + context 'when project has snippets' do + let!(:project_snippet) { create(:project_snippet, project: project, author: user) } + + it 'shows New Snippet button' do + visit_project_snippets + + page.within(find('.top-area')) do + expect(page).to have_link('New snippet') + end + end + end end end |