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>2021-09-20 16:18:24 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 16:18:24 +0300
commit0653e08efd039a5905f3fa4f6e9cef9f5d2f799c (patch)
tree4dcc884cf6d81db44adae4aa99f8ec1233a41f55 /spec/frontend/ide
parent744144d28e3e7fddc117924fef88de5d9674fe4c (diff)
Add latest changes from gitlab-org/gitlab@14-3-stable-eev14.3.0-rc42
Diffstat (limited to 'spec/frontend/ide')
-rw-r--r--spec/frontend/ide/components/repo_editor_spec.js33
-rw-r--r--spec/frontend/ide/services/terminals_spec.js51
-rw-r--r--spec/frontend/ide/utils_spec.js8
3 files changed, 83 insertions, 9 deletions
diff --git a/spec/frontend/ide/components/repo_editor_spec.js b/spec/frontend/ide/components/repo_editor_spec.js
index 47bcfb59a5f..c2212eea849 100644
--- a/spec/frontend/ide/components/repo_editor_spec.js
+++ b/spec/frontend/ide/components/repo_editor_spec.js
@@ -8,6 +8,7 @@ import waitForPromises from 'helpers/wait_for_promises';
import waitUsingRealTimer from 'helpers/wait_using_real_timer';
import { exampleConfigs, exampleFiles } from 'jest/ide/lib/editorconfig/mock_data';
import { EDITOR_CODE_INSTANCE_FN, EDITOR_DIFF_INSTANCE_FN } from '~/editor/constants';
+import { EditorMarkdownExtension } from '~/editor/extensions/source_editor_markdown_ext';
import { EditorWebIdeExtension } from '~/editor/extensions/source_editor_webide_ext';
import SourceEditor from '~/editor/source_editor';
import RepoEditor from '~/ide/components/repo_editor.vue';
@@ -25,6 +26,7 @@ import ContentViewer from '~/vue_shared/components/content_viewer/content_viewer
import { file } from '../helpers';
const PREVIEW_MARKDOWN_PATH = '/foo/bar/preview_markdown';
+const CURRENT_PROJECT_ID = 'gitlab-org/gitlab';
const defaultFileProps = {
...file('file.txt'),
@@ -63,7 +65,7 @@ const prepareStore = (state, activeFile) => {
const localState = {
openFiles: [activeFile],
projects: {
- 'gitlab-org/gitlab': {
+ [CURRENT_PROJECT_ID]: {
branches: {
main: {
name: 'main',
@@ -74,7 +76,7 @@ const prepareStore = (state, activeFile) => {
},
},
},
- currentProjectId: 'gitlab-org/gitlab',
+ currentProjectId: CURRENT_PROJECT_ID,
currentBranchId: 'main',
entries: {
[activeFile.path]: activeFile,
@@ -98,6 +100,7 @@ describe('RepoEditor', () => {
let createInstanceSpy;
let createDiffInstanceSpy;
let createModelSpy;
+ let applyExtensionSpy;
const waitForEditorSetup = () =>
new Promise((resolve) => {
@@ -124,11 +127,28 @@ describe('RepoEditor', () => {
const findEditor = () => wrapper.find('[data-testid="editor-container"]');
const findTabs = () => wrapper.findAll('.ide-mode-tabs .nav-links li');
const findPreviewTab = () => wrapper.find('[data-testid="preview-tab"]');
+ const expectEditorMarkdownExtension = (shouldHaveExtension) => {
+ if (shouldHaveExtension) {
+ expect(applyExtensionSpy).toHaveBeenCalledWith(
+ wrapper.vm.editor,
+ expect.any(EditorMarkdownExtension),
+ );
+ // TODO: spying on extensions causes Jest to blow up, so we have to assert on
+ // the public property the extension adds, as opposed to the args passed to the ctor
+ expect(wrapper.vm.editor.previewMarkdownPath).toBe(PREVIEW_MARKDOWN_PATH);
+ } else {
+ expect(applyExtensionSpy).not.toHaveBeenCalledWith(
+ wrapper.vm.editor,
+ expect.any(EditorMarkdownExtension),
+ );
+ }
+ };
beforeEach(() => {
createInstanceSpy = jest.spyOn(SourceEditor.prototype, EDITOR_CODE_INSTANCE_FN);
createDiffInstanceSpy = jest.spyOn(SourceEditor.prototype, EDITOR_DIFF_INSTANCE_FN);
createModelSpy = jest.spyOn(monacoEditor, 'createModel');
+ applyExtensionSpy = jest.spyOn(SourceEditor, 'instanceApplyExtension');
jest.spyOn(service, 'getFileData').mockResolvedValue();
jest.spyOn(service, 'getRawFileData').mockResolvedValue();
});
@@ -280,13 +300,8 @@ describe('RepoEditor', () => {
'$prefix install markdown extension for $activeFile.name in $viewer viewer',
async ({ activeFile, viewer, shouldHaveMarkdownExtension } = {}) => {
await createComponent({ state: { viewer }, activeFile });
- if (shouldHaveMarkdownExtension) {
- expect(vm.editor.previewMarkdownPath).toBe(PREVIEW_MARKDOWN_PATH);
- expect(vm.editor.togglePreview).toBeDefined();
- } else {
- expect(vm.editor.previewMarkdownPath).toBeUndefined();
- expect(vm.editor.togglePreview).toBeUndefined();
- }
+
+ expectEditorMarkdownExtension(shouldHaveMarkdownExtension);
},
);
});
diff --git a/spec/frontend/ide/services/terminals_spec.js b/spec/frontend/ide/services/terminals_spec.js
new file mode 100644
index 00000000000..788fdb6471c
--- /dev/null
+++ b/spec/frontend/ide/services/terminals_spec.js
@@ -0,0 +1,51 @@
+import MockAdapter from 'axios-mock-adapter';
+import * as terminalService from '~/ide/services/terminals';
+import axios from '~/lib/utils/axios_utils';
+
+const TEST_PROJECT_PATH = 'lorem/ipsum/dolar';
+const TEST_BRANCH = 'ref';
+
+describe('~/ide/services/terminals', () => {
+ let axiosSpy;
+ let mock;
+ const prevRelativeUrlRoot = gon.relative_url_root;
+
+ beforeEach(() => {
+ axiosSpy = jest.fn().mockReturnValue([200, {}]);
+
+ mock = new MockAdapter(axios);
+ mock.onPost(/.*/).reply((...args) => axiosSpy(...args));
+ });
+
+ afterEach(() => {
+ gon.relative_url_root = prevRelativeUrlRoot;
+ mock.restore();
+ });
+
+ it.each`
+ method | relativeUrlRoot | url
+ ${'checkConfig'} | ${''} | ${`/${TEST_PROJECT_PATH}/ide_terminals/check_config`}
+ ${'checkConfig'} | ${'/'} | ${`/${TEST_PROJECT_PATH}/ide_terminals/check_config`}
+ ${'checkConfig'} | ${'/gitlabbin'} | ${`/gitlabbin/${TEST_PROJECT_PATH}/ide_terminals/check_config`}
+ ${'create'} | ${''} | ${`/${TEST_PROJECT_PATH}/ide_terminals`}
+ ${'create'} | ${'/'} | ${`/${TEST_PROJECT_PATH}/ide_terminals`}
+ ${'create'} | ${'/gitlabbin'} | ${`/gitlabbin/${TEST_PROJECT_PATH}/ide_terminals`}
+ `(
+ 'when $method called, posts request to $url (relative_url_root=$relativeUrlRoot)',
+ async ({ method, url, relativeUrlRoot }) => {
+ gon.relative_url_root = relativeUrlRoot;
+
+ await terminalService[method](TEST_PROJECT_PATH, TEST_BRANCH);
+
+ expect(axiosSpy).toHaveBeenCalledWith(
+ expect.objectContaining({
+ data: JSON.stringify({
+ branch: TEST_BRANCH,
+ format: 'json',
+ }),
+ url,
+ }),
+ );
+ },
+ );
+});
diff --git a/spec/frontend/ide/utils_spec.js b/spec/frontend/ide/utils_spec.js
index 00733615f81..2f8447af518 100644
--- a/spec/frontend/ide/utils_spec.js
+++ b/spec/frontend/ide/utils_spec.js
@@ -86,6 +86,14 @@ describe('WebIDE utils', () => {
expect(isTextFile({ name: 'abc.dat', content: '' })).toBe(true);
expect(isTextFile({ name: 'abc.dat', content: ' ' })).toBe(true);
});
+
+ it('returns true if there is a `binary` property already set on the file object', () => {
+ expect(isTextFile({ name: 'abc.txt', content: '' })).toBe(true);
+ expect(isTextFile({ name: 'abc.txt', content: '', binary: true })).toBe(false);
+
+ expect(isTextFile({ name: 'abc.tex', content: 'éêė' })).toBe(false);
+ expect(isTextFile({ name: 'abc.tex', content: 'éêė', binary: false })).toBe(true);
+ });
});
describe('trimPathComponents', () => {