Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/presenters/member_presenter_spec.rb')
-rw-r--r--spec/presenters/member_presenter_spec.rb35
1 files changed, 33 insertions, 2 deletions
diff --git a/spec/presenters/member_presenter_spec.rb b/spec/presenters/member_presenter_spec.rb
index 7850399b711..7223c98d5f7 100644
--- a/spec/presenters/member_presenter_spec.rb
+++ b/spec/presenters/member_presenter_spec.rb
@@ -2,13 +2,44 @@
require 'spec_helper'
+# Creation is necessary due to relations and the need to check in the presenter
+#
+# rubocop:disable RSpec/FactoryBot/AvoidCreate
RSpec.describe MemberPresenter, feature_category: :groups_and_projects do
- let_it_be(:member) { build(:group_member) }
- let(:presenter) { described_class.new(member) }
+ let_it_be(:root_group) { create(:group) }
+ let_it_be(:subgroup) { create(:group, parent: root_group) }
+ let_it_be(:user) { create(:user) }
+
+ let_it_be(:root_member) { create(:group_member, :reporter, group: root_group, user: user) }
+ let_it_be(:subgroup_member) { create(:group_member, :reporter, group: subgroup, user: user) }
+
+ let(:presenter) { described_class.new(root_member) }
describe '#last_owner?' do
it 'raises `NotImplementedError`' do
expect { presenter.last_owner? }.to raise_error(NotImplementedError)
end
end
+
+ describe '#valid_level_roles' do
+ it 'does not return levels lower than user highest membership in the hierarchy' do
+ expect(described_class.new(subgroup_member).valid_level_roles).to eq(
+ 'Reporter' => Gitlab::Access::REPORTER,
+ 'Developer' => Gitlab::Access::DEVELOPER,
+ 'Maintainer' => Gitlab::Access::MAINTAINER,
+ 'Owner' => Gitlab::Access::OWNER
+ )
+ end
+
+ it 'returns all roles for the root group' do
+ expect(described_class.new(root_member).valid_level_roles).to eq(
+ 'Guest' => Gitlab::Access::GUEST,
+ 'Reporter' => Gitlab::Access::REPORTER,
+ 'Developer' => Gitlab::Access::DEVELOPER,
+ 'Maintainer' => Gitlab::Access::MAINTAINER,
+ 'Owner' => Gitlab::Access::OWNER
+ )
+ end
+ end
end
+# rubocop:enable RSpec/FactoryBot/AvoidCreate