diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-19 12:09:13 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-19 12:09:13 +0000 |
commit | cd3e2c7b9355f8990ab294b34b5e4add4f3985fa (patch) | |
tree | 77264b3e569ec95da8476f604d3d5cf4b03e85dc /spec | |
parent | c1fc5da123a1fe670e32740669a9d5e59eff38f5 (diff) | |
download | gitlab-ce-cd3e2c7b9355f8990ab294b34b5e4add4f3985fa.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
5 files changed, 150 insertions, 0 deletions
diff --git a/spec/frontend/clusters/components/applications_spec.js b/spec/frontend/clusters/components/applications_spec.js index c3336edfe59..3e25c825fe8 100644 --- a/spec/frontend/clusters/components/applications_spec.js +++ b/spec/frontend/clusters/components/applications_spec.js @@ -7,6 +7,7 @@ import { APPLICATIONS_MOCK_STATE } from '../services/mock_data'; import eventHub from '~/clusters/event_hub'; import KnativeDomainEditor from '~/clusters/components/knative_domain_editor.vue'; import CrossplaneProviderStack from '~/clusters/components/crossplane_provider_stack.vue'; +import IngressModsecuritySettings from '~/clusters/components/ingress_modsecurity_settings.vue'; describe('Applications', () => { let vm; @@ -156,6 +157,30 @@ describe('Applications', () => { }); describe('Ingress application', () => { + describe('with nested component', () => { + const propsData = { + applications: { + ...APPLICATIONS_MOCK_STATE, + ingress: { + title: 'Ingress', + status: 'installed', + }, + }, + }; + + let wrapper; + beforeEach(() => { + wrapper = shallowMount(Applications, { propsData }); + }); + afterEach(() => { + wrapper.destroy(); + }); + it('renders IngressModsecuritySettings', () => { + const modsecuritySettings = wrapper.find(IngressModsecuritySettings); + expect(modsecuritySettings.exists()).toBe(true); + }); + }); + describe('when installed', () => { describe('with ip address', () => { it('renders ip address with a clipboard button', () => { diff --git a/spec/frontend/clusters/components/ingress_modsecurity_settings_spec.js b/spec/frontend/clusters/components/ingress_modsecurity_settings_spec.js new file mode 100644 index 00000000000..e7d2b7bf5c5 --- /dev/null +++ b/spec/frontend/clusters/components/ingress_modsecurity_settings_spec.js @@ -0,0 +1,107 @@ +import { shallowMount } from '@vue/test-utils'; +import IngressModsecuritySettings from '~/clusters/components/ingress_modsecurity_settings.vue'; +import LoadingButton from '~/vue_shared/components/loading_button.vue'; +import { APPLICATION_STATUS, INGRESS } from '~/clusters/constants'; +import { GlAlert } from '@gitlab/ui'; +import eventHub from '~/clusters/event_hub'; + +const { UPDATING } = APPLICATION_STATUS; + +describe('IngressModsecuritySettings', () => { + let wrapper; + + const defaultProps = { + modsecurity_enabled: false, + status: 'installable', + installed: false, + }; + + const createComponent = (props = defaultProps) => { + wrapper = shallowMount(IngressModsecuritySettings, { + propsData: { + ingress: { + ...defaultProps, + ...props, + }, + }, + }); + }; + + const findSaveButton = () => wrapper.find(LoadingButton); + const findModSecurityCheckbox = () => wrapper.find('input').element; + + describe('when ingress is installed', () => { + beforeEach(() => { + createComponent({ installed: true }); + jest.spyOn(eventHub, '$emit'); + }); + + it('renders save button', () => { + expect(findSaveButton().exists()).toBe(true); + expect(findModSecurityCheckbox().checked).toBe(false); + }); + + describe('and the save changes button is clicked', () => { + beforeEach(() => { + findSaveButton().vm.$emit('click'); + }); + + it('triggers save event and pass current modsecurity value', () => + wrapper.vm.$nextTick().then(() => { + expect(eventHub.$emit).toHaveBeenCalledWith('updateApplication', { + id: INGRESS, + params: { modsecurity_enabled: false }, + }); + })); + }); + + it('triggers set event to be propagated with the current modsecurity value', () => { + wrapper.setData({ modSecurityEnabled: true }); + return wrapper.vm.$nextTick().then(() => { + expect(eventHub.$emit).toHaveBeenCalledWith('setIngressModSecurityEnabled', { + id: INGRESS, + modSecurityEnabled: true, + }); + }); + }); + + describe(`when ingress status is ${UPDATING}`, () => { + beforeEach(() => { + createComponent({ installed: true, status: UPDATING }); + }); + + it('renders loading spinner in save button', () => { + expect(findSaveButton().props('loading')).toBe(true); + }); + + it('renders disabled save button', () => { + expect(findSaveButton().props('disabled')).toBe(true); + }); + + it('renders save button with "Saving" label', () => { + expect(findSaveButton().props('label')).toBe('Saving'); + }); + }); + + describe('when ingress fails to update', () => { + beforeEach(() => { + createComponent({ updateFailed: true }); + }); + + it('displays a error message', () => { + expect(wrapper.find(GlAlert).exists()).toBe(true); + }); + }); + }); + + describe('when ingress is not installed', () => { + beforeEach(() => { + createComponent(); + }); + + it('does not render the save button', () => { + expect(findSaveButton().exists()).toBe(false); + expect(findModSecurityCheckbox().checked).toBe(false); + }); + }); +}); diff --git a/spec/frontend/clusters/stores/clusters_store_spec.js b/spec/frontend/clusters/stores/clusters_store_spec.js index f2dbdd0638b..d3775c6cfba 100644 --- a/spec/frontend/clusters/stores/clusters_store_spec.js +++ b/spec/frontend/clusters/stores/clusters_store_spec.js @@ -81,8 +81,10 @@ describe('Clusters Store', () => { externalIp: null, externalHostname: null, installed: false, + isEditingModSecurityEnabled: false, installFailed: true, uninstallable: false, + updateFailed: false, uninstallSuccessful: false, uninstallFailed: false, validationError: null, diff --git a/spec/lib/gitlab/diff/highlight_cache_spec.rb b/spec/lib/gitlab/diff/highlight_cache_spec.rb index 218c393c409..eb8072a554e 100644 --- a/spec/lib/gitlab/diff/highlight_cache_spec.rb +++ b/spec/lib/gitlab/diff/highlight_cache_spec.rb @@ -149,5 +149,13 @@ describe Gitlab::Diff::HighlightCache, :clean_gitlab_redis_cache do it 'defines :gitlab_redis_diff_caching_memory_usage_bytes histogram' do expect(described_class).to respond_to(:gitlab_redis_diff_caching_memory_usage_bytes) end + + it 'defines :gitlab_redis_diff_caching_hit' do + expect(described_class).to respond_to(:gitlab_redis_diff_caching_hit) + end + + it 'defines :gitlab_redis_diff_caching_miss' do + expect(described_class).to respond_to(:gitlab_redis_diff_caching_miss) + end end end diff --git a/spec/lib/gitlab/git/blob_spec.rb b/spec/lib/gitlab/git/blob_spec.rb index 521c03058ca..3277e02aafa 100644 --- a/spec/lib/gitlab/git/blob_spec.rb +++ b/spec/lib/gitlab/git/blob_spec.rb @@ -12,10 +12,18 @@ describe Gitlab::Git::Blob, :seed_helper do let(:blob) { Gitlab::Git::Blob.new(name: 'test') } it 'handles nil data' do + expect(described_class).not_to receive(:gitlab_blob_size) + expect(blob.name).to eq('test') expect(blob.size).to eq(nil) expect(blob.loaded_size).to eq(nil) end + + it 'records blob size' do + expect(described_class).to receive(:gitlab_blob_size).and_call_original + + Gitlab::Git::Blob.new(name: 'test', size: 1234) + end end shared_examples '.find' do |