From 0750638f805eee7d386df5cfff23413610d4e528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 20 Mar 2019 10:33:24 +0100 Subject: [PATCH] [CE] Reduce differences with EE in users_finder_spec.rb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémy Coutable --- spec/finders/merge_requests_finder_spec.rb | 2 +- spec/finders/users_finder_spec.rb | 31 +++++++------- .../finders/users_finder_shared_contexts.rb | 8 ++++ .../snippet_visibility_shared_examples.rb | 42 ++++++------------- 4 files changed, 36 insertions(+), 47 deletions(-) create mode 100644 spec/support/shared_contexts/finders/users_finder_shared_contexts.rb diff --git a/spec/finders/merge_requests_finder_spec.rb b/spec/finders/merge_requests_finder_spec.rb index 5ddf5c14c83..56136eb84bc 100644 --- a/spec/finders/merge_requests_finder_spec.rb +++ b/spec/finders/merge_requests_finder_spec.rb @@ -34,7 +34,7 @@ describe MergeRequestsFinder do it 'includes all merge requests when user has access exceluding merge requests from projects the user does not have access to' do private_project = allow_gitaly_n_plus_1 { create(:project, :private, group: group) } private_project.add_guest(user) - private_mr = create(:merge_request, :simple, author: user, source_project: private_project, target_project: private_project) + create(:merge_request, :simple, author: user, source_project: private_project, target_project: private_project) params = { group_id: group.id } merge_requests = described_class.new(user, params).execute diff --git a/spec/finders/users_finder_spec.rb b/spec/finders/users_finder_spec.rb index fecf97dc641..d71d3c99272 100644 --- a/spec/finders/users_finder_spec.rb +++ b/spec/finders/users_finder_spec.rb @@ -2,10 +2,7 @@ require 'spec_helper' describe UsersFinder do describe '#execute' do - let!(:user1) { create(:user, username: 'johndoe') } - let!(:user2) { create(:user, :blocked, username: 'notsorandom') } - let!(:external_user) { create(:user, :external) } - let!(:omniauth_user) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } + include_context 'UsersFinder#execute filter by project context' context 'with a normal user' do let(:user) { create(:user) } @@ -13,43 +10,43 @@ describe UsersFinder do it 'returns all users' do users = described_class.new(user).execute - expect(users).to contain_exactly(user, user1, user2, omniauth_user) + expect(users).to contain_exactly(user, normal_user, blocked_user, omniauth_user) end it 'filters by username' do users = described_class.new(user, username: 'johndoe').execute - expect(users).to contain_exactly(user1) + expect(users).to contain_exactly(normal_user) end it 'filters by username (case insensitive)' do users = described_class.new(user, username: 'joHNdoE').execute - expect(users).to contain_exactly(user1) + expect(users).to contain_exactly(normal_user) end it 'filters by search' do users = described_class.new(user, search: 'orando').execute - expect(users).to contain_exactly(user2) + expect(users).to contain_exactly(blocked_user) end it 'filters by blocked users' do users = described_class.new(user, blocked: true).execute - expect(users).to contain_exactly(user2) + expect(users).to contain_exactly(blocked_user) end it 'filters by active users' do users = described_class.new(user, active: true).execute - expect(users).to contain_exactly(user, user1, omniauth_user) + expect(users).to contain_exactly(user, normal_user, omniauth_user) end it 'returns no external users' do users = described_class.new(user, external: true).execute - expect(users).to contain_exactly(user, user1, user2, omniauth_user) + expect(users).to contain_exactly(user, normal_user, blocked_user, omniauth_user) end it 'filters by created_at' do @@ -69,7 +66,7 @@ describe UsersFinder do custom_attributes: { foo: 'bar' } ).execute - expect(users).to contain_exactly(user, user1, user2, omniauth_user) + expect(users).to contain_exactly(user, normal_user, blocked_user, omniauth_user) end end @@ -85,20 +82,20 @@ describe UsersFinder do it 'returns all users' do users = described_class.new(admin).execute - expect(users).to contain_exactly(admin, user1, user2, external_user, omniauth_user) + expect(users).to contain_exactly(admin, normal_user, blocked_user, external_user, omniauth_user) end it 'filters by custom attributes' do - create :user_custom_attribute, user: user1, key: 'foo', value: 'foo' - create :user_custom_attribute, user: user1, key: 'bar', value: 'bar' - create :user_custom_attribute, user: user2, key: 'foo', value: 'foo' + create :user_custom_attribute, user: normal_user, key: 'foo', value: 'foo' + create :user_custom_attribute, user: normal_user, key: 'bar', value: 'bar' + create :user_custom_attribute, user: blocked_user, key: 'foo', value: 'foo' users = described_class.new( admin, custom_attributes: { foo: 'foo', bar: 'bar' } ).execute - expect(users).to contain_exactly(user1) + expect(users).to contain_exactly(normal_user) end end end diff --git a/spec/support/shared_contexts/finders/users_finder_shared_contexts.rb b/spec/support/shared_contexts/finders/users_finder_shared_contexts.rb new file mode 100644 index 00000000000..9e1f89ee0ed --- /dev/null +++ b/spec/support/shared_contexts/finders/users_finder_shared_contexts.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +RSpec.shared_context 'UsersFinder#execute filter by project context' do + set(:normal_user) { create(:user, username: 'johndoe') } + set(:blocked_user) { create(:user, :blocked, username: 'notsorandom') } + set(:external_user) { create(:user, :external) } + set(:omniauth_user) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } +end diff --git a/spec/support/shared_examples/snippet_visibility_shared_examples.rb b/spec/support/shared_examples/snippet_visibility_shared_examples.rb index f622876d7a5..4f662db2120 100644 --- a/spec/support/shared_examples/snippet_visibility_shared_examples.rb +++ b/spec/support/shared_examples/snippet_visibility_shared_examples.rb @@ -10,14 +10,6 @@ RSpec.shared_examples 'snippet visibility' do set(:member) { create(:user) } set(:external) { create(:user, :external) } - let!(:snippet_type_visibilities) do - { - public: Snippet::PUBLIC, - internal: Snippet::INTERNAL, - private: Snippet::PRIVATE - } - end - context "For project snippets" do let!(:users) do { @@ -29,14 +21,6 @@ RSpec.shared_examples 'snippet visibility' do } end - let(:project_feature_visibilities) do - { - enabled: ProjectFeature::ENABLED, - private: ProjectFeature::PRIVATE, - disabled: ProjectFeature::DISABLED - } - end - where(:project_type, :feature_visibility, :user_type, :snippet_type, :outcome) do [ # Public projects @@ -277,26 +261,26 @@ RSpec.shared_examples 'snippet visibility' do where(:snippet_visibility, :user_type, :outcome) do [ - [:public, :unauthenticated, true], - [:public, :external, true], - [:public, :non_member, true], - [:public, :author, true], + [Snippet::PUBLIC, :unauthenticated, true], + [Snippet::PUBLIC, :external, true], + [Snippet::PUBLIC, :non_member, true], + [Snippet::PUBLIC, :author, true], - [:internal, :unauthenticated, false], - [:internal, :external, false], - [:internal, :non_member, true], - [:internal, :author, true], + [Snippet::INTERNAL, :unauthenticated, false], + [Snippet::INTERNAL, :external, false], + [Snippet::INTERNAL, :non_member, true], + [Snippet::INTERNAL, :author, true], - [:private, :unauthenticated, false], - [:private, :external, false], - [:private, :non_member, false], - [:private, :author, true] + [Snippet::PRIVATE, :unauthenticated, false], + [Snippet::PRIVATE, :external, false], + [Snippet::PRIVATE, :non_member, false], + [Snippet::PRIVATE, :author, true] ] end with_them do let!(:user) { users[user_type] } - let!(:snippet) { create(:personal_snippet, visibility_level: snippet_type_visibilities[snippet_visibility], author: author) } + let!(:snippet) { create(:personal_snippet, visibility_level: snippet_visibility, author: author) } context "For personal and #{params[:snippet_visibility]} snippets with #{params[:user_type]} user" do it 'should agree with read_personal_snippet policy' do