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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-12-21 12:17:08 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-12-21 12:17:08 +0300
commit4ecd816dcbbf2c3a83087ea1add13f087530e9eb (patch)
treefaf1d225bf16fa64dea1244217b3f8b6e7dac46d /spec/models
parenta293ae1ab5e4253f6003123c79c00bf7b953a7e5 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/group_spec.rb40
-rw-r--r--spec/models/project_spec.rb2
-rw-r--r--spec/models/project_team_spec.rb46
3 files changed, 80 insertions, 8 deletions
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 1fafa64a535..fdbcd84d3df 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -1642,6 +1642,46 @@ RSpec.describe Group, feature_category: :groups_and_projects do
it { expect(subject.parent).to be_kind_of(described_class) }
end
+ describe '#has_user?' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:subgroup) { create(:group, parent: group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:user2) { create(:user) }
+
+ subject { group.has_user?(user) }
+
+ context 'when the user is a member' do
+ before_all do
+ group.add_developer(user)
+ end
+
+ it { is_expected.to be_truthy }
+ it { expect(group.has_user?(user2)).to be_falsey }
+
+ it 'returns false for subgroup' do
+ expect(subgroup.has_user?(user)).to be_falsey
+ end
+ end
+
+ context 'when the user is a member with minimal access' do
+ before_all do
+ group.add_member(user, GroupMember::MINIMAL_ACCESS)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when the user has requested membership' do
+ before_all do
+ create(:group_member, :developer, :access_request, user: user, source: group)
+ end
+
+ it 'returns false' do
+ expect(subject).to be_falsey
+ end
+ end
+ end
+
describe '#member?' do
let_it_be(:group) { create(:group) }
let_it_be(:user) { create(:user) }
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index c256c4f10f8..db1754ef991 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -1121,6 +1121,8 @@ RSpec.describe Project, factory_default: :keep, feature_category: :groups_and_pr
end
it { is_expected.to delegate_method(:members).to(:team).with_prefix(true) }
+ it { is_expected.to delegate_method(:has_user?).to(:team) }
+ it { is_expected.to delegate_method(:member?).to(:team) }
it { is_expected.to delegate_method(:name).to(:owner).with_prefix(true).allow_nil }
it { is_expected.to delegate_method(:root_ancestor).to(:namespace).allow_nil }
it { is_expected.to delegate_method(:certificate_based_clusters_enabled?).to(:namespace).allow_nil }
diff --git a/spec/models/project_team_spec.rb b/spec/models/project_team_spec.rb
index 10a2e967b14..47ab48a6497 100644
--- a/spec/models/project_team_spec.rb
+++ b/spec/models/project_team_spec.rb
@@ -341,22 +341,52 @@ RSpec.describe ProjectTeam, feature_category: :groups_and_projects do
end
end
+ describe '#has_user?' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, namespace: group) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:user2) { create(:user) }
+
+ subject { project.team.has_user?(user) }
+
+ context 'when the user is a member' do
+ before_all do
+ project.add_developer(user)
+ end
+
+ it { is_expected.to be_truthy }
+ it { expect(group.has_user?(user2)).to be_falsey }
+ end
+
+ context 'when user is a member with minimal access' do
+ before_all do
+ project.add_member(user, GroupMember::MINIMAL_ACCESS)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when user is not a direct member of the project' do
+ before_all do
+ create(:group_member, :developer, user: user, source: group)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
+
describe "#human_max_access" do
- it 'returns Maintainer role' do
- user = create(:user)
- group = create(:group)
- project = create(:project, namespace: group)
+ let_it_be(:user) { create(:user) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, namespace: group) }
+ it 'returns Maintainer role' do
group.add_maintainer(user)
expect(project.team.human_max_access(user.id)).to eq 'Maintainer'
end
it 'returns Owner role' do
- user = create(:user)
- group = create(:group)
- project = create(:project, namespace: group)
-
group.add_owner(user)
expect(project.team.human_max_access(user.id)).to eq 'Owner'