diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-16 21:09:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-16 21:09:24 +0300 |
commit | 1eec6b22b26d09ce6927adf66f98d755a6339815 (patch) | |
tree | b1bb8bbdc0d49136bfd176a1e64d3bd9f2969396 /spec/frontend_integration/ide | |
parent | b4e854a900ba9bcbfc3476f88317c59ea048daaf (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.js | 8 | ||||
-rw-r--r-- | spec/frontend_integration/ide/helpers/start.js | 9 | ||||
-rw-r--r-- | spec/frontend_integration/ide/user_opens_mr_spec.js | 60 |
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); + }); +}); |