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:
Diffstat (limited to 'spec/frontend/repository/components/blob_content_viewer_spec.js')
-rw-r--r--spec/frontend/repository/components/blob_content_viewer_spec.js81
1 files changed, 19 insertions, 62 deletions
diff --git a/spec/frontend/repository/components/blob_content_viewer_spec.js b/spec/frontend/repository/components/blob_content_viewer_spec.js
index 5ac2627dc5d..cc077e20e0b 100644
--- a/spec/frontend/repository/components/blob_content_viewer_spec.js
+++ b/spec/frontend/repository/components/blob_content_viewer_spec.js
@@ -8,11 +8,11 @@ import MockAdapter from 'axios-mock-adapter';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
import waitForPromises from 'helpers/wait_for_promises';
+import { createAlert } from '~/alert';
import BlobContent from '~/blob/components/blob_content.vue';
import BlobHeader from '~/blob/components/blob_header.vue';
import BlobButtonGroup from '~/repository/components/blob_button_group.vue';
import BlobContentViewer from '~/repository/components/blob_content_viewer.vue';
-import WebIdeLink from 'ee_else_ce/vue_shared/components/web_ide_link.vue';
import ForkSuggestion from '~/repository/components/fork_suggestion.vue';
import { loadViewer } from '~/repository/components/blob_viewers';
import DownloadViewer from '~/repository/components/blob_viewers/download_viewer.vue';
@@ -20,8 +20,6 @@ import EmptyViewer from '~/repository/components/blob_viewers/empty_viewer.vue';
import SourceViewer from '~/vue_shared/components/source_viewer/source_viewer.vue';
import blobInfoQuery from 'shared_queries/repository/blob_info.query.graphql';
import projectInfoQuery from '~/repository/queries/project_info.query.graphql';
-import userInfoQuery from '~/repository/queries/user_info.query.graphql';
-import applicationInfoQuery from '~/repository/queries/application_info.query.graphql';
import CodeIntelligence from '~/code_navigation/components/app.vue';
import * as urlUtility from '~/lib/utils/url_utility';
import { isLoggedIn, handleLocationHash } from '~/lib/utils/common_utils';
@@ -34,8 +32,6 @@ import {
simpleViewerMock,
richViewerMock,
projectMock,
- userInfoMock,
- applicationInfoMock,
userPermissionsMock,
propsMock,
refMock,
@@ -46,12 +42,11 @@ jest.mock('~/repository/components/blob_viewers');
jest.mock('~/lib/utils/url_utility');
jest.mock('~/lib/utils/common_utils');
jest.mock('~/blob/line_highlighter');
+jest.mock('~/alert');
let wrapper;
let blobInfoMockResolver;
-let userInfoMockResolver;
let projectInfoMockResolver;
-let applicationInfoMockResolver;
Vue.use(Vuex);
@@ -95,7 +90,7 @@ const createComponent = async (mockData = {}, mountFn = shallowMount, mockRoute
const projectInfo = {
__typename: 'Project',
- id: '123',
+ id: projectMock.id,
userPermissions: {
pushCode,
forkProject,
@@ -121,19 +116,9 @@ const createComponent = async (mockData = {}, mountFn = shallowMount, mockRoute
data: { isBinary, project: blobInfo },
});
- userInfoMockResolver = jest.fn().mockResolvedValue({
- data: { ...userInfoMock },
- });
-
- applicationInfoMockResolver = jest.fn().mockResolvedValue({
- data: { ...applicationInfoMock },
- });
-
const fakeApollo = createMockApollo([
[blobInfoQuery, blobInfoMockResolver],
- [userInfoQuery, userInfoMockResolver],
[projectInfoQuery, projectInfoMockResolver],
- [applicationInfoQuery, applicationInfoMockResolver],
]);
wrapper = extendedWrapper(
@@ -167,7 +152,6 @@ const execImmediately = (callback) => {
describe('Blob content viewer component', () => {
const findLoadingIcon = () => wrapper.findComponent(GlLoadingIcon);
const findBlobHeader = () => wrapper.findComponent(BlobHeader);
- const findWebIdeLink = () => wrapper.findComponent(WebIdeLink);
const findBlobContent = () => wrapper.findComponent(BlobContent);
const findBlobButtonGroup = () => wrapper.findComponent(BlobButtonGroup);
const findForkSuggestion = () => wrapper.findComponent(ForkSuggestion);
@@ -197,9 +181,22 @@ describe('Blob content viewer component', () => {
expect(findBlobHeader().props('hasRenderError')).toEqual(false);
expect(findBlobHeader().props('hideViewerSwitcher')).toEqual(true);
expect(findBlobHeader().props('blob')).toEqual(simpleViewerMock);
+ expect(findBlobHeader().props('showForkSuggestion')).toEqual(false);
+ expect(findBlobHeader().props('projectPath')).toEqual(propsMock.projectPath);
+ expect(findBlobHeader().props('projectId')).toEqual(projectMock.id);
expect(mockRouterPush).not.toHaveBeenCalled();
});
+ it('creates an alert when the BlobHeader component emits an error', async () => {
+ await createComponent();
+
+ findBlobHeader().vm.$emit('error');
+
+ expect(createAlert).toHaveBeenCalledWith({
+ message: 'An error occurred while loading the file. Please try again.',
+ });
+ });
+
it('copies blob text to clipboard', async () => {
jest.spyOn(navigator.clipboard, 'writeText');
await createComponent();
@@ -401,45 +398,6 @@ describe('Blob content viewer component', () => {
});
describe('BlobHeader action slot', () => {
- const { ideEditPath, editBlobPath } = simpleViewerMock;
-
- it('renders WebIdeLink button in simple viewer', async () => {
- await createComponent({ inject: { BlobContent: true, BlobReplace: true } }, mount);
-
- expect(findWebIdeLink().props()).toMatchObject({
- editUrl: editBlobPath,
- webIdeUrl: ideEditPath,
- showEditButton: true,
- showGitpodButton: applicationInfoMock.gitpodEnabled,
- gitpodEnabled: userInfoMock.currentUser.gitpodEnabled,
- showPipelineEditorButton: true,
- gitpodUrl: simpleViewerMock.gitpodBlobUrl,
- pipelineEditorUrl: simpleViewerMock.pipelineEditorPath,
- userPreferencesGitpodPath: userInfoMock.currentUser.preferencesGitpodPath,
- userProfileEnableGitpodPath: userInfoMock.currentUser.profileEnableGitpodPath,
- });
- });
-
- it('renders WebIdeLink button in rich viewer', async () => {
- await createComponent({ blob: richViewerMock }, mount);
-
- expect(findWebIdeLink().props()).toMatchObject({
- editUrl: editBlobPath,
- webIdeUrl: ideEditPath,
- showEditButton: true,
- });
- });
-
- it('renders WebIdeLink button for binary files', async () => {
- mockAxios.onGet(legacyViewerUrl).replyOnce(HTTP_STATUS_OK, axiosMockResponse);
- await createComponent({}, mount);
- expect(findWebIdeLink().props()).toMatchObject({
- editUrl: editBlobPath,
- webIdeUrl: ideEditPath,
- showEditButton: false,
- });
- });
-
describe('blob header binary file', () => {
it('passes the correct isBinary value when viewing a binary file', async () => {
mockAxios.onGet(legacyViewerUrl).replyOnce(HTTP_STATUS_OK, axiosMockResponse);
@@ -465,7 +423,6 @@ describe('Blob content viewer component', () => {
expect(findBlobHeader().props('hideViewerSwitcher')).toBe(true);
expect(findBlobHeader().props('isBinary')).toBe(true);
- expect(findWebIdeLink().props('showEditButton')).toBe(false);
});
});
@@ -538,12 +495,12 @@ describe('Blob content viewer component', () => {
beforeEach(() => createComponent({}, mount));
it('simple edit redirects to the simple editor', () => {
- findWebIdeLink().vm.$emit('edit', 'simple');
+ findBlobHeader().vm.$emit('edit', 'simple');
expect(urlUtility.redirectTo).toHaveBeenCalledWith(simpleViewerMock.editBlobPath); // eslint-disable-line import/no-deprecated
});
it('IDE edit redirects to the IDE editor', () => {
- findWebIdeLink().vm.$emit('edit', 'ide');
+ findBlobHeader().vm.$emit('edit', 'ide');
expect(urlUtility.redirectTo).toHaveBeenCalledWith(simpleViewerMock.ideEditPath); // eslint-disable-line import/no-deprecated
});
@@ -572,7 +529,7 @@ describe('Blob content viewer component', () => {
mount,
);
- findWebIdeLink().vm.$emit('edit', 'simple');
+ findBlobHeader().vm.$emit('edit', 'simple');
await nextTick();
expect(findForkSuggestion().exists()).toBe(showForkSuggestion);