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/models/project_spec.rb')
-rw-r--r--spec/models/project_spec.rb60
1 files changed, 48 insertions, 12 deletions
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 2d84c1b843e..2171ee752fd 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -27,6 +27,7 @@ RSpec.describe Project, factory_default: :keep do
it { is_expected.to have_many(:merge_requests) }
it { is_expected.to have_many(:merge_request_metrics).class_name('MergeRequest::Metrics') }
it { is_expected.to have_many(:issues) }
+ it { is_expected.to have_many(:incident_management_issuable_escalation_statuses).through(:issues).inverse_of(:project).class_name('IncidentManagement::IssuableEscalationStatus') }
it { is_expected.to have_many(:milestones) }
it { is_expected.to have_many(:iterations) }
it { is_expected.to have_many(:project_members).dependent(:delete_all) }
@@ -81,7 +82,6 @@ RSpec.describe Project, factory_default: :keep do
it { is_expected.to have_one(:last_event).class_name('Event') }
it { is_expected.to have_one(:forked_from_project).through(:fork_network_member) }
it { is_expected.to have_one(:auto_devops).class_name('ProjectAutoDevops') }
- it { is_expected.to have_one(:tracing_setting).class_name('ProjectTracingSetting') }
it { is_expected.to have_one(:error_tracking_setting).class_name('ErrorTracking::ProjectErrorTrackingSetting') }
it { is_expected.to have_one(:project_setting) }
it { is_expected.to have_one(:alerting_setting).class_name('Alerting::ProjectAlertingSetting') }
@@ -821,31 +821,38 @@ RSpec.describe Project, factory_default: :keep do
end
describe 'delegation' do
- [:add_guest, :add_reporter, :add_developer, :add_maintainer, :add_user, :add_users].each do |method|
+ [:add_guest, :add_reporter, :add_developer, :add_maintainer, :add_member, :add_members].each do |method|
it { is_expected.to delegate_method(method).to(:team) }
end
it { is_expected.to delegate_method(:members).to(:team).with_prefix(true) }
- it { is_expected.to delegate_method(:name).to(:owner).with_prefix(true).with_arguments(allow_nil: true) }
- it { is_expected.to delegate_method(:root_ancestor).to(:namespace).with_arguments(allow_nil: true) }
- it { is_expected.to delegate_method(:certificate_based_clusters_enabled?).to(:namespace).with_arguments(allow_nil: true) }
- it { is_expected.to delegate_method(:last_pipeline).to(:commit).with_arguments(allow_nil: true) }
+ 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 }
+ it { is_expected.to delegate_method(:last_pipeline).to(:commit).allow_nil }
it { is_expected.to delegate_method(:container_registry_enabled?).to(:project_feature) }
it { is_expected.to delegate_method(:container_registry_access_level).to(:project_feature) }
- describe 'project settings' do
+ describe 'read project settings' do
%i(
show_default_award_emojis
- show_default_award_emojis=
show_default_award_emojis?
warn_about_potentially_unwanted_characters
- warn_about_potentially_unwanted_characters=
warn_about_potentially_unwanted_characters?
enforce_auth_checks_on_uploads
- enforce_auth_checks_on_uploads=
enforce_auth_checks_on_uploads?
).each do |method|
- it { is_expected.to delegate_method(method).to(:project_setting).with_arguments(allow_nil: true) }
+ it { is_expected.to delegate_method(method).to(:project_setting).allow_nil }
+ end
+ end
+
+ describe 'write project settings' do
+ %i(
+ show_default_award_emojis=
+ warn_about_potentially_unwanted_characters=
+ enforce_auth_checks_on_uploads=
+ ).each do |method|
+ it { is_expected.to delegate_method(method).to(:project_setting).with_arguments(:args).allow_nil }
end
end
@@ -1855,7 +1862,7 @@ RSpec.describe Project, factory_default: :keep do
describe 'when a user has access to a project' do
before do
- project.add_user(user, Gitlab::Access::MAINTAINER)
+ project.add_member(user, Gitlab::Access::MAINTAINER)
end
it { is_expected.to eq([project]) }
@@ -3588,6 +3595,14 @@ RSpec.describe Project, factory_default: :keep do
end
end
+ describe '#emails_enabled?' do
+ let(:project) { build(:project, emails_disabled: false) }
+
+ it "is the opposite of emails_disabled" do
+ expect(project.emails_enabled?).to be_truthy
+ end
+ end
+
describe '#lfs_enabled?' do
let(:namespace) { create(:namespace) }
let(:project) { build(:project, namespace: namespace) }
@@ -8383,6 +8398,27 @@ RSpec.describe Project, factory_default: :keep do
end
end
+ describe '#group_group_links' do
+ context 'with group project' do
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, group: group) }
+
+ it 'returns group links of group' do
+ expect(group).to receive_message_chain(:shared_with_group_links, :of_ancestors_and_self)
+
+ project.group_group_links
+ end
+ end
+
+ context 'with personal project' do
+ let_it_be(:project) { create(:project) }
+
+ it 'returns none' do
+ expect(project.group_group_links).to eq(GroupGroupLink.none)
+ end
+ end
+ end
+
describe '#security_training_available?' do
subject { build(:project) }