diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-20 09:06:17 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-20 09:06:17 +0000 |
commit | 8ac91ecfd1bb445a0a1572b3c0885c41c9037e8a (patch) | |
tree | 4b8c9d2a99ad50ef84421b57758869863ea477a2 /spec | |
parent | 7e20809103e1f9c0c96c3a96705224c81bf448d5 (diff) | |
download | gitlab-ce-8ac91ecfd1bb445a0a1572b3c0885c41c9037e8a.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r-- | spec/features/clusters/cluster_detail_page_spec.rb | 44 | ||||
-rw-r--r-- | spec/javascripts/blob/balsamiq/balsamiq_viewer_spec.js | 63 | ||||
-rw-r--r-- | spec/presenters/project_presenter_spec.rb | 22 |
3 files changed, 84 insertions, 45 deletions
diff --git a/spec/features/clusters/cluster_detail_page_spec.rb b/spec/features/clusters/cluster_detail_page_spec.rb index 683c57a97f8..927862689c1 100644 --- a/spec/features/clusters/cluster_detail_page_spec.rb +++ b/spec/features/clusters/cluster_detail_page_spec.rb @@ -13,7 +13,7 @@ describe 'Clusterable > Show page' do sign_in(current_user) end - shared_examples 'editing domain' do + shared_examples 'show page' do before do clusterable.add_maintainer(current_user) end @@ -53,6 +53,12 @@ describe 'Clusterable > Show page' do end end end + + it 'does not show the environments tab' do + visit cluster_path + + expect(page).not_to have_selector('.js-cluster-nav-environments', text: 'Environments') + end end shared_examples 'editing a GCP cluster' do @@ -113,42 +119,30 @@ describe 'Clusterable > Show page' do end context 'when clusterable is a project' do - it_behaves_like 'editing domain' do - let(:clusterable) { create(:project) } - let(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [clusterable]) } - let(:cluster_path) { project_cluster_path(clusterable, cluster) } - end + let(:clusterable) { create(:project) } + let(:cluster_path) { project_cluster_path(clusterable, cluster) } + let(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [clusterable]) } - it_behaves_like 'editing a GCP cluster' do - let(:clusterable) { create(:project) } - let(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [clusterable]) } - let(:cluster_path) { project_cluster_path(clusterable, cluster) } - end + it_behaves_like 'show page' + + it_behaves_like 'editing a GCP cluster' it_behaves_like 'editing a user-provided cluster' do - let(:clusterable) { create(:project) } let(:cluster) { create(:cluster, :provided_by_user, :project, projects: [clusterable]) } - let(:cluster_path) { project_cluster_path(clusterable, cluster) } end end context 'when clusterable is a group' do - it_behaves_like 'editing domain' do - let(:clusterable) { create(:group) } - let(:cluster) { create(:cluster, :provided_by_gcp, :group, groups: [clusterable]) } - let(:cluster_path) { group_cluster_path(clusterable, cluster) } - end + let(:clusterable) { create(:group) } + let(:cluster_path) { group_cluster_path(clusterable, cluster) } + let(:cluster) { create(:cluster, :provided_by_gcp, :group, groups: [clusterable]) } - it_behaves_like 'editing a GCP cluster' do - let(:clusterable) { create(:group) } - let(:cluster) { create(:cluster, :provided_by_gcp, :group, groups: [clusterable]) } - let(:cluster_path) { group_cluster_path(clusterable, cluster) } - end + it_behaves_like 'show page' + + it_behaves_like 'editing a GCP cluster' it_behaves_like 'editing a user-provided cluster' do - let(:clusterable) { create(:group) } let(:cluster) { create(:cluster, :provided_by_user, :group, groups: [clusterable]) } - let(:cluster_path) { group_cluster_path(clusterable, cluster) } end end end diff --git a/spec/javascripts/blob/balsamiq/balsamiq_viewer_spec.js b/spec/javascripts/blob/balsamiq/balsamiq_viewer_spec.js index fd73fb4bfcc..d175c8ba853 100644 --- a/spec/javascripts/blob/balsamiq/balsamiq_viewer_spec.js +++ b/spec/javascripts/blob/balsamiq/balsamiq_viewer_spec.js @@ -1,8 +1,10 @@ import sqljs from 'sql.js'; +import axios from '~/lib/utils/axios_utils'; import BalsamiqViewer from '~/blob/balsamiq/balsamiq_viewer'; import ClassSpecHelper from '../../helpers/class_spec_helper'; describe('BalsamiqViewer', () => { + const mockArrayBuffer = new ArrayBuffer(10); let balsamiqViewer; let viewer; @@ -19,44 +21,65 @@ describe('BalsamiqViewer', () => { }); describe('loadFile', () => { - let xhr; - let loadFile; + let bv; const endpoint = 'endpoint'; + const requestSuccess = Promise.resolve({ + data: mockArrayBuffer, + status: 200, + }); beforeEach(() => { - xhr = jasmine.createSpyObj('xhr', ['open', 'send']); + viewer = {}; + bv = new BalsamiqViewer(viewer); + }); - balsamiqViewer = jasmine.createSpyObj('balsamiqViewer', ['renderFile']); + it('should call `axios.get` on `endpoint` param with responseType set to `arraybuffer', () => { + spyOn(axios, 'get').and.returnValue(requestSuccess); + spyOn(bv, 'renderFile').and.stub(); - spyOn(window, 'XMLHttpRequest').and.returnValue(xhr); + bv.loadFile(endpoint); - loadFile = BalsamiqViewer.prototype.loadFile.call(balsamiqViewer, endpoint); + expect(axios.get).toHaveBeenCalledWith( + endpoint, + jasmine.objectContaining({ + responseType: 'arraybuffer', + }), + ); }); - it('should call .open', () => { - expect(xhr.open).toHaveBeenCalledWith('GET', endpoint, true); - }); + it('should call `renderFile` on request success', done => { + spyOn(axios, 'get').and.returnValue(requestSuccess); + spyOn(bv, 'renderFile').and.callFake(() => {}); - it('should set .responseType', () => { - expect(xhr.responseType).toBe('arraybuffer'); + bv.loadFile(endpoint) + .then(() => { + expect(bv.renderFile).toHaveBeenCalledWith(mockArrayBuffer); + }) + .then(done) + .catch(done.fail); }); - it('should call .send', () => { - expect(xhr.send).toHaveBeenCalled(); - }); + it('should not call `renderFile` on request failure', done => { + spyOn(axios, 'get').and.returnValue(Promise.reject()); + spyOn(bv, 'renderFile'); - it('should return a promise', () => { - expect(loadFile).toEqual(jasmine.any(Promise)); + bv.loadFile(endpoint) + .then(() => { + done.fail('Expected loadFile to throw error!'); + }) + .catch(() => { + expect(bv.renderFile).not.toHaveBeenCalled(); + }) + .then(done) + .catch(done.fail); }); }); describe('renderFile', () => { let container; - let loadEvent; let previews; beforeEach(() => { - loadEvent = { target: { response: {} } }; viewer = jasmine.createSpyObj('viewer', ['appendChild']); previews = [document.createElement('ul'), document.createElement('ul')]; @@ -73,11 +96,11 @@ describe('BalsamiqViewer', () => { container = containerElement; }); - BalsamiqViewer.prototype.renderFile.call(balsamiqViewer, loadEvent); + BalsamiqViewer.prototype.renderFile.call(balsamiqViewer, mockArrayBuffer); }); it('should call .initDatabase', () => { - expect(balsamiqViewer.initDatabase).toHaveBeenCalledWith(loadEvent.target.response); + expect(balsamiqViewer.initDatabase).toHaveBeenCalledWith(mockArrayBuffer); }); it('should call .getPreviews', () => { diff --git a/spec/presenters/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb index 5bf80f6e318..2a00548c2c3 100644 --- a/spec/presenters/project_presenter_spec.rb +++ b/spec/presenters/project_presenter_spec.rb @@ -430,4 +430,26 @@ describe ProjectPresenter do ) end end + + describe '#empty_repo_statistics_buttons' do + let(:project) { create(:project, :repository) } + let(:presenter) { described_class.new(project, current_user: user) } + + subject(:empty_repo_statistics_buttons) { presenter.empty_repo_statistics_buttons } + + before do + project.add_developer(user) + allow(project).to receive(:auto_devops_enabled?).and_return(false) + end + + it 'orders the items correctly in an empty project' do + expect(empty_repo_statistics_buttons.map(&:label)).to start_with( + a_string_including('New'), + a_string_including('README'), + a_string_including('CHANGELOG'), + a_string_including('CONTRIBUTING'), + a_string_including('CI/CD') + ) + end + end end |