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-02-16 21:09:24 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-02-16 21:09:24 +0300
commit1eec6b22b26d09ce6927adf66f98d755a6339815 (patch)
treeb1bb8bbdc0d49136bfd176a1e64d3bd9f2969396 /spec/frontend_integration/ide
parentb4e854a900ba9bcbfc3476f88317c59ea048daaf (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend_integration/ide')
-rw-r--r--spec/frontend_integration/ide/helpers/ide_helper.js8
-rw-r--r--spec/frontend_integration/ide/helpers/start.js9
-rw-r--r--spec/frontend_integration/ide/user_opens_mr_spec.js60
3 files changed, 72 insertions, 5 deletions
diff --git a/spec/frontend_integration/ide/helpers/ide_helper.js b/spec/frontend_integration/ide/helpers/ide_helper.js
index 8d5d047b146..9e6bafc1297 100644
--- a/spec/frontend_integration/ide/helpers/ide_helper.js
+++ b/spec/frontend_integration/ide/helpers/ide_helper.js
@@ -69,7 +69,7 @@ const openFileRow = (row) => {
row.click();
};
-const findAndTraverseToPath = async (path, index = 0, row = null) => {
+export const findAndTraverseToPath = async (path, index = 0, row = null) => {
if (!path) {
return row;
}
@@ -110,6 +110,12 @@ const findAndClickRootAction = async (name) => {
button.click();
};
+/**
+ * Drop leading "/-/ide" and file path from the current URL
+ */
+export const getBaseRoute = (url = window.location.pathname) =>
+ url.replace(/^\/-\/ide/, '').replace(/\/-\/.*$/, '');
+
export const clickPreviewMarkdown = () => {
screen.getByText('Preview Markdown').click();
};
diff --git a/spec/frontend_integration/ide/helpers/start.js b/spec/frontend_integration/ide/helpers/start.js
index 67d490b2b2e..173a9610c84 100644
--- a/spec/frontend_integration/ide/helpers/start.js
+++ b/spec/frontend_integration/ide/helpers/start.js
@@ -4,11 +4,12 @@ import Editor from '~/ide/lib/editor';
import extendStore from '~/ide/stores/extend';
import { IDE_DATASET } from './mock_data';
-export default (container, { isRepoEmpty = false, path = '' } = {}) => {
+export default (container, { isRepoEmpty = false, path = '', mrId = '' } = {}) => {
+ const projectName = isRepoEmpty ? 'lorem-ipsum-empty' : 'lorem-ipsum';
+ const pathSuffix = mrId ? `merge_requests/${mrId}` : `tree/master/-/${path}`;
+
global.jsdom.reconfigure({
- url: `${TEST_HOST}/-/ide/project/gitlab-test/lorem-ipsum${
- isRepoEmpty ? '-empty' : ''
- }/tree/master/-/${path}`,
+ url: `${TEST_HOST}/-/ide/project/gitlab-test/${projectName}/${pathSuffix}`,
});
const el = document.createElement('div');
diff --git a/spec/frontend_integration/ide/user_opens_mr_spec.js b/spec/frontend_integration/ide/user_opens_mr_spec.js
new file mode 100644
index 00000000000..9cf0ff5da56
--- /dev/null
+++ b/spec/frontend_integration/ide/user_opens_mr_spec.js
@@ -0,0 +1,60 @@
+import { basename } from 'path';
+import { getMergeRequests, getMergeRequestWithChanges } from 'test_helpers/fixtures';
+import { useOverclockTimers } from 'test_helpers/utils/overclock_timers';
+import * as ideHelper from './helpers/ide_helper';
+import startWebIDE from './helpers/start';
+
+const getRelevantChanges = () =>
+ getMergeRequestWithChanges().changes.filter((x) => !x.deleted_file);
+
+describe('IDE: User opens Merge Request', () => {
+ useOverclockTimers();
+
+ let vm;
+ let container;
+ let changes;
+
+ beforeEach(async () => {
+ const [{ iid: mrId }] = getMergeRequests();
+
+ changes = getRelevantChanges();
+
+ setFixtures('<div class="webide-container"></div>');
+ container = document.querySelector('.webide-container');
+
+ vm = startWebIDE(container, { mrId });
+
+ await ideHelper.waitForTabToOpen(basename(changes[0].new_path));
+ await ideHelper.waitForMonacoEditor();
+ });
+
+ afterEach(async () => {
+ vm.$destroy();
+ vm = null;
+ });
+
+ const findAllTabs = () => Array.from(document.querySelectorAll('.multi-file-tab'));
+ const findAllTabsData = () =>
+ findAllTabs().map((el) => ({
+ title: el.getAttribute('title'),
+ text: el.textContent.trim(),
+ }));
+
+ it('shows first change as active in file tree', async () => {
+ const firstPath = changes[0].new_path;
+ const row = await ideHelper.findAndTraverseToPath(firstPath);
+
+ expect(row).toHaveClass('is-open');
+ expect(row).toHaveClass('is-active');
+ });
+
+ it('opens other changes', () => {
+ // We only show first 10 changes
+ const expectedTabs = changes.slice(0, 10).map((x) => ({
+ title: `${ideHelper.getBaseRoute()}/-/${x.new_path}/`,
+ text: basename(x.new_path),
+ }));
+
+ expect(findAllTabsData()).toEqual(expectedTabs);
+ });
+});