summaryrefslogtreecommitdiff
path: root/spec/frontend/jira_connect/components/app_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/jira_connect/components/app_spec.js')
-rw-r--r--spec/frontend/jira_connect/components/app_spec.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/frontend/jira_connect/components/app_spec.js b/spec/frontend/jira_connect/components/app_spec.js
new file mode 100644
index 00000000000..be990d5061c
--- /dev/null
+++ b/spec/frontend/jira_connect/components/app_spec.js
@@ -0,0 +1,80 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import { shallowMount } from '@vue/test-utils';
+import { extendedWrapper } from 'helpers/vue_test_utils_helper';
+import { GlAlert } from '@gitlab/ui';
+import JiraConnectApp from '~/jira_connect/components/app.vue';
+import createStore from '~/jira_connect/store';
+import { SET_ERROR_MESSAGE } from '~/jira_connect/store/mutation_types';
+
+Vue.use(Vuex);
+
+describe('JiraConnectApp', () => {
+ let wrapper;
+ let store;
+
+ const findAlert = () => wrapper.findComponent(GlAlert);
+ const findHeader = () => wrapper.findByTestId('new-jira-connect-ui-heading');
+ const findHeaderText = () => findHeader().text();
+
+ const createComponent = (options = {}) => {
+ store = createStore();
+
+ wrapper = extendedWrapper(
+ shallowMount(JiraConnectApp, {
+ store,
+ provide: {
+ glFeatures: { newJiraConnectUi: true },
+ },
+ ...options,
+ }),
+ );
+ };
+
+ afterEach(() => {
+ wrapper.destroy();
+ wrapper = null;
+ });
+
+ describe('template', () => {
+ it('renders new UI', () => {
+ createComponent();
+
+ expect(findHeader().exists()).toBe(true);
+ expect(findHeaderText()).toBe('Linked namespaces');
+ });
+
+ describe('newJiraConnectUi is false', () => {
+ it('does not render new UI', () => {
+ createComponent({
+ provide: {
+ glFeatures: { newJiraConnectUi: false },
+ },
+ });
+
+ expect(findHeader().exists()).toBe(false);
+ });
+ });
+
+ it.each`
+ errorMessage | errorShouldRender
+ ${'Test error'} | ${true}
+ ${''} | ${false}
+ ${undefined} | ${false}
+ `(
+ 'renders correct alert when errorMessage is `$errorMessage`',
+ async ({ errorMessage, errorShouldRender }) => {
+ createComponent();
+
+ store.commit(SET_ERROR_MESSAGE, errorMessage);
+ await wrapper.vm.$nextTick();
+
+ expect(findAlert().exists()).toBe(errorShouldRender);
+ if (errorShouldRender) {
+ expect(findAlert().isVisible()).toBe(errorShouldRender);
+ expect(findAlert().html()).toContain(errorMessage);
+ }
+ },
+ );
+ });
+});