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.rb108
1 files changed, 52 insertions, 56 deletions
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 75887e49dc9..8cccc9ad83e 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -38,6 +38,7 @@ RSpec.describe Project, factory_default: :keep do
it { is_expected.to have_many(:hooks) }
it { is_expected.to have_many(:protected_branches) }
it { is_expected.to have_many(:exported_protected_branches) }
+ it { is_expected.to have_one(:wiki_repository).class_name('Projects::WikiRepository').inverse_of(:project) }
it { is_expected.to have_one(:slack_integration) }
it { is_expected.to have_one(:microsoft_teams_integration) }
it { is_expected.to have_one(:mattermost_integration) }
@@ -597,7 +598,7 @@ RSpec.describe Project, factory_default: :keep do
end
it 'contains errors related to the project being deleted' do
- expect(new_project.errors.full_messages.first).to eq(_('The project is still being deleted. Please try again later.'))
+ expect(new_project.errors.full_messages).to include(_('The project is still being deleted. Please try again later.'))
end
end
@@ -862,6 +863,7 @@ RSpec.describe Project, factory_default: :keep do
it { is_expected.to delegate_method(:environments_access_level).to(:project_feature) }
it { is_expected.to delegate_method(:feature_flags_access_level).to(:project_feature) }
it { is_expected.to delegate_method(:releases_access_level).to(:project_feature) }
+ it { is_expected.to delegate_method(:infrastructure_access_level).to(:project_feature) }
it { is_expected.to delegate_method(:maven_package_requests_forwarding).to(:namespace) }
it { is_expected.to delegate_method(:pypi_package_requests_forwarding).to(:namespace) }
it { is_expected.to delegate_method(:npm_package_requests_forwarding).to(:namespace) }
@@ -1352,7 +1354,7 @@ RSpec.describe Project, factory_default: :keep do
end
end
- describe '#open_issues_count', :aggregate_failures do
+ describe '#open_issues_count' do
let(:project) { build(:project) }
it 'provides the issue count' do
@@ -1657,6 +1659,33 @@ RSpec.describe Project, factory_default: :keep do
expect(project.reload.star_count).to eq(0)
end
+ it 'does not count stars from blocked users' do
+ user1 = create(:user)
+ user2 = create(:user)
+ project = create(:project, :public)
+
+ expect(project.star_count).to eq(0)
+
+ user1.toggle_star(project)
+ expect(project.reload.star_count).to eq(1)
+
+ user2.toggle_star(project)
+ project.reload
+ expect(project.reload.star_count).to eq(2)
+
+ user1.block
+ project.reload
+ expect(project.reload.star_count).to eq(1)
+
+ user2.block
+ project.reload
+ expect(project.reload.star_count).to eq(0)
+
+ user1.activate
+ project.reload
+ expect(project.reload.star_count).to eq(1)
+ end
+
it 'counts stars on the right project' do
user = create(:user)
project1 = create(:project, :public)
@@ -2981,44 +3010,6 @@ RSpec.describe Project, factory_default: :keep do
end
end
- describe '#uses_external_project_ci_config?' do
- subject(:uses_external_project_ci_config) { project.uses_external_project_ci_config? }
-
- let(:project) { build(:project) }
-
- context 'when ci_config_path is configured with external project' do
- before do
- project.ci_config_path = '.gitlab-ci.yml@hello/world'
- end
-
- it { is_expected.to eq(true) }
- end
-
- context 'when ci_config_path is nil' do
- before do
- project.ci_config_path = nil
- end
-
- it { is_expected.to eq(false) }
- end
-
- context 'when ci_config_path is configured with a file in the project' do
- before do
- project.ci_config_path = 'hello/world/gitlab-ci.yml'
- end
-
- it { is_expected.to eq(false) }
- end
-
- context 'when ci_config_path is configured with remote file' do
- before do
- project.ci_config_path = 'https://example.org/file.yml'
- end
-
- it { is_expected.to eq(false) }
- end
- end
-
describe '#latest_successful_build_for_ref' do
let_it_be(:project) { create(:project, :repository) }
let_it_be(:pipeline) { create_pipeline(project) }
@@ -4507,7 +4498,7 @@ RSpec.describe Project, factory_default: :keep do
project_2 = create(:project, :public, :merge_requests_disabled)
project_3 = create(:project, :public, :issues_disabled)
project_4 = create(:project, :public)
- project_4.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE, merge_requests_access_level: ProjectFeature::PRIVATE )
+ project_4.project_feature.update!(issues_access_level: ProjectFeature::PRIVATE, merge_requests_access_level: ProjectFeature::PRIVATE)
project_ids = described_class.ids_with_issuables_available_for(user).pluck(:id)
@@ -5798,7 +5789,7 @@ RSpec.describe Project, factory_default: :keep do
end
describe '#has_active_integrations?' do
- let_it_be(:project) { create(:project) }
+ let_it_be_with_refind(:project) { create(:project) }
it { expect(project.has_active_integrations?).to eq(false) }
@@ -5808,6 +5799,20 @@ RSpec.describe Project, factory_default: :keep do
expect(project.has_active_integrations?(:merge_request_hooks)).to eq(false)
expect(project.has_active_integrations?).to eq(true)
end
+
+ it 'caches matching integrations' do
+ create(:custom_issue_tracker_integration, push_events: true, merge_requests_events: false, project: project)
+
+ expect(project.has_active_integrations?(:merge_request_hooks)).to eq(false)
+ expect(project.has_active_integrations?).to eq(true)
+
+ count = ActiveRecord::QueryRecorder.new do
+ expect(project.has_active_integrations?(:merge_request_hooks)).to eq(false)
+ expect(project.has_active_integrations?).to eq(true)
+ end.count
+
+ expect(count).to eq(0)
+ end
end
describe '#badges' do
@@ -7074,7 +7079,7 @@ RSpec.describe Project, factory_default: :keep do
subject { project.self_monitoring? }
- context 'when the project is instance self monitoring' do
+ context 'when the project is instance self-monitoring' do
before do
stub_application_setting(self_monitoring_project_id: project.id)
end
@@ -7082,7 +7087,7 @@ RSpec.describe Project, factory_default: :keep do
it { is_expected.to be true }
end
- context 'when the project is not self monitoring' do
+ context 'when the project is not self-monitoring' do
it { is_expected.to be false }
end
end
@@ -7124,7 +7129,7 @@ RSpec.describe Project, factory_default: :keep do
describe '#export_in_progress?' do
let(:project) { build(:project) }
- let!(:project_export_job ) { create(:project_export_job, project: project) }
+ let!(:project_export_job) { create(:project_export_job, project: project) }
context 'when project export is enqueued' do
it { expect(project.export_in_progress?).to be false }
@@ -7149,7 +7154,7 @@ RSpec.describe Project, factory_default: :keep do
describe '#export_status' do
let(:project) { build(:project) }
- let!(:project_export_job ) { create(:project_export_job, project: project) }
+ let!(:project_export_job) { create(:project_export_job, project: project) }
context 'when project export is enqueued' do
it { expect(project.export_status).to eq :queued }
@@ -7173,7 +7178,7 @@ RSpec.describe Project, factory_default: :keep do
end
context 'when project export is being regenerated' do
- let!(:new_project_export_job ) { create(:project_export_job, project: project) }
+ let!(:new_project_export_job) { create(:project_export_job, project: project) }
before do
finish_job(project_export_job)
@@ -7475,15 +7480,6 @@ RSpec.describe Project, factory_default: :keep do
end
end
- describe '#ci_config_external_project' do
- subject(:ci_config_external_project) { project.ci_config_external_project }
-
- let(:other_project) { create(:project) }
- let(:project) { build(:project, ci_config_path: ".gitlab-ci.yml@#{other_project.full_path}") }
-
- it { is_expected.to eq(other_project) }
- end
-
describe '#enabled_group_deploy_keys' do
let_it_be(:project) { create(:project) }