diff options
author | Rémy Coutable <remy@rymai.me> | 2019-03-20 10:30:06 +0100 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2019-03-21 17:31:42 +0100 |
commit | 9e171a530fe885eca784ed6c5a602ab796a5790c (patch) | |
tree | 3efbd4bd897b5120b5de6a813d2ed2792a2fb81f /spec/finders | |
parent | e9aefa112bcdc9b81135977356a64b94119eb383 (diff) | |
download | gitlab-ce-9e171a530fe885eca784ed6c5a602ab796a5790c.tar.gz |
[CE] Reduce differences with EE in snippets_finder_spec.rb
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'spec/finders')
-rw-r--r-- | spec/finders/snippets_finder_spec.rb | 221 |
1 files changed, 94 insertions, 127 deletions
diff --git a/spec/finders/snippets_finder_spec.rb b/spec/finders/snippets_finder_spec.rb index 134fb5f2c04..93287f3e9b8 100644 --- a/spec/finders/snippets_finder_spec.rb +++ b/spec/finders/snippets_finder_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' describe SnippetsFinder do include Gitlab::Allowable - using RSpec::Parameterized::TableSyntax describe '#initialize' do it 'raises ArgumentError when a project and author are given' do @@ -14,174 +13,142 @@ describe SnippetsFinder do end end - context 'filter by scope' do - let(:user) { create :user } - let!(:snippet1) { create(:personal_snippet, :private, author: user) } - let!(:snippet2) { create(:personal_snippet, :internal, author: user) } - let!(:snippet3) { create(:personal_snippet, :public, author: user) } - - it "returns all snippets for 'all' scope" do - snippets = described_class.new(user, scope: :all).execute - - expect(snippets).to include(snippet1, snippet2, snippet3) - end - - it "returns all snippets for 'are_private' scope" do - snippets = described_class.new(user, scope: :are_private).execute + describe '#execute' do + set(:user) { create(:user) } + set(:private_personal_snippet) { create(:personal_snippet, :private, author: user) } + set(:internal_personal_snippet) { create(:personal_snippet, :internal, author: user) } + set(:public_personal_snippet) { create(:personal_snippet, :public, author: user) } - expect(snippets).to include(snippet1) - expect(snippets).not_to include(snippet2, snippet3) - end + context 'filter by scope' do + it "returns all snippets for 'all' scope" do + snippets = described_class.new(user, scope: :all).execute - it "returns all snippets for 'are_internal' scope" do - snippets = described_class.new(user, scope: :are_internal).execute + expect(snippets).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet) + end - expect(snippets).to include(snippet2) - expect(snippets).not_to include(snippet1, snippet3) - end + it "returns all snippets for 'are_private' scope" do + snippets = described_class.new(user, scope: :are_private).execute - it "returns all snippets for 'are_private' scope" do - snippets = described_class.new(user, scope: :are_public).execute + expect(snippets).to contain_exactly(private_personal_snippet) + end - expect(snippets).to include(snippet3) - expect(snippets).not_to include(snippet1, snippet2) - end - end + it "returns all snippets for 'are_internal' scope" do + snippets = described_class.new(user, scope: :are_internal).execute - context 'filter by author' do - let(:user) { create :user } - let(:user1) { create :user } - let!(:snippet1) { create(:personal_snippet, :private, author: user) } - let!(:snippet2) { create(:personal_snippet, :internal, author: user) } - let!(:snippet3) { create(:personal_snippet, :public, author: user) } + expect(snippets).to contain_exactly(internal_personal_snippet) + end - it "returns all public and internal snippets" do - snippets = described_class.new(user1, author: user).execute + it "returns all snippets for 'are_private' scope" do + snippets = described_class.new(user, scope: :are_public).execute - expect(snippets).to include(snippet2, snippet3) - expect(snippets).not_to include(snippet1) + expect(snippets).to contain_exactly(public_personal_snippet) + end end - it "returns internal snippets" do - snippets = described_class.new(user, author: user, scope: :are_internal).execute + context 'filter by author' do + it 'returns all public and internal snippets' do + snippets = described_class.new(create(:user), author: user).execute - expect(snippets).to include(snippet2) - expect(snippets).not_to include(snippet1, snippet3) - end + expect(snippets).to contain_exactly(internal_personal_snippet, public_personal_snippet) + end - it "returns private snippets" do - snippets = described_class.new(user, author: user, scope: :are_private).execute + it 'returns internal snippets' do + snippets = described_class.new(user, author: user, scope: :are_internal).execute - expect(snippets).to include(snippet1) - expect(snippets).not_to include(snippet2, snippet3) - end + expect(snippets).to contain_exactly(internal_personal_snippet) + end - it "returns public snippets" do - snippets = described_class.new(user, author: user, scope: :are_public).execute + it 'returns private snippets' do + snippets = described_class.new(user, author: user, scope: :are_private).execute - expect(snippets).to include(snippet3) - expect(snippets).not_to include(snippet1, snippet2) - end + expect(snippets).to contain_exactly(private_personal_snippet) + end - it "returns all snippets" do - snippets = described_class.new(user, author: user).execute + it 'returns public snippets' do + snippets = described_class.new(user, author: user, scope: :are_public).execute - expect(snippets).to include(snippet1, snippet2, snippet3) - end + expect(snippets).to contain_exactly(public_personal_snippet) + end - it "returns only public snippets if unauthenticated user" do - snippets = described_class.new(nil, author: user).execute + it 'returns all snippets' do + snippets = described_class.new(user, author: user).execute - expect(snippets).to include(snippet3) - expect(snippets).not_to include(snippet2, snippet1) - end + expect(snippets).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet) + end - it 'returns all snippets for an admin' do - admin = create(:user, :admin) - snippets = described_class.new(admin, author: user).execute + it 'returns only public snippets if unauthenticated user' do + snippets = described_class.new(nil, author: user).execute - expect(snippets).to include(snippet1, snippet2, snippet3) - end - end + expect(snippets).to contain_exactly(public_personal_snippet) + end - context 'filter by project' do - let(:user) { create :user } - let(:group) { create :group, :public } - let(:project1) { create(:project, :public, group: group) } + it 'returns all snippets for an admin' do + admin = create(:user, :admin) + snippets = described_class.new(admin, author: user).execute - before do - @snippet1 = create(:project_snippet, :private, project: project1) - @snippet2 = create(:project_snippet, :internal, project: project1) - @snippet3 = create(:project_snippet, :public, project: project1) + expect(snippets).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet) + end end - it "returns public snippets for unauthorized user" do - snippets = described_class.new(nil, project: project1).execute + context 'project snippets' do + let(:group) { create(:group, :public) } + let(:project) { create(:project, :public, group: group) } + let!(:private_project_snippet) { create(:project_snippet, :private, project: project) } + let!(:internal_project_snippet) { create(:project_snippet, :internal, project: project) } + let!(:public_project_snippet) { create(:project_snippet, :public, project: project) } - expect(snippets).to include(@snippet3) - expect(snippets).not_to include(@snippet1, @snippet2) - end + it 'returns public personal and project snippets for unauthorized user' do + snippets = described_class.new(nil, project: project).execute - it "returns public and internal snippets for non project members" do - snippets = described_class.new(user, project: project1).execute + expect(snippets).to contain_exactly(public_project_snippet) + end - expect(snippets).to include(@snippet2, @snippet3) - expect(snippets).not_to include(@snippet1) - end + it 'returns public and internal snippets for non project members' do + snippets = described_class.new(user, project: project).execute - it "returns public snippets for non project members" do - snippets = described_class.new(user, project: project1, scope: :are_public).execute + expect(snippets).to contain_exactly(internal_project_snippet, public_project_snippet) + end - expect(snippets).to include(@snippet3) - expect(snippets).not_to include(@snippet1, @snippet2) - end + it 'returns public snippets for non project members' do + snippets = described_class.new(user, project: project, scope: :are_public).execute - it "returns internal snippets for non project members" do - snippets = described_class.new(user, project: project1, scope: :are_internal).execute + expect(snippets).to contain_exactly(public_project_snippet) + end - expect(snippets).to include(@snippet2) - expect(snippets).not_to include(@snippet1, @snippet3) - end + it 'returns internal snippets for non project members' do + snippets = described_class.new(user, project: project, scope: :are_internal).execute - it "does not return private snippets for non project members" do - snippets = described_class.new(user, project: project1, scope: :are_private).execute + expect(snippets).to contain_exactly(internal_project_snippet) + end - expect(snippets).not_to include(@snippet1, @snippet2, @snippet3) - end + it 'does not return private snippets for non project members' do + snippets = described_class.new(user, project: project, scope: :are_private).execute - it "returns all snippets for project members" do - project1.add_developer(user) + expect(snippets).to be_empty + end - snippets = described_class.new(user, project: project1).execute + it 'returns all snippets for project members' do + project.add_developer(user) - expect(snippets).to include(@snippet1, @snippet2, @snippet3) - end + snippets = described_class.new(user, project: project).execute - it "returns private snippets for project members" do - project1.add_developer(user) + expect(snippets).to contain_exactly(private_project_snippet, internal_project_snippet, public_project_snippet) + end - snippets = described_class.new(user, project: project1, scope: :are_private).execute + it 'returns private snippets for project members' do + project.add_developer(user) - expect(snippets).to include(@snippet1) - end + snippets = described_class.new(user, project: project, scope: :are_private).execute - it 'returns all snippets for an admin' do - admin = create(:user, :admin) - snippets = described_class.new(admin, project: project1).execute + expect(snippets).to contain_exactly(private_project_snippet) + end - expect(snippets).to include(@snippet1, @snippet2, @snippet3) - end - end + it 'returns all snippets for an admin' do + admin = create(:user, :admin) + snippets = described_class.new(admin, project: project).execute - describe '#execute' do - let(:project) { create(:project, :public) } - let!(:project_snippet) { create(:project_snippet, :public, project: project) } - let!(:personal_snippet) { create(:personal_snippet, :public) } - let(:user) { create(:user) } - subject(:finder) { described_class.new(user) } - - it 'returns project- and personal snippets' do - expect(finder.execute).to contain_exactly(project_snippet, personal_snippet) + expect(snippets).to contain_exactly(private_project_snippet, internal_project_snippet, public_project_snippet) + end end context 'when the user cannot read cross project' do @@ -191,7 +158,7 @@ describe SnippetsFinder do end it 'returns only personal snippets when the user cannot read cross project' do - expect(finder.execute).to contain_exactly(personal_snippet) + expect(described_class.new(user).execute).to contain_exactly(private_personal_snippet, internal_personal_snippet, public_personal_snippet) end end end |