Commit c027101d authored by Stan Hu's avatar Stan Hu

Merge branch 'rs-transient-help-page-failure' into 'master'

Resolve transient failure in Help page spec

Closes #55372

See merge request gitlab-org/gitlab-ce!23839
parents 9d57e8af fac5c0e7
...@@ -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
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe 'Help Pages' do describe 'Help Pages' do
...@@ -52,23 +54,21 @@ describe 'Help Pages' do ...@@ -52,23 +54,21 @@ describe 'Help Pages' do
end end
end end
context 'in a production environment with version check enabled', :js do context 'in a production environment with version check enabled' 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
end end
it 'has a version check image' do it 'has a version check image' do
expect(find('.js-version-status-badge', visible: false)['src']).to end_with('/version-check-url') # Check `data-src` due to lazy image loading
end expect(find('.js-version-status-badge', visible: false)['data-src'])
.to end_with('/version-check-url')
it 'hides the version check image if the image request fails' do
# We use '--load-images=yes' with poltergeist so the image fails to load
expect(page).to have_selector('.js-version-status-badge', visible: false)
end end
end end
......
...@@ -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