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/lib/gitlab/gl_repository/identifier_spec.rb')
-rw-r--r--spec/lib/gitlab/gl_repository/identifier_spec.rb63
1 files changed, 43 insertions, 20 deletions
diff --git a/spec/lib/gitlab/gl_repository/identifier_spec.rb b/spec/lib/gitlab/gl_repository/identifier_spec.rb
index c36f296702e..e95aaaa6690 100644
--- a/spec/lib/gitlab/gl_repository/identifier_spec.rb
+++ b/spec/lib/gitlab/gl_repository/identifier_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe Gitlab::GlRepository::Identifier do
+RSpec.describe Gitlab::GlRepository::Identifier do
let_it_be(:project) { create(:project) }
let_it_be(:personal_snippet) { create(:personal_snippet, author: project.owner) }
let_it_be(:project_snippet) { create(:project_snippet, project: project, author: project.owner) }
@@ -14,6 +14,21 @@ describe Gitlab::GlRepository::Identifier do
let(:expected_container) { project }
let(:expected_type) { Gitlab::GlRepository::PROJECT }
end
+
+ pending 'https://gitlab.com/gitlab-org/gitlab/-/issues/219192' do
+ it_behaves_like 'parsing gl_repository identifier' do
+ let(:record_id) { project.id }
+ let(:identifier) { "project-#{record_id}-code" }
+ let(:expected_container) { project }
+ let(:expected_type) { Gitlab::GlRepository::PROJECT }
+ end
+ end
+
+ it_behaves_like 'parsing gl_repository identifier' do
+ let(:identifier) { "project-1000000" }
+ let(:expected_container) { nil }
+ let(:expected_type) { Gitlab::GlRepository::PROJECT }
+ end
end
describe 'wiki' do
@@ -23,6 +38,13 @@ describe Gitlab::GlRepository::Identifier do
let(:expected_container) { project }
let(:expected_type) { Gitlab::GlRepository::WIKI }
end
+
+ it_behaves_like 'parsing gl_repository identifier' do
+ let(:record_id) { project.id }
+ let(:identifier) { "project-#{record_id}-wiki" }
+ let(:expected_container) { project }
+ let(:expected_type) { Gitlab::GlRepository::WIKI }
+ end
end
describe 'snippet' do
@@ -54,29 +76,30 @@ describe Gitlab::GlRepository::Identifier do
end
end
- describe 'incorrect format' do
- def expect_error_raised_for(identifier)
- expect { described_class.new(identifier) }.to raise_error(ArgumentError)
- end
-
- it 'raises error for incorrect id' do
- expect_error_raised_for('wiki-noid')
+ context 'when the format is incorrect' do
+ where(:identifier) do
+ [
+ 'wiki-noid',
+ 'foo-2',
+ 'project-0',
+ '2-project',
+ 'snippet-2-wiki',
+ 'project-wibble-wiki',
+ 'wiki-1-project',
+ 'snippet',
+ 'project-1-wiki-bar'
+ ]
end
- it 'raises error for incorrect type' do
- expect_error_raised_for('foo-2')
- end
-
- it 'raises error for incorrect three-segment container' do
- expect_error_raised_for('snippet-2-wiki')
- end
-
- it 'raises error for one segment' do
- expect_error_raised_for('snippet')
+ with_them do
+ it 'raises InvalidIdentifier' do
+ expect { described_class.parse(identifier) }.to raise_error(described_class::InvalidIdentifier)
+ end
end
- it 'raises error for more than three segments' do
- expect_error_raised_for('project-1-wiki-bar')
+ it 'raises InvalidIdentifier on project-1-project' do
+ pending 'https://gitlab.com/gitlab-org/gitlab/-/issues/219192'
+ expect { described_class.parse('project-1-project') }.to raise_error(described_class::InvalidIdentifier)
end
end
end