diff options
Diffstat (limited to 'spec/frontend/projects/experiment_new_project_creation/components/app_spec.js')
-rw-r--r-- | spec/frontend/projects/experiment_new_project_creation/components/app_spec.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/spec/frontend/projects/experiment_new_project_creation/components/app_spec.js b/spec/frontend/projects/experiment_new_project_creation/components/app_spec.js new file mode 100644 index 00000000000..a1e1e4554e2 --- /dev/null +++ b/spec/frontend/projects/experiment_new_project_creation/components/app_spec.js @@ -0,0 +1,70 @@ +import { shallowMount } from '@vue/test-utils'; +import { GlBreadcrumb } from '@gitlab/ui'; +import App from '~/projects/experiment_new_project_creation/components/app.vue'; +import WelcomePage from '~/projects/experiment_new_project_creation/components/welcome.vue'; +import LegacyContainer from '~/projects/experiment_new_project_creation/components/legacy_container.vue'; + +describe('Experimental new project creation app', () => { + let wrapper; + + const createComponent = propsData => { + wrapper = shallowMount(App, { propsData }); + }; + + afterEach(() => { + wrapper.destroy(); + window.location.hash = ''; + wrapper = null; + }); + + describe('with empty hash', () => { + beforeEach(() => { + createComponent(); + }); + + it('renders welcome page', () => { + expect(wrapper.find(WelcomePage).exists()).toBe(true); + }); + + it('does not render breadcrumbs', () => { + expect(wrapper.find(GlBreadcrumb).exists()).toBe(false); + }); + }); + + it('renders blank project container if there are errors', () => { + createComponent({ hasErrors: true }); + expect(wrapper.find(WelcomePage).exists()).toBe(false); + expect(wrapper.find(LegacyContainer).exists()).toBe(true); + }); + + describe('when hash is not empty on load', () => { + beforeEach(() => { + window.location.hash = '#blank_project'; + createComponent(); + }); + + it('renders relevant container', () => { + expect(wrapper.find(WelcomePage).exists()).toBe(false); + expect(wrapper.find(LegacyContainer).exists()).toBe(true); + }); + + it('renders breadcrumbs', () => { + expect(wrapper.find(GlBreadcrumb).exists()).toBe(true); + }); + }); + + it('renders relevant container when hash changes', () => { + createComponent(); + expect(wrapper.find(WelcomePage).exists()).toBe(true); + + window.location.hash = '#blank_project'; + const ev = document.createEvent('HTMLEvents'); + ev.initEvent('hashchange', false, false); + window.dispatchEvent(ev); + + return wrapper.vm.$nextTick().then(() => { + expect(wrapper.find(WelcomePage).exists()).toBe(false); + expect(wrapper.find(LegacyContainer).exists()).toBe(true); + }); + }); +}); |