Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-15 18:09:53 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-15 18:09:53 +0300
commit977720d7565377672df302ecb82b1e7a221cfba6 (patch)
treef258b65ed376a3075e0a76971a9360083ee6a059 /spec/frontend/vue_shared
parent717436a767395d0ed850a16d07f19cd51c3d4551 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/vue_shared')
-rw-r--r--spec/frontend/vue_shared/components/confirm_fork_modal_spec.js63
-rw-r--r--spec/frontend/vue_shared/components/web_ide_link_spec.js14
2 files changed, 71 insertions, 6 deletions
diff --git a/spec/frontend/vue_shared/components/confirm_fork_modal_spec.js b/spec/frontend/vue_shared/components/confirm_fork_modal_spec.js
index fbfef5cbe46..97c48a4db74 100644
--- a/spec/frontend/vue_shared/components/confirm_fork_modal_spec.js
+++ b/spec/frontend/vue_shared/components/confirm_fork_modal_spec.js
@@ -1,8 +1,17 @@
-import { GlModal } from '@gitlab/ui';
+import { GlLoadingIcon, GlModal } from '@gitlab/ui';
+import Vue from 'vue';
+import VueApollo from 'vue-apollo';
+import getNoWritableForksResponse from 'test_fixtures/graphql/vue_shared/components/web_ide/get_writable_forks.query.graphql_none.json';
+import getSomeWritableForksResponse from 'test_fixtures/graphql/vue_shared/components/web_ide/get_writable_forks.query.graphql_some.json';
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
-import ConfirmForkModal, { i18n } from '~/vue_shared/components/confirm_fork_modal.vue';
+import ConfirmForkModal, { i18n } from '~/vue_shared/components/web_ide/confirm_fork_modal.vue';
+import createMockApollo from 'helpers/mock_apollo_helper';
+import getWritableForksQuery from '~/vue_shared/components/web_ide/get_writable_forks.query.graphql';
+import waitForPromises from 'helpers/wait_for_promises';
describe('vue_shared/components/confirm_fork_modal', () => {
+ Vue.use(VueApollo);
+
let wrapper = null;
const forkPath = '/fake/fork/path';
@@ -13,13 +22,18 @@ describe('vue_shared/components/confirm_fork_modal', () => {
const findModalProp = (prop) => findModal().props(prop);
const findModalActionProps = () => findModalProp('actionPrimary');
- const createComponent = (props = {}) =>
- shallowMountExtended(ConfirmForkModal, {
+ const createComponent = (props = {}, getWritableForksResponse = getNoWritableForksResponse) => {
+ const fakeApollo = createMockApollo([
+ [getWritableForksQuery, jest.fn().mockResolvedValue(getWritableForksResponse)],
+ ]);
+ return shallowMountExtended(ConfirmForkModal, {
propsData: {
...defaultProps,
...props,
},
+ apolloProvider: fakeApollo,
});
+ };
describe('visible = false', () => {
beforeEach(() => {
@@ -73,4 +87,45 @@ describe('vue_shared/components/confirm_fork_modal', () => {
expect(wrapper.emitted('change')).toEqual([[false]]);
});
});
+
+ describe('writable forks', () => {
+ describe('when loading', () => {
+ it('shows loading spinner', () => {
+ wrapper = createComponent();
+
+ expect(wrapper.findComponent(GlLoadingIcon).exists()).toBe(true);
+ });
+ });
+
+ describe('with no writable forks', () => {
+ it('contains `newForkMessage`', async () => {
+ wrapper = createComponent();
+
+ await waitForPromises();
+
+ expect(wrapper.text()).toContain(i18n.newForkMessage);
+ });
+ });
+
+ describe('with writable forks', () => {
+ it('contains `existingForksMessage`', async () => {
+ wrapper = createComponent(null, getSomeWritableForksResponse);
+
+ await waitForPromises();
+
+ expect(wrapper.text()).toContain(i18n.existingForksMessage);
+ });
+
+ it('renders links to the forks', async () => {
+ wrapper = createComponent(null, getSomeWritableForksResponse);
+
+ await waitForPromises();
+
+ const forks = getSomeWritableForksResponse.data.project.visibleForks.nodes;
+
+ expect(wrapper.findByText(forks[0].fullPath).attributes('href')).toBe(forks[0].webUrl);
+ expect(wrapper.findByText(forks[1].fullPath).attributes('href')).toBe(forks[1].webUrl);
+ });
+ });
+ });
});
diff --git a/spec/frontend/vue_shared/components/web_ide_link_spec.js b/spec/frontend/vue_shared/components/web_ide_link_spec.js
index 26557c63a77..e54de25dc0d 100644
--- a/spec/frontend/vue_shared/components/web_ide_link_spec.js
+++ b/spec/frontend/vue_shared/components/web_ide_link_spec.js
@@ -1,14 +1,18 @@
import { GlModal } from '@gitlab/ui';
-import { nextTick } from 'vue';
+import Vue, { nextTick } from 'vue';
+import VueApollo from 'vue-apollo';
+import getWritableForksResponse from 'test_fixtures/graphql/vue_shared/components/web_ide/get_writable_forks.query.graphql_none.json';
import ActionsButton from '~/vue_shared/components/actions_button.vue';
import WebIdeLink, { i18n } from '~/vue_shared/components/web_ide_link.vue';
-import ConfirmForkModal from '~/vue_shared/components/confirm_fork_modal.vue';
+import ConfirmForkModal from '~/vue_shared/components/web_ide/confirm_fork_modal.vue';
import { stubComponent } from 'helpers/stub_component';
import { shallowMountExtended, mountExtended } from 'helpers/vue_test_utils_helper';
+import createMockApollo from 'helpers/mock_apollo_helper';
import { visitUrl } from '~/lib/utils/url_utility';
+import getWritableForksQuery from '~/vue_shared/components/web_ide/get_writable_forks.query.graphql';
jest.mock('~/lib/utils/url_utility');
@@ -77,9 +81,14 @@ const ACTION_PIPELINE_EDITOR = {
};
describe('vue_shared/components/web_ide_link', () => {
+ Vue.use(VueApollo);
+
let wrapper;
function createComponent(props, { mountFn = shallowMountExtended, glFeatures = {} } = {}) {
+ const fakeApollo = createMockApollo([
+ [getWritableForksQuery, jest.fn().mockResolvedValue(getWritableForksResponse)],
+ ]);
wrapper = mountFn(WebIdeLink, {
propsData: {
editUrl: TEST_EDIT_URL,
@@ -102,6 +111,7 @@ describe('vue_shared/components/web_ide_link', () => {
</div>`,
}),
},
+ apolloProvider: fakeApollo,
});
}