summaryrefslogtreecommitdiff
path: root/spec/frontend/projects/experiment_new_project_creation/components/app_spec.js
diff options
context:
space:
mode:
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.js70
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);
+ });
+ });
+});