summaryrefslogtreecommitdiff
path: root/spec/models/blob_viewer/go_mod_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/blob_viewer/go_mod_spec.rb')
-rw-r--r--spec/models/blob_viewer/go_mod_spec.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/spec/models/blob_viewer/go_mod_spec.rb b/spec/models/blob_viewer/go_mod_spec.rb
new file mode 100644
index 00000000000..ba6038533ea
--- /dev/null
+++ b/spec/models/blob_viewer/go_mod_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe BlobViewer::GoMod do
+ include FakeBlobHelpers
+
+ let(:project) { build_stubbed(:project) }
+ let(:data) do
+ <<-SPEC.strip_heredoc
+ module #{Settings.build_gitlab_go_url}/#{project.full_path}
+ SPEC
+ end
+ let(:blob) { fake_blob(path: 'go.mod', data: data) }
+
+ subject { described_class.new(blob) }
+
+ describe '#package_name' do
+ it 'returns the package name' do
+ expect(subject.package_name).to eq("#{Settings.build_gitlab_go_url}/#{project.full_path}")
+ end
+ end
+
+ describe '#package_url' do
+ it 'returns the package URL' do
+ expect(subject.package_url).to eq("#{Gitlab.config.gitlab.protocol}://#{Settings.build_gitlab_go_url}/#{project.full_path}/")
+ end
+
+ context 'when the homepage has an invalid URL' do
+ let(:data) do
+ <<-SPEC.strip_heredoc
+ module javascript:alert()
+ SPEC
+ end
+
+ it 'returns nil' do
+ expect(subject.package_url).to be_nil
+ end
+ end
+ end
+
+ describe '#package_type' do
+ it 'returns "package"' do
+ expect(subject.package_type).to eq('go')
+ end
+ end
+
+ context 'when the module name does not start with the instance URL' do
+ let(:data) do
+ <<-SPEC.strip_heredoc
+ module example.com/foo/bar
+ SPEC
+ end
+
+ subject { described_class.new(blob) }
+
+ describe '#package_url' do
+ it 'returns the pkg.go.dev URL' do
+ expect(subject.package_url).to eq("https://pkg.go.dev/example.com/foo/bar")
+ end
+ end
+ end
+end