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/tree_spec.rb')
-rw-r--r--spec/models/tree_spec.rb79
1 files changed, 37 insertions, 42 deletions
diff --git a/spec/models/tree_spec.rb b/spec/models/tree_spec.rb
index 20d786f311f..302cd9e9f10 100644
--- a/spec/models/tree_spec.rb
+++ b/spec/models/tree_spec.rb
@@ -2,69 +2,58 @@
require 'spec_helper'
-RSpec.describe Tree do
- let_it_be(:repository) { create(:project, :repository).repository }
-
- let(:sha) { repository.root_ref }
-
+RSpec.describe Tree, feature_category: :source_code_management do
subject(:tree) { described_class.new(repository, '54fcc214') }
- describe '#readme' do
- before do
- stub_const('FakeBlob', Class.new)
- FakeBlob.class_eval do
- attr_reader :name
+ let_it_be(:repository) { create(:project, :repository).repository }
- def initialize(name)
- @name = name
- end
+ describe '#readme' do
+ subject { tree.readme }
- def readme?
- name =~ /^readme/i
- end
- end
+ before do
+ allow(tree).to receive(:blobs).and_return(files)
end
- it 'returns nil when repository does not contains a README file' do
- files = [FakeBlob.new('file'), FakeBlob.new('license'), FakeBlob.new('copying')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when repository does not contains a README file' do
+ let(:files) { [fake_blob('file'), fake_blob('license'), fake_blob('copying')] }
- expect(subject.readme).to eq nil
+ it { is_expected.to be_nil }
end
- it 'returns nil when repository does not contains a previewable README file' do
- files = [FakeBlob.new('file'), FakeBlob.new('README.pages'), FakeBlob.new('README.png')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when repository does not contains a previewable README file' do
+ let(:files) { [fake_blob('file'), fake_blob('README.pages'), fake_blob('README.png')] }
- expect(subject.readme).to eq nil
+ it { is_expected.to be_nil }
end
- it 'returns README when repository contains a previewable README file' do
- files = [FakeBlob.new('README.png'), FakeBlob.new('README'), FakeBlob.new('file')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when repository contains a previewable README file' do
+ let(:files) { [fake_blob('README.png'), fake_blob('README'), fake_blob('file')] }
- expect(subject.readme.name).to eq 'README'
+ it { is_expected.to have_attributes(name: 'README') }
end
- it 'returns first previewable README when repository contains more than one' do
- files = [FakeBlob.new('file'), FakeBlob.new('README.md'), FakeBlob.new('README.asciidoc')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when repository contains more than one README file' do
+ let(:files) { [fake_blob('file'), fake_blob('README.md'), fake_blob('README.asciidoc')] }
- expect(subject.readme.name).to eq 'README.md'
- end
+ it 'returns first previewable README' do
+ is_expected.to have_attributes(name: 'README.md')
+ end
- it 'returns first plain text README when repository contains more than one' do
- files = [FakeBlob.new('file'), FakeBlob.new('README'), FakeBlob.new('README.txt')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when only plain-text READMEs' do
+ let(:files) { [fake_blob('file'), fake_blob('README'), fake_blob('README.txt')] }
- expect(subject.readme.name).to eq 'README'
+ it 'returns first plain text README' do
+ is_expected.to have_attributes(name: 'README')
+ end
+ end
end
- it 'prioritizes previewable README file over one in plain text' do
- files = [FakeBlob.new('file'), FakeBlob.new('README'), FakeBlob.new('README.md')]
- expect(subject).to receive(:blobs).and_return(files)
+ context 'when the repository has a previewable and plain text READMEs' do
+ let(:files) { [fake_blob('file'), fake_blob('README'), fake_blob('README.md')] }
- expect(subject.readme.name).to eq 'README.md'
+ it 'prefers previewable README file' do
+ is_expected.to have_attributes(name: 'README.md')
+ end
end
end
@@ -73,4 +62,10 @@ RSpec.describe Tree do
it { is_expected.to be_an_instance_of(Gitaly::PaginationCursor) }
end
+
+ private
+
+ def fake_blob(name)
+ instance_double(Gitlab::Git::Blob, name: name)
+ end
end