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/blob_spec.rb')
-rw-r--r--spec/models/blob_spec.rb90
1 files changed, 74 insertions, 16 deletions
diff --git a/spec/models/blob_spec.rb b/spec/models/blob_spec.rb
index 598c91a64fb..7d40843ca6c 100644
--- a/spec/models/blob_spec.rb
+++ b/spec/models/blob_spec.rb
@@ -68,28 +68,86 @@ RSpec.describe Blob do
end
end
- context 'with project' do
- let(:container) { create(:project, :repository) }
- let(:same_container) { Project.find(container.id) }
- let(:other_container) { create(:project, :repository) }
+ context 'when increase_diff_file_performance is turned off' do
+ before do
+ stub_feature_flags(increase_diff_file_performance: false)
+ end
- it_behaves_like '.lazy checks'
- end
+ context 'with project' do
+ let_it_be(:container) { create(:project, :repository) }
+ let_it_be(:same_container) { Project.find(container.id) }
+ let_it_be(:other_container) { create(:project, :repository) }
- context 'with personal snippet' do
- let(:container) { create(:personal_snippet, :repository) }
- let(:same_container) { PersonalSnippet.find(container.id) }
- let(:other_container) { create(:personal_snippet, :repository) }
+ it_behaves_like '.lazy checks'
+ end
+
+ context 'with personal snippet' do
+ let_it_be(:container) { create(:personal_snippet, :repository) }
+ let_it_be(:same_container) { PersonalSnippet.find(container.id) }
+ let_it_be(:other_container) { create(:personal_snippet, :repository) }
- it_behaves_like '.lazy checks'
+ it_behaves_like '.lazy checks'
+ end
+
+ context 'with project snippet' do
+ let_it_be(:container) { create(:project_snippet, :repository) }
+ let_it_be(:same_container) { ProjectSnippet.find(container.id) }
+ let_it_be(:other_container) { create(:project_snippet, :repository) }
+
+ it_behaves_like '.lazy checks'
+ end
end
- context 'with project snippet' do
- let(:container) { create(:project_snippet, :repository) }
- let(:same_container) { ProjectSnippet.find(container.id) }
- let(:other_container) { create(:project_snippet, :repository) }
+ context 'when increase_diff_file_performance is turned on' do
+ context 'with project' do
+ let_it_be(:container) { create(:project, :repository) }
+ let_it_be(:same_container) { Project.find(container.id) }
+ let_it_be(:other_container) { create(:project, :repository) }
+
+ it_behaves_like '.lazy checks'
+
+ context 'when the blob size limit is different' do
+ it 'fetches all blobs for the same repository and same blob size limit when one is accessed' do
+ expect(container.repository).to receive(:blobs_at)
+ .with([[commit_id, 'CHANGELOG']], blob_size_limit: 10)
+ .once.and_call_original
- it_behaves_like '.lazy checks'
+ expect(same_container.repository).to receive(:blobs_at)
+ .with([[commit_id, 'CONTRIBUTING.md'], [commit_id, 'README.md']], blob_size_limit: 20)
+ .once.and_call_original
+
+ expect(other_container.repository).not_to receive(:blobs_at)
+
+ changelog = described_class.lazy(container.repository, commit_id, 'CHANGELOG', blob_size_limit: 10)
+ contributing = described_class.lazy(same_container.repository, commit_id, 'CONTRIBUTING.md',
+ blob_size_limit: 20)
+ described_class.lazy(same_container.repository, commit_id, 'README.md',
+ blob_size_limit: 20)
+
+ described_class.lazy(other_container.repository, commit_id, 'CHANGELOG', blob_size_limit: 30)
+
+ # Access property so the values are loaded
+ changelog.id
+ contributing.id
+ end
+ end
+ end
+
+ context 'with personal snippet' do
+ let_it_be(:container) { create(:personal_snippet, :repository) }
+ let_it_be(:same_container) { PersonalSnippet.find(container.id) }
+ let_it_be(:other_container) { create(:personal_snippet, :repository) }
+
+ it_behaves_like '.lazy checks'
+ end
+
+ context 'with project snippet' do
+ let_it_be(:container) { create(:project_snippet, :repository) }
+ let_it_be(:same_container) { ProjectSnippet.find(container.id) }
+ let_it_be(:other_container) { create(:project_snippet, :repository) }
+
+ it_behaves_like '.lazy checks'
+ end
end
end