Commit 04a3e48c authored by Robert Speicher's avatar Robert Speicher

Use class methods for VersionCheck

All of these methods are stateless, there was no point to have them as
instance methods.

Mostly this allows us to remove an `allow_any_instance_of` usage.
parent eafc8e2f
...@@ -6,8 +6,7 @@ module VersionCheckHelper ...@@ -6,8 +6,7 @@ module VersionCheckHelper
return unless Gitlab::CurrentSettings.version_check_enabled return unless Gitlab::CurrentSettings.version_check_enabled
return if User.single_user&.requires_usage_stats_consent? return if User.single_user&.requires_usage_stats_consent?
image_url = VersionCheck.new.url image_tag VersionCheck.url, class: 'js-version-status-badge'
image_tag image_url, class: 'js-version-status-badge'
end end
def link_to_version def link_to_version
......
...@@ -5,16 +5,17 @@ require "base64" ...@@ -5,16 +5,17 @@ require "base64"
# This class is used to build image URL to # This class is used to build image URL to
# check if it is a new version for update # check if it is a new version for update
class VersionCheck class VersionCheck
def data def self.data
{ version: Gitlab::VERSION } { version: Gitlab::VERSION }
end end
def url def self.url
encoded_data = Base64.urlsafe_encode64(data.to_json) encoded_data = Base64.urlsafe_encode64(data.to_json)
"#{host}?gitlab_info=#{encoded_data}" "#{host}?gitlab_info=#{encoded_data}"
end end
def host def self.host
'https://version.gitlab.com/check.svg' 'https://version.gitlab.com/check.svg'
end end
end end
...@@ -54,9 +54,10 @@ describe 'Help Pages' do ...@@ -54,9 +54,10 @@ describe 'Help Pages' do
context 'in a production environment with version check enabled', :js do context 'in a production environment with version check enabled', :js do
before do before do
allow(Rails.env).to receive(:production?) { true }
stub_application_setting(version_check_enabled: true) stub_application_setting(version_check_enabled: true)
allow_any_instance_of(VersionCheck).to receive(:url) { '/version-check-url' }
allow(Rails.env).to receive(:production?).and_return(true)
allow(VersionCheck).to receive(:url).and_return('/version-check-url')
sign_in(create(:user)) sign_in(create(:user))
visit help_path visit help_path
......
...@@ -13,21 +13,21 @@ describe VersionCheckHelper do ...@@ -13,21 +13,21 @@ describe VersionCheckHelper do
before do before do
allow(Rails.env).to receive(:production?) { true } allow(Rails.env).to receive(:production?) { true }
allow(Gitlab::CurrentSettings.current_application_settings).to receive(:version_check_enabled) { true } allow(Gitlab::CurrentSettings.current_application_settings).to receive(:version_check_enabled) { true }
allow_any_instance_of(VersionCheck).to receive(:url) { 'https://version.host.com/check.svg?gitlab_info=xxx' } allow(VersionCheck).to receive(:url) { 'https://version.host.com/check.svg?gitlab_info=xxx' }
@image_tag = helper.version_status_badge
end end
it 'should return an image tag' do it 'should return an image tag' do
expect(@image_tag).to match(/^<img/) expect(helper.version_status_badge).to start_with('<img')
end end
it 'should have a js prefixed css class' do it 'should have a js prefixed css class' do
expect(@image_tag).to match(/class="js-version-status-badge lazy"/) expect(helper.version_status_badge)
.to match(/class="js-version-status-badge lazy"/)
end end
it 'should have a VersionCheck url as the src' do it 'should have a VersionCheck url as the src' do
expect(@image_tag).to match(%r{src="https://version\.host\.com/check\.svg\?gitlab_info=xxx"}) expect(helper.version_status_badge)
.to include(%{src="https://version.host.com/check.svg?gitlab_info=xxx"})
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment