Merge branch 'gamesover/gitlab-ce-broken_iamge_when_doing_offline_update_check(help_page)' into 'master'
Gamesover/gitlab ce broken iamge when doing offline update check(help page) See merge request !8539
This commit is contained in:
commit
fca326e5e2
6 changed files with 105 additions and 9 deletions
|
@ -1,10 +1,10 @@
|
||||||
(() => {
|
class VersionCheckImage {
|
||||||
class VersionCheckImage {
|
static bindErrorEvent(imageElement) {
|
||||||
static bindErrorEvent(imageElement) {
|
imageElement.off('error').on('error', () => imageElement.hide());
|
||||||
imageElement.off('error').on('error', () => imageElement.hide());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
window.gl = window.gl || {};
|
window.gl = window.gl || {};
|
||||||
gl.VersionCheckImage = VersionCheckImage;
|
gl.VersionCheckImage = VersionCheckImage;
|
||||||
})();
|
|
||||||
|
module.exports = VersionCheckImage;
|
||||||
|
|
|
@ -33,4 +33,30 @@ describe 'Help Pages', feature: true do
|
||||||
it_behaves_like 'help page', prefix: '/gitlab'
|
it_behaves_like 'help page', prefix: '/gitlab'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'in a production environment with version check enabled', js: true do
|
||||||
|
before do
|
||||||
|
allow(Rails.env).to receive(:production?) { true }
|
||||||
|
allow(current_application_settings).to receive(:version_check_enabled) { true }
|
||||||
|
allow_any_instance_of(VersionCheck).to receive(:url) { '/version-check-url' }
|
||||||
|
|
||||||
|
login_as :user
|
||||||
|
visit help_path
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should display a version check image' do
|
||||||
|
expect(find('.js-version-status-badge')).to be_visible
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have a src url' do
|
||||||
|
expect(find('.js-version-status-badge')['src']).to match(/\/version-check-url/)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should hide the version check image if the image request fails' do
|
||||||
|
# We use '--load-images=no' with poltergeist so we must trigger manually
|
||||||
|
execute_script("$('.js-version-status-badge').trigger('error');")
|
||||||
|
|
||||||
|
expect(find('.js-version-status-badge', visible: false)).not_to be_visible
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
34
spec/helpers/version_check_helper_spec.rb
Normal file
34
spec/helpers/version_check_helper_spec.rb
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe VersionCheckHelper do
|
||||||
|
describe '#version_status_badge' do
|
||||||
|
it 'should return nil if not dev environment and not enabled' do
|
||||||
|
allow(Rails.env).to receive(:production?) { false }
|
||||||
|
allow(current_application_settings).to receive(:version_check_enabled) { false }
|
||||||
|
|
||||||
|
expect(helper.version_status_badge).to be(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when production and enabled' do
|
||||||
|
before do
|
||||||
|
allow(Rails.env).to receive(:production?) { true }
|
||||||
|
allow(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' }
|
||||||
|
|
||||||
|
@image_tag = helper.version_status_badge
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should return an image tag' do
|
||||||
|
expect(@image_tag).to match(/^<img/)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have a js prefixed css class' do
|
||||||
|
expect(@image_tag).to match(/class="js-version-status-badge"/)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should have a VersionCheck url as the src' do
|
||||||
|
expect(@image_tag).to match(/src="https:\/\/version\.host\.com\/check\.svg\?gitlab_info=xxx"/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -18,7 +18,8 @@
|
||||||
"sandbox": false,
|
"sandbox": false,
|
||||||
"setFixtures": false,
|
"setFixtures": false,
|
||||||
"setStyleFixtures": false,
|
"setStyleFixtures": false,
|
||||||
"spyOnEvent": false
|
"spyOnEvent": false,
|
||||||
|
"ClassSpecHelper": false
|
||||||
},
|
},
|
||||||
"plugins": ["jasmine"],
|
"plugins": ["jasmine"],
|
||||||
"rules": {
|
"rules": {
|
||||||
|
|
|
@ -7,3 +7,5 @@ class ClassSpecHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
window.ClassSpecHelper = ClassSpecHelper;
|
window.ClassSpecHelper = ClassSpecHelper;
|
||||||
|
|
||||||
|
module.exports = ClassSpecHelper;
|
||||||
|
|
33
spec/javascripts/version_check_image_spec.js.es6
Normal file
33
spec/javascripts/version_check_image_spec.js.es6
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
const ClassSpecHelper = require('./helpers/class_spec_helper');
|
||||||
|
const VersionCheckImage = require('~/version_check_image');
|
||||||
|
require('jquery');
|
||||||
|
|
||||||
|
describe('VersionCheckImage', function () {
|
||||||
|
describe('.bindErrorEvent', function () {
|
||||||
|
ClassSpecHelper.itShouldBeAStaticMethod(VersionCheckImage, 'bindErrorEvent');
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
this.imageElement = $('<div></div>');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('registers an error event', function () {
|
||||||
|
spyOn($.prototype, 'on');
|
||||||
|
spyOn($.prototype, 'off').and.callFake(function () { return this; });
|
||||||
|
|
||||||
|
VersionCheckImage.bindErrorEvent(this.imageElement);
|
||||||
|
|
||||||
|
expect($.prototype.off).toHaveBeenCalledWith('error');
|
||||||
|
expect($.prototype.on).toHaveBeenCalledWith('error', jasmine.any(Function));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('hides the imageElement on error', function () {
|
||||||
|
spyOn($.prototype, 'hide');
|
||||||
|
|
||||||
|
VersionCheckImage.bindErrorEvent(this.imageElement);
|
||||||
|
|
||||||
|
this.imageElement.trigger('error');
|
||||||
|
|
||||||
|
expect($.prototype.hide).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue