Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
21a78a7f74
commit
51a7dc1b9d
|
@ -99,6 +99,10 @@ overrides:
|
|||
rules:
|
||||
'@gitlab/require-i18n-strings': off
|
||||
'@gitlab/no-runtime-template-compiler': off
|
||||
'no-restricted-syntax':
|
||||
- error
|
||||
- selector: CallExpression[callee.object.name=/(wrapper|vm)/][callee.property.name="setData"]
|
||||
message: 'Avoid using "setData" on VTU wrapper'
|
||||
- files:
|
||||
- 'config/**/*'
|
||||
- 'scripts/**/*'
|
||||
|
|
|
@ -53,6 +53,7 @@ After your merge request has been approved according to our [approval guidelines
|
|||
| Description | Link |
|
||||
| -------- | -------- |
|
||||
| Issue on [GitLab](https://gitlab.com/gitlab-org/gitlab/issues) | #TODO |
|
||||
| CVE ID request on [`gitlab-org/cves`](https://gitlab.com/gitlab-org/cves/-/issues?sort=created_date&state=opened) | #TODO for AppSec |
|
||||
|
||||
### Details
|
||||
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
<script>
|
||||
import { GlButton } from '@gitlab/ui';
|
||||
import { __ } from '~/locale';
|
||||
import createFlash from '~/flash';
|
||||
import getRefMixin from '~/repository/mixins/get_ref';
|
||||
import { updateElementsVisibility } from '../utils/dom';
|
||||
import blobControlsQuery from '../queries/blob_controls.query.graphql';
|
||||
|
||||
export default {
|
||||
i18n: {
|
||||
findFile: __('Find file'),
|
||||
blame: __('Blame'),
|
||||
history: __('History'),
|
||||
permalink: __('Permalink'),
|
||||
errorMessage: __('An error occurred while loading the blob controls.'),
|
||||
},
|
||||
buttonClassList: 'gl-sm-w-auto gl-w-full gl-sm-mt-0 gl-mt-3',
|
||||
components: {
|
||||
GlButton,
|
||||
},
|
||||
mixins: [getRefMixin],
|
||||
apollo: {
|
||||
project: {
|
||||
query: blobControlsQuery,
|
||||
variables() {
|
||||
return {
|
||||
projectPath: this.projectPath,
|
||||
filePath: this.filePath,
|
||||
ref: this.ref,
|
||||
};
|
||||
},
|
||||
skip() {
|
||||
return !this.filePath;
|
||||
},
|
||||
error() {
|
||||
createFlash({ message: this.$options.i18n.errorMessage });
|
||||
},
|
||||
},
|
||||
},
|
||||
props: {
|
||||
projectPath: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
project: {
|
||||
repository: {
|
||||
blobs: {
|
||||
nodes: [
|
||||
{
|
||||
findFilePath: null,
|
||||
blamePath: null,
|
||||
historyPath: null,
|
||||
permalinkPath: null,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
filePath() {
|
||||
const { path } = this.$route.params;
|
||||
updateElementsVisibility('.tree-controls', !path);
|
||||
return path;
|
||||
},
|
||||
blobInfo() {
|
||||
return this.project?.repository?.blobs?.nodes[0] || {};
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="filePath">
|
||||
<gl-button data-testid="find" :href="blobInfo.findFilePath" :class="$options.buttonClassList">
|
||||
{{ $options.i18n.findFile }}
|
||||
</gl-button>
|
||||
<gl-button data-testid="blame" :href="blobInfo.blamePath" :class="$options.buttonClassList">
|
||||
{{ $options.i18n.blame }}
|
||||
</gl-button>
|
||||
|
||||
<gl-button data-testid="history" :href="blobInfo.historyPath" :class="$options.buttonClassList">
|
||||
{{ $options.i18n.history }}
|
||||
</gl-button>
|
||||
|
||||
<gl-button
|
||||
data-testid="permalink"
|
||||
:href="blobInfo.permalinkPath"
|
||||
:class="$options.buttonClassList"
|
||||
>
|
||||
{{ $options.i18n.permalink }}
|
||||
</gl-button>
|
||||
</div>
|
||||
</template>
|
|
@ -9,6 +9,7 @@ import App from './components/app.vue';
|
|||
import Breadcrumbs from './components/breadcrumbs.vue';
|
||||
import DirectoryDownloadLinks from './components/directory_download_links.vue';
|
||||
import LastCommit from './components/last_commit.vue';
|
||||
import BlobControls from './components/blob_controls.vue';
|
||||
import apolloProvider from './graphql';
|
||||
import commitsQuery from './queries/commits.query.graphql';
|
||||
import projectPathQuery from './queries/project_path.query.graphql';
|
||||
|
@ -71,8 +72,26 @@ export default function setupVueRepositoryList() {
|
|||
},
|
||||
});
|
||||
|
||||
const initBlobControlsApp = () =>
|
||||
new Vue({
|
||||
el: document.getElementById('js-blob-controls'),
|
||||
router,
|
||||
apolloProvider,
|
||||
render(h) {
|
||||
return h(BlobControls, {
|
||||
props: {
|
||||
projectPath,
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
initLastCommitApp();
|
||||
|
||||
if (gon.features.refactorBlobViewer) {
|
||||
initBlobControlsApp();
|
||||
}
|
||||
|
||||
router.afterEach(({ params: { path } }) => {
|
||||
setTitle(path, ref, fullName);
|
||||
});
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
query getBlobControls($projectPath: ID!, $filePath: String!, $ref: String!) {
|
||||
project(fullPath: $projectPath) {
|
||||
id
|
||||
repository {
|
||||
blobs(paths: [$filePath], ref: $ref) {
|
||||
nodes {
|
||||
id
|
||||
findFilePath
|
||||
blamePath
|
||||
historyPath
|
||||
permalinkPath
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,31 +12,6 @@ export default {
|
|||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentlyHighlightedLine: null,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.scrollToLine();
|
||||
},
|
||||
methods: {
|
||||
scrollToLine(hash = window.location.hash) {
|
||||
const lineToHighlight = hash && this.$el.querySelector(hash);
|
||||
|
||||
if (!lineToHighlight) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.currentlyHighlightedLine) {
|
||||
this.currentlyHighlightedLine.classList.remove('hll');
|
||||
}
|
||||
|
||||
lineToHighlight.classList.add('hll');
|
||||
this.currentlyHighlightedLine = lineToHighlight;
|
||||
lineToHighlight.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
|
@ -46,9 +21,9 @@ export default {
|
|||
:id="`L${line}`"
|
||||
:key="line"
|
||||
class="diff-line-num"
|
||||
:href="`#L${line}`"
|
||||
:href="`#LC${line}`"
|
||||
:data-line-number="line"
|
||||
@click="scrollToLine(`#L${line}`)"
|
||||
@click="$emit('select-line', `#LC${line}`)"
|
||||
>
|
||||
<gl-icon :size="12" name="link" />
|
||||
{{ line }}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<script>
|
||||
import { GlSafeHtmlDirective } from '@gitlab/ui';
|
||||
import LineNumbers from '~/vue_shared/components/line_numbers.vue';
|
||||
import { sanitize } from '~/lib/dompurify';
|
||||
|
||||
const LINE_SELECT_CLASS_NAME = 'hll';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -46,7 +49,12 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
return highlightedContent;
|
||||
return this.wrapLines(highlightedContent);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
highlightedContent() {
|
||||
this.$nextTick(() => this.selectLine());
|
||||
},
|
||||
},
|
||||
async mounted() {
|
||||
|
@ -73,16 +81,39 @@ export default {
|
|||
|
||||
return languageDefinition;
|
||||
},
|
||||
wrapLines(content) {
|
||||
return (
|
||||
content &&
|
||||
content
|
||||
.split('\n')
|
||||
.map((line, i) => `<span id="LC${i + 1}" class="line">${line}</span>`)
|
||||
.join('\r\n')
|
||||
);
|
||||
},
|
||||
selectLine(hash = sanitize(window.location.hash)) {
|
||||
const lineToSelect = hash && this.$el.querySelector(hash);
|
||||
|
||||
if (!lineToSelect) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.$options.currentlySelectedLine) {
|
||||
this.$options.currentlySelectedLine.classList.remove(LINE_SELECT_CLASS_NAME);
|
||||
}
|
||||
|
||||
lineToSelect.classList.add(LINE_SELECT_CLASS_NAME);
|
||||
this.$options.currentlySelectedLine = lineToSelect;
|
||||
lineToSelect.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
},
|
||||
},
|
||||
userColorScheme: window.gon.user_color_scheme,
|
||||
currentlySelectedLine: null,
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="file-content code" :class="$options.userColorScheme">
|
||||
<line-numbers :lines="lineNumbers" />
|
||||
<pre
|
||||
class="code gl-pl-3!"
|
||||
><code v-safe-html="highlightedContent" class="gl-white-space-pre-wrap!"></code>
|
||||
<line-numbers :lines="lineNumbers" @select-line="selectLine" />
|
||||
<pre class="code"><code v-safe-html="highlightedContent"></code>
|
||||
</pre>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -74,6 +74,19 @@ module Types
|
|||
field :pipeline_editor_path, GraphQL::Types::String, null: true,
|
||||
description: 'Web path to edit .gitlab-ci.yml file.'
|
||||
|
||||
field :find_file_path, GraphQL::Types::String, null: true,
|
||||
description: 'Web path to find file.'
|
||||
|
||||
field :blame_path, GraphQL::Types::String, null: true,
|
||||
description: 'Web path to blob blame page.'
|
||||
|
||||
field :history_path, GraphQL::Types::String, null: true,
|
||||
description: 'Web path to blob history page.'
|
||||
|
||||
field :permalink_path, GraphQL::Types::String, null: true,
|
||||
description: 'Web path to blob permalink.',
|
||||
calls_gitaly: true
|
||||
|
||||
field :code_owners, [Types::UserType], null: true,
|
||||
description: 'List of code owners for the blob.',
|
||||
calls_gitaly: true
|
||||
|
|
|
@ -63,6 +63,22 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
|
|||
project_ci_pipeline_editor_path(project, branch_name: blob.commit_id) if can_collaborate_with_project?(project) && blob.path == project.ci_config_path_or_default
|
||||
end
|
||||
|
||||
def find_file_path
|
||||
url_helpers.project_find_file_path(project, ref_qualified_path)
|
||||
end
|
||||
|
||||
def blame_path
|
||||
url_helpers.project_blame_path(project, ref_qualified_path)
|
||||
end
|
||||
|
||||
def history_path
|
||||
url_helpers.project_commits_path(project, ref_qualified_path)
|
||||
end
|
||||
|
||||
def permalink_path
|
||||
url_helpers.project_blob_path(project, File.join(project.repository.commit.sha, blob.path))
|
||||
end
|
||||
|
||||
# Will be overridden in EE
|
||||
def code_owners
|
||||
[]
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#js-repo-breadcrumb{ data: breadcrumb_data_attributes }
|
||||
|
||||
#js-blob-controls
|
||||
.tree-controls
|
||||
.d-block.d-sm-flex.flex-wrap.align-items-start.gl-children-ml-sm-3<
|
||||
= render_if_exists 'projects/tree/lock_link'
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddClusterAgentIdToVulnerabilityReads < Gitlab::Database::Migration[1.0]
|
||||
# rubocop:disable Migration/AddLimitToTextColumns
|
||||
# limit is added in 20211216134134_add_text_limit_to_vulnerability_reads_cluster_agent_id.rb
|
||||
def change
|
||||
add_column :vulnerability_reads, :cluster_agent_id, :text
|
||||
end
|
||||
# rubocop:enable Migration/AddLimitToTextColumns
|
||||
end
|
|
@ -0,0 +1,13 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddTextLimitToVulnerabilityReadsClusterAgentId < Gitlab::Database::Migration[1.0]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_text_limit :vulnerability_reads, :cluster_agent_id, 10
|
||||
end
|
||||
|
||||
def down
|
||||
remove_text_limit :vulnerability_reads, :cluster_agent_id
|
||||
end
|
||||
end
|
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddIndexToClusterAgentId < Gitlab::Database::Migration[1.0]
|
||||
disable_ddl_transaction!
|
||||
|
||||
INDEX_NAME = "index_vulnerability_reads_on_cluster_agent_id"
|
||||
CLUSTER_IMAGE_SCANNING_REPORT_TYPE = 7
|
||||
|
||||
def up
|
||||
add_concurrent_index :vulnerability_reads, :cluster_agent_id, where: "report_type = #{CLUSTER_IMAGE_SCANNING_REPORT_TYPE}", name: INDEX_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
remove_concurrent_index_by_name :vulnerability_reads, INDEX_NAME
|
||||
end
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
a0c3a9746250aa67ffa8d05486fb6997c8d839b8bce7e870c0415c25600c5434
|
|
@ -0,0 +1 @@
|
|||
c53a1e4405187620929b8fc6877786cb713d13218f7385d1b9b3daaf6072fa05
|
|
@ -0,0 +1 @@
|
|||
9b733363587957b4044bc6806dfbb9632ec7f5f6ffc8c82280e025012b8acb5a
|
|
@ -20893,7 +20893,9 @@ CREATE TABLE vulnerability_reads (
|
|||
resolved_on_default_branch boolean DEFAULT false NOT NULL,
|
||||
uuid uuid NOT NULL,
|
||||
location_image text,
|
||||
CONSTRAINT check_380451bdbe CHECK ((char_length(location_image) <= 2048))
|
||||
cluster_agent_id text,
|
||||
CONSTRAINT check_380451bdbe CHECK ((char_length(location_image) <= 2048)),
|
||||
CONSTRAINT check_a105eb825a CHECK ((char_length(cluster_agent_id) <= 10))
|
||||
);
|
||||
|
||||
CREATE SEQUENCE vulnerability_reads_id_seq
|
||||
|
@ -27878,6 +27880,8 @@ CREATE UNIQUE INDEX index_vulnerability_occurrences_on_uuid ON vulnerability_occ
|
|||
|
||||
CREATE INDEX index_vulnerability_occurrences_on_vulnerability_id ON vulnerability_occurrences USING btree (vulnerability_id);
|
||||
|
||||
CREATE INDEX index_vulnerability_reads_on_cluster_agent_id ON vulnerability_reads USING btree (cluster_agent_id) WHERE (report_type = 7);
|
||||
|
||||
CREATE INDEX index_vulnerability_reads_on_location_image ON vulnerability_reads USING btree (location_image) WHERE (report_type = ANY (ARRAY[2, 7]));
|
||||
|
||||
CREATE INDEX index_vulnerability_reads_on_scanner_id ON vulnerability_reads USING btree (scanner_id);
|
||||
|
|
|
@ -14348,6 +14348,7 @@ Returns [`Tree`](#tree).
|
|||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="repositoryblobblamepath"></a>`blamePath` | [`String`](#string) | Web path to blob blame page. |
|
||||
| <a id="repositoryblobcancurrentuserpushtobranch"></a>`canCurrentUserPushToBranch` | [`Boolean`](#boolean) | Whether the current user can push to the branch. |
|
||||
| <a id="repositoryblobcanmodifyblob"></a>`canModifyBlob` | [`Boolean`](#boolean) | Whether the current user can modify the blob. |
|
||||
| <a id="repositoryblobcodeowners"></a>`codeOwners` | [`[UserCore!]`](#usercore) | List of code owners for the blob. |
|
||||
|
@ -14355,7 +14356,9 @@ Returns [`Tree`](#tree).
|
|||
| <a id="repositoryblobexternalstorage"></a>`externalStorage` | [`String`](#string) | External storage being used, if enabled (for instance, 'LFS'). |
|
||||
| <a id="repositoryblobexternalstorageurl"></a>`externalStorageUrl` | [`String`](#string) | Web path to download the raw blob via external storage, if enabled. |
|
||||
| <a id="repositoryblobfiletype"></a>`fileType` | [`String`](#string) | Expected format of the blob based on the extension. |
|
||||
| <a id="repositoryblobfindfilepath"></a>`findFilePath` | [`String`](#string) | Web path to find file. |
|
||||
| <a id="repositoryblobforkandeditpath"></a>`forkAndEditPath` | [`String`](#string) | Web path to edit this blob using a forked project. |
|
||||
| <a id="repositoryblobhistorypath"></a>`historyPath` | [`String`](#string) | Web path to blob history page. |
|
||||
| <a id="repositoryblobid"></a>`id` | [`ID!`](#id) | ID of the blob. |
|
||||
| <a id="repositoryblobideeditpath"></a>`ideEditPath` | [`String`](#string) | Web path to edit this blob in the Web IDE. |
|
||||
| <a id="repositoryblobideforkandeditpath"></a>`ideForkAndEditPath` | [`String`](#string) | Web path to edit this blob in the Web IDE using a forked project. |
|
||||
|
@ -14364,6 +14367,7 @@ Returns [`Tree`](#tree).
|
|||
| <a id="repositoryblobname"></a>`name` | [`String`](#string) | Blob name. |
|
||||
| <a id="repositorybloboid"></a>`oid` | [`String!`](#string) | OID of the blob. |
|
||||
| <a id="repositoryblobpath"></a>`path` | [`String!`](#string) | Path of the blob. |
|
||||
| <a id="repositoryblobpermalinkpath"></a>`permalinkPath` | [`String`](#string) | Web path to blob permalink. |
|
||||
| <a id="repositoryblobpipelineeditorpath"></a>`pipelineEditorPath` | [`String`](#string) | Web path to edit .gitlab-ci.yml file. |
|
||||
| <a id="repositoryblobplaindata"></a>`plainData` | [`String`](#string) | Blob plain highlighted data. |
|
||||
| <a id="repositoryblobrawblob"></a>`rawBlob` | [`String`](#string) | Raw content of the blob. |
|
||||
|
|
|
@ -55,8 +55,8 @@ Create a personal access token to authorize Jenkins to access GitLab.
|
|||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. Create a [personal access token](../user/profile/personal_access_tokens.md) with
|
||||
the **API** scope checkbox selected.
|
||||
1. Create a [personal access token](../user/profile/personal_access_tokens.md) and
|
||||
select the **API** scope.
|
||||
1. Copy the personal access token. You need it to [configure the Jenkins server](#configure-the-jenkins-server).
|
||||
|
||||
## Configure the Jenkins server
|
||||
|
@ -67,11 +67,11 @@ authorize the connection to GitLab.
|
|||
1. On the Jenkins server, select **Manage Jenkins > Manage Plugins**.
|
||||
1. Install the [Jenkins GitLab Plugin](https://wiki.jenkins.io/display/JENKINS/GitLab+Plugin).
|
||||
1. Select **Manage Jenkins > Configure System**.
|
||||
1. In the **GitLab** section, select the **Enable authentication for '/project' end-point** checkbox.
|
||||
1. In the **GitLab** section, select **Enable authentication for '/project' end-point**.
|
||||
1. Select **Add**, then choose **Jenkins Credential Provider**.
|
||||
1. Select **GitLab API token** as the token type.
|
||||
1. Enter the GitLab personal access token's value in the **API Token** field and select **Add**.
|
||||
1. Enter the GitLab server's URL in the **GitLab host URL** field.
|
||||
1. Enter the GitLab personal access token's value in **API Token** and select **Add**.
|
||||
1. Enter the GitLab server's URL in **GitLab host URL**.
|
||||
1. To test the connection, select **Test Connection**.
|
||||
|
||||
![Jenkins plugin configuration](img/jenkins_gitlab_plugin_config.png)
|
||||
|
@ -89,7 +89,7 @@ Set up the Jenkins project you intend to run your build on.
|
|||
We recommend a Freestyle project, because the Jenkins plugin updates the build status on
|
||||
GitLab. In a Pipeline project, you must configure a script to update the status on GitLab.
|
||||
1. Choose your GitLab connection from the dropdown list.
|
||||
1. Select the **Build when a change is pushed to GitLab** checkbox.
|
||||
1. Select **Build when a change is pushed to GitLab**.
|
||||
1. Select the following checkboxes:
|
||||
- **Accepted Merge Request Events**
|
||||
- **Closed Merge Request Events**
|
||||
|
@ -153,10 +153,10 @@ If you are unable to provide GitLab with your Jenkins server login, you can use
|
|||
to integrate GitLab and Jenkins.
|
||||
|
||||
1. In the configuration of your Jenkins job, in the GitLab configuration section, select **Advanced**.
|
||||
1. Under the **Secret Token** field, select **Generate**.
|
||||
1. Under **Secret Token**, select **Generate**.
|
||||
1. Copy the token, and save the job configuration.
|
||||
1. In GitLab, create a webhook for your project, enter the trigger URL
|
||||
(such as `https://JENKINS_URL/project/YOUR_JOB`) and paste the token in the **Secret Token** field.
|
||||
(such as `https://JENKINS_URL/project/YOUR_JOB`) and paste the token in **Secret Token**.
|
||||
1. To test the webhook, select **Test**.
|
||||
|
||||
## Related topics
|
||||
|
@ -178,24 +178,31 @@ If you get this error message while configuring GitLab, the following are possib
|
|||
- The Jenkins instance is at a local address and is not included in the
|
||||
[GitLab installation's allowlist](../security/webhooks.md#allowlist-for-local-requests).
|
||||
- The credentials for the Jenkins instance do not have sufficient access or are invalid.
|
||||
- The **Enable authentication for ‘/project’ end-point checkbox** is not selected in your [Jenkin's plugin configuration](#configure-the-jenkins-server).
|
||||
- The **Enable authentication for ‘/project’ end-point** checkbox is not selected in your [Jenkin's plugin configuration](#configure-the-jenkins-server).
|
||||
|
||||
### Error in merge requests - "Could not connect to the CI server"
|
||||
|
||||
This integration relies on Jenkins reporting the build status back to GitLab via
|
||||
the [Commit Status API](../api/commits.md#commit-status).
|
||||
You might get the `Could not connect to the CI server` error if GitLab did not
|
||||
receive a build status update from Jenkins via the [Commit Status API](../api/commits.md#commit-status).
|
||||
|
||||
The error 'Could not connect to the CI server' usually means that GitLab did not
|
||||
receive a build status update via the API. Either Jenkins was not properly
|
||||
configured or there was an error reporting the status via the API.
|
||||
This issue occurs when Jenkins is not properly
|
||||
configured or there is an error reporting the status via the API.
|
||||
|
||||
1. [Configure the Jenkins server](#configure-the-jenkins-server) for GitLab API access
|
||||
To fix this issue, ensure you:
|
||||
|
||||
1. [Configure the Jenkins server](#configure-the-jenkins-server) for GitLab API access.
|
||||
1. [Configure the Jenkins project](#configure-the-jenkins-project), including the
|
||||
'Publish build status to GitLab' post-build action.
|
||||
|
||||
### Merge Request event does not trigger a Jenkins Pipeline
|
||||
### Merge request event does not trigger a Jenkins pipeline
|
||||
|
||||
Check [service hook logs](../user/project/integrations/overview.md#troubleshooting-integrations) for request failures or check the `/var/log/gitlab/gitlab-rails/production.log` file for messages like:
|
||||
This issue can occur when the request exceeds the
|
||||
[webhook timeout](../user/project/integrations/webhooks.md#webhook-fails-or-multiple-webhook-requests-are-triggered),
|
||||
which is set to 10 seconds by default.
|
||||
|
||||
Check the [service hook logs](../user/project/integrations/overview.md#troubleshooting-integrations)
|
||||
for request failures or check the `/var/log/gitlab/gitlab-rails/production.log`
|
||||
file for messages like:
|
||||
|
||||
```plaintext
|
||||
WebHook Error => Net::ReadTimeout
|
||||
|
@ -207,30 +214,38 @@ or
|
|||
WebHook Error => execution expired
|
||||
```
|
||||
|
||||
If those are present, the request is exceeding the
|
||||
[webhook timeout](../user/project/integrations/webhooks.md#webhook-fails-or-multiple-webhook-requests-are-triggered),
|
||||
which is set to 10 seconds by default.
|
||||
|
||||
To fix this the `gitlab_rails['webhook_timeout']` value must be increased
|
||||
in the `gitlab.rb` configuration file, followed by the [`gitlab-ctl reconfigure` command](../administration/restart_gitlab.md).
|
||||
|
||||
If you don't find the errors above, but do find *duplicate* entries like below (in `/var/log/gitlab/gitlab-rail`),
|
||||
[webhook requests may be timing out](../user/project/integrations/webhooks.md#webhook-fails-or-multiple-webhook-requests-are-triggered):
|
||||
Or check for duplicate messages in `/var/log/gitlab/gitlab-rail`, like:
|
||||
|
||||
```plaintext
|
||||
2019-10-25_04:22:41.25630 2019-10-25T04:22:41.256Z 1584 TID-ovowh4tek WebHookWorker JID-941fb7f40b69dff3d833c99b INFO: start
|
||||
2019-10-25_04:22:41.25630 2019-10-25T04:22:41.256Z 1584 TID-ovowh4tek WebHookWorker JID-941fb7f40b69dff3d833c99b INFO: start
|
||||
```
|
||||
|
||||
To fix this issue:
|
||||
|
||||
1. Increase the `gitlab_rails['webhook_timeout']` value in the `gitlab.rb`
|
||||
configuration file.
|
||||
1. [Restart](../administration/restart_gitlab.md) GitLab:
|
||||
|
||||
```shell
|
||||
gitlab-ctl reconfigure
|
||||
```
|
||||
|
||||
### Enable job logs in Jenkins
|
||||
|
||||
When troubleshooting an integration issue, it is useful to enable job logs in Jenkins to see more details about what is happening under the hood.
|
||||
To troubleshoot an integration issue, you can enable job logs in Jenkins to get
|
||||
more details about your builds.
|
||||
|
||||
To enable job logs in Jenkins:
|
||||
|
||||
1. Go to **Dashboard > Manage Jenkins > System Log**.
|
||||
1. Select **Add new log recorder**.
|
||||
1. Enter a name for the log recorder.
|
||||
1. On the next screen, select **Add** and enter `org.jenkinsci.plugins.workflow.job` in the text field.
|
||||
1. On the next screen, select **Add** and enter `org.jenkinsci.plugins.workflow.job`.
|
||||
1. Make sure that the Log Level is **All** and select **Save**.
|
||||
|
||||
Now, after you run a build, you can go to the loggers page (**Dashboard > Manage Jenkins > System Log**), select your logger, and check the logs.
|
||||
To view your logs:
|
||||
|
||||
1. Run a build.
|
||||
1. Go to **Dashboard > Manage Jenkins > System Log**.
|
||||
1. Select your logger and check the logs.
|
||||
|
|
|
@ -3875,6 +3875,9 @@ msgstr ""
|
|||
msgid "An error occurred while loading the access tokens form, please try again."
|
||||
msgstr ""
|
||||
|
||||
msgid "An error occurred while loading the blob controls."
|
||||
msgstr ""
|
||||
|
||||
msgid "An error occurred while loading the data. Please try again."
|
||||
msgstr ""
|
||||
|
||||
|
@ -25663,6 +25666,9 @@ msgstr ""
|
|||
msgid "Period in seconds"
|
||||
msgstr ""
|
||||
|
||||
msgid "Permalink"
|
||||
msgstr ""
|
||||
|
||||
msgid "Permanently delete project"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -95,10 +95,7 @@ module QA
|
|||
#
|
||||
# @return [Fog::Storage::GoogleJSON]
|
||||
def client
|
||||
@client ||= Fog::Storage::Google.new(
|
||||
google_project: PROJECT,
|
||||
google_json_key_location: gcs_credentials
|
||||
)
|
||||
@client ||= Fog::Storage::Google.new(google_project: PROJECT, **gcs_credentials)
|
||||
end
|
||||
|
||||
# Base path of knapsack report
|
||||
|
@ -132,13 +129,16 @@ module QA
|
|||
@report_name ||= ENV["CI_JOB_NAME"].split(" ").first.tr(":", "-")
|
||||
end
|
||||
|
||||
# Path to GCS credentials json
|
||||
# GCS credentials json
|
||||
#
|
||||
# @return [String]
|
||||
# @return [Hash]
|
||||
def gcs_credentials
|
||||
@gcs_credentials ||= ENV["QA_KNAPSACK_REPORT_GCS_CREDENTIALS"] || raise(
|
||||
json_key = ENV["QA_KNAPSACK_REPORT_GCS_CREDENTIALS"] || raise(
|
||||
"QA_KNAPSACK_REPORT_GCS_CREDENTIALS env variable is required!"
|
||||
)
|
||||
return { google_json_key_location: json_key } if File.exist?(json_key)
|
||||
|
||||
{ google_json_key_string: json_key }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -88,7 +88,8 @@ RSpec.describe 'Database schema' do
|
|||
users_star_projects: %w[user_id],
|
||||
vulnerability_identifiers: %w[external_id],
|
||||
vulnerability_scanners: %w[external_id],
|
||||
security_scans: %w[pipeline_id] # foreign key is not added as ci_pipeline table will be moved into different db soon
|
||||
security_scans: %w[pipeline_id], # foreign key is not added as ci_pipeline table will be moved into different db soon
|
||||
vulnerability_reads: %w[cluster_agent_id]
|
||||
}.with_indifferent_access.freeze
|
||||
|
||||
context 'for table' do
|
||||
|
|
|
@ -319,6 +319,8 @@ describe('AlertsSettingsForm', () => {
|
|||
const validPayloadMsg = payload === emptySamplePayload ? 'not valid' : 'valid';
|
||||
|
||||
it(`textarea should be ${enabledState} when payload reset ${payloadResetMsg} and payload is ${validPayloadMsg}`, async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
currentIntegration: { payloadExample: payload },
|
||||
resetPayloadAndMappingConfirmed,
|
||||
|
@ -345,6 +347,8 @@ describe('AlertsSettingsForm', () => {
|
|||
: 'was not confirmed';
|
||||
|
||||
it(`shows ${caption} button when sample payload ${samplePayloadMsg} and payload reset ${payloadResetMsg}`, async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
currentIntegration: {
|
||||
payloadExample,
|
||||
|
@ -359,6 +363,8 @@ describe('AlertsSettingsForm', () => {
|
|||
|
||||
describe('Parsing payload', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
resetPayloadAndMappingConfirmed: true,
|
||||
});
|
||||
|
@ -456,6 +462,8 @@ describe('AlertsSettingsForm', () => {
|
|||
});
|
||||
|
||||
it('should be able to submit when form is dirty', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
currentIntegration: { type: typeSet.http, name: 'Existing integration' },
|
||||
});
|
||||
|
@ -466,6 +474,8 @@ describe('AlertsSettingsForm', () => {
|
|||
});
|
||||
|
||||
it('should not be able to submit when form is pristine', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
currentIntegration: { type: typeSet.http, name: 'Existing integration' },
|
||||
});
|
||||
|
|
|
@ -126,6 +126,8 @@ describe('ProjectsDropdownFilter component', () => {
|
|||
});
|
||||
|
||||
it('applies the correct queryParams when making an api call', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ searchTerm: 'gitlab' });
|
||||
|
||||
expect(spyQuery).toHaveBeenCalledTimes(1);
|
||||
|
@ -204,6 +206,8 @@ describe('ProjectsDropdownFilter component', () => {
|
|||
await createWithMockDropdown({ multiSelect: true });
|
||||
|
||||
selectDropdownItemAtIndex(0);
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ searchTerm: 'this is a very long search string' });
|
||||
});
|
||||
|
||||
|
|
|
@ -44,6 +44,8 @@ describe('Blob Header Editing', () => {
|
|||
const inputComponent = wrapper.find(GlFormInput);
|
||||
const newValue = 'bar.txt';
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
name: newValue,
|
||||
});
|
||||
|
|
|
@ -96,6 +96,8 @@ describe('BoardsSelector', () => {
|
|||
});
|
||||
|
||||
wrapper.vm.$apollo.addSmartQuery = jest.fn((_, options) => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
[options.loadingKey]: true,
|
||||
});
|
||||
|
@ -161,6 +163,8 @@ describe('BoardsSelector', () => {
|
|||
// Emits gl-dropdown show event to simulate the dropdown is opened at initialization time
|
||||
findDropdown().vm.$emit('show');
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({
|
||||
loadingBoards: false,
|
||||
loadingRecentBoards: false,
|
||||
|
@ -176,6 +180,8 @@ describe('BoardsSelector', () => {
|
|||
|
||||
describe('filtering', () => {
|
||||
beforeEach(async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
boards,
|
||||
});
|
||||
|
@ -208,6 +214,8 @@ describe('BoardsSelector', () => {
|
|||
|
||||
describe('recent boards section', () => {
|
||||
it('shows only when boards are greater than 10', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
boards,
|
||||
});
|
||||
|
@ -217,6 +225,8 @@ describe('BoardsSelector', () => {
|
|||
});
|
||||
|
||||
it('does not show when boards are less than 10', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
boards: boards.slice(0, 5),
|
||||
});
|
||||
|
@ -226,6 +236,8 @@ describe('BoardsSelector', () => {
|
|||
});
|
||||
|
||||
it('does not show when recentBoards api returns empty array', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
recentBoards: [],
|
||||
});
|
||||
|
|
|
@ -66,6 +66,8 @@ describe('CI Lint', () => {
|
|||
it('validate action calls mutation with dry run', async () => {
|
||||
const dryRunEnabled = true;
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ dryRun: dryRunEnabled });
|
||||
|
||||
findValidateBtn().vm.$emit('click');
|
||||
|
|
|
@ -82,6 +82,8 @@ describe('ClusterIntegrationForm', () => {
|
|||
.then(() => {
|
||||
// setData is a bad approach because it changes the internal implementation which we should not touch
|
||||
// but our GlFormInput lacks the ability to set a new value.
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ toggleEnabled: !defaultStoreValues.enabled });
|
||||
})
|
||||
.then(() => {
|
||||
|
@ -93,6 +95,8 @@ describe('ClusterIntegrationForm', () => {
|
|||
return wrapper.vm
|
||||
.$nextTick()
|
||||
.then(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ envScope: `${defaultStoreValues.environmentScope}1` });
|
||||
})
|
||||
.then(() => {
|
||||
|
|
|
@ -272,6 +272,8 @@ describe('Clusters', () => {
|
|||
describe('when updating currentPage', () => {
|
||||
beforeEach(() => {
|
||||
mockPollingApi(200, apiData, paginationHeader(totalSecondPage, perPage, 2));
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ currentPage: 2 });
|
||||
return axios.waitForAll();
|
||||
});
|
||||
|
|
|
@ -92,6 +92,8 @@ describe('Pipelines table in Commits and Merge requests', () => {
|
|||
it('should make an API request when using pagination', async () => {
|
||||
jest.spyOn(wrapper.vm, 'updateContent').mockImplementation(() => {});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({
|
||||
store: {
|
||||
state: {
|
||||
|
|
|
@ -206,6 +206,8 @@ describe('ClusterFormDropdown', () => {
|
|||
const searchQuery = secondItem.name;
|
||||
|
||||
wrapper.setProps({ items });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ searchQuery });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
|
|
@ -67,6 +67,8 @@ describe('ServiceCredentialsForm', () => {
|
|||
});
|
||||
|
||||
it('enables submit button when role ARN is not provided', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ roleArn: '123' });
|
||||
|
||||
return vm.vm.$nextTick().then(() => {
|
||||
|
@ -75,6 +77,8 @@ describe('ServiceCredentialsForm', () => {
|
|||
});
|
||||
|
||||
it('dispatches createRole action when submit button is clicked', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ roleArn: '123' }); // set role ARN to enable button
|
||||
|
||||
findSubmitButton().vm.$emit('click', new Event('click'));
|
||||
|
@ -84,6 +88,8 @@ describe('ServiceCredentialsForm', () => {
|
|||
|
||||
describe('when is creating role', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ roleArn: '123' }); // set role ARN to enable button
|
||||
|
||||
state.isCreatingRole = true;
|
||||
|
|
|
@ -79,6 +79,8 @@ describe('GkeMachineTypeDropdown', () => {
|
|||
store = createStore();
|
||||
wrapper = createComponent(store);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: true });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
|
|
@ -83,6 +83,8 @@ describe('GkeProjectIdDropdown', () => {
|
|||
it('returns default toggle text', () => {
|
||||
bootstrap();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: false });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -99,6 +101,8 @@ describe('GkeProjectIdDropdown', () => {
|
|||
hasProject: () => true,
|
||||
},
|
||||
);
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: false });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -110,6 +114,8 @@ describe('GkeProjectIdDropdown', () => {
|
|||
bootstrap({
|
||||
projects: null,
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: false });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
|
|
@ -47,6 +47,8 @@ describe('GkeZoneDropdown', () => {
|
|||
|
||||
describe('isLoading', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: true });
|
||||
return wrapper.vm.$nextTick();
|
||||
});
|
||||
|
|
|
@ -63,6 +63,8 @@ describe('ValueStreamMetrics', () => {
|
|||
it('renders hidden GlSingleStat components for each metric', async () => {
|
||||
await waitForPromises();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isLoading: true });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
|
|
@ -26,6 +26,8 @@ describe('Deploy freeze timezone dropdown', () => {
|
|||
},
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ searchTerm });
|
||||
};
|
||||
|
||||
|
|
|
@ -117,6 +117,8 @@ describe('Design overlay component', () => {
|
|||
it.each([notes[0].discussion.notes.nodes[1], notes[0].discussion.notes.nodes[0]])(
|
||||
'should not apply inactive class to the pin for the active discussion',
|
||||
(note) => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
activeDiscussion: {
|
||||
id: note.id,
|
||||
|
@ -131,6 +133,8 @@ describe('Design overlay component', () => {
|
|||
);
|
||||
|
||||
it('should apply inactive class to all pins besides the active one', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
activeDiscussion: {
|
||||
id: notes[0].id,
|
||||
|
@ -212,6 +216,8 @@ describe('Design overlay component', () => {
|
|||
const { position } = note;
|
||||
const newCoordinates = { x: 20, y: 20 };
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
movingNoteNewPosition: {
|
||||
...position,
|
||||
|
@ -345,6 +351,8 @@ describe('Design overlay component', () => {
|
|||
});
|
||||
|
||||
const newCoordinates = { x: 20, y: 20 };
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
movingNoteStartPosition: {
|
||||
...notes[0].position,
|
||||
|
@ -368,6 +376,8 @@ describe('Design overlay component', () => {
|
|||
it('should calculate delta correctly from state', () => {
|
||||
createComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
movingNoteStartPosition: {
|
||||
clientX: 10,
|
||||
|
|
|
@ -39,6 +39,8 @@ describe('Design management design presentation component', () => {
|
|||
stubs,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
wrapper.element.scrollTo = jest.fn();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ describe('Design management large image component', () => {
|
|||
wrapper = shallowMount(DesignImage, {
|
||||
propsData,
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,8 @@ describe('Design management pagination component', () => {
|
|||
});
|
||||
|
||||
it('renders navigation buttons', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
designCollection: { designs: [{ id: '1' }, { id: '2' }] },
|
||||
});
|
||||
|
@ -53,6 +55,8 @@ describe('Design management pagination component', () => {
|
|||
|
||||
describe('keyboard buttons navigation', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
designCollection: { designs: [{ filename: '1' }, { filename: '2' }, { filename: '3' }] },
|
||||
});
|
||||
|
|
|
@ -48,6 +48,8 @@ describe('Design management toolbar component', () => {
|
|||
},
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
permissions: {
|
||||
createDesign,
|
||||
|
|
|
@ -34,6 +34,8 @@ describe('Design management design version dropdown component', () => {
|
|||
stubs: { GlSprintf },
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
allVersions: maxVersions > -1 ? mockAllVersions.slice(0, maxVersions) : mockAllVersions,
|
||||
});
|
||||
|
|
|
@ -317,6 +317,8 @@ describe('Design management design index page', () => {
|
|||
describe('when no design exists for given version', () => {
|
||||
it('redirects to /designs', () => {
|
||||
createComponent({ loading: true });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
allVersions: mockAllVersions,
|
||||
});
|
||||
|
|
|
@ -204,6 +204,8 @@ describe('Design management index page', () => {
|
|||
it('renders error', async () => {
|
||||
createComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ error: true });
|
||||
|
||||
await nextTick();
|
||||
|
@ -381,6 +383,8 @@ describe('Design management index page', () => {
|
|||
|
||||
it('updates state appropriately after upload complete', async () => {
|
||||
createComponent({ stubs: { GlEmptyState } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ filesToBeSaved: [{ name: 'test' }] });
|
||||
|
||||
wrapper.vm.onUploadDesignDone(designUploadMutationCreatedResponse);
|
||||
|
@ -393,6 +397,8 @@ describe('Design management index page', () => {
|
|||
|
||||
it('updates state appropriately after upload error', async () => {
|
||||
createComponent({ stubs: { GlEmptyState } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ filesToBeSaved: [{ name: 'test' }] });
|
||||
|
||||
wrapper.vm.onUploadDesignError();
|
||||
|
|
|
@ -26,6 +26,8 @@ describe('Emoji category component', () => {
|
|||
});
|
||||
|
||||
it('renders group', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ renderGroup: true });
|
||||
|
||||
expect(wrapper.find(EmojiGroup).attributes('rendergroup')).toBe('true');
|
||||
|
|
|
@ -28,6 +28,8 @@ async function factory(render, propsData = { searchValue: '' }) {
|
|||
await nextTick();
|
||||
|
||||
if (render) {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ render: true });
|
||||
|
||||
// Wait for component to render
|
||||
|
|
|
@ -173,6 +173,8 @@ describe('ErrorDetails', () => {
|
|||
beforeEach(() => {
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
mountComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
id: 'gid://gitlab/Gitlab::ErrorTracking::DetailedError/129381',
|
||||
|
@ -203,6 +205,8 @@ describe('ErrorDetails', () => {
|
|||
const culprit = '<script>console.log("surprise!")</script>';
|
||||
beforeEach(() => {
|
||||
store.state.details.loadingStacktrace = false;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
culprit,
|
||||
|
@ -222,6 +226,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
describe('Badges', () => {
|
||||
it('should show language and error level badges', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
tags: { level: 'error', logger: 'ruby' },
|
||||
|
@ -233,6 +239,8 @@ describe('ErrorDetails', () => {
|
|||
});
|
||||
|
||||
it('should NOT show the badge if the tag is not present', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
tags: { level: 'error' },
|
||||
|
@ -246,6 +254,8 @@ describe('ErrorDetails', () => {
|
|||
it.each(Object.keys(severityLevel))(
|
||||
'should set correct severity level variant for %s badge',
|
||||
(level) => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
tags: { level: severityLevel[level] },
|
||||
|
@ -260,6 +270,8 @@ describe('ErrorDetails', () => {
|
|||
);
|
||||
|
||||
it('should fallback for ERROR severityLevelVariant when severityLevel is unknown', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
tags: { level: 'someNewErrorLevel' },
|
||||
|
@ -408,6 +420,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
it('should show alert with closed issueId', () => {
|
||||
const closedIssueId = 123;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isAlertVisible: true,
|
||||
closedIssueId,
|
||||
|
@ -429,6 +443,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
describe('is present', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
gitlabIssuePath,
|
||||
|
@ -451,6 +467,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
describe('is not present', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
gitlabIssuePath: null,
|
||||
|
@ -480,6 +498,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
it('should display a link', () => {
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
gitlabCommit,
|
||||
|
@ -493,6 +513,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
it('should not display a link', () => {
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: {
|
||||
gitlabCommit: null,
|
||||
|
@ -519,6 +541,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
it('should display links to Sentry', async () => {
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({
|
||||
error: {
|
||||
firstReleaseVersion,
|
||||
|
@ -535,6 +559,8 @@ describe('ErrorDetails', () => {
|
|||
|
||||
it('should display links to GitLab when integrated', async () => {
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({
|
||||
error: {
|
||||
firstReleaseVersion,
|
||||
|
@ -557,6 +583,8 @@ describe('ErrorDetails', () => {
|
|||
jest.spyOn(Tracking, 'event');
|
||||
mocks.$apollo.queries.error.loading = false;
|
||||
mountComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
error: { externalUrl },
|
||||
});
|
||||
|
|
|
@ -396,6 +396,8 @@ describe('ErrorTrackingList', () => {
|
|||
GlPagination: false,
|
||||
},
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ pageValue: 2 });
|
||||
return wrapper.vm.$nextTick();
|
||||
});
|
||||
|
|
|
@ -73,6 +73,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
const createInitializedComponent = () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
sandpackReady: true,
|
||||
manager: {
|
||||
|
@ -202,6 +204,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
it('returns false if loading and mainEntry exists', () => {
|
||||
createComponent({ getters: { packageJson: dummyPackageJson } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: true });
|
||||
|
||||
expect(wrapper.vm.showPreview).toBe(false);
|
||||
|
@ -209,6 +213,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
it('returns true if not loading and mainEntry exists', () => {
|
||||
createComponent({ getters: { packageJson: dummyPackageJson } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: false });
|
||||
|
||||
expect(wrapper.vm.showPreview).toBe(true);
|
||||
|
@ -218,12 +224,16 @@ describe('IDE clientside preview', () => {
|
|||
describe('showEmptyState', () => {
|
||||
it('returns true if no mainEntry exists', () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: false });
|
||||
expect(wrapper.vm.showEmptyState).toBe(true);
|
||||
});
|
||||
|
||||
it('returns false if loading', () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: true });
|
||||
|
||||
expect(wrapper.vm.showEmptyState).toBe(false);
|
||||
|
@ -231,6 +241,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
it('returns false if not loading and mainEntry exists', () => {
|
||||
createComponent({ getters: { packageJson: dummyPackageJson } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: false });
|
||||
|
||||
expect(wrapper.vm.showEmptyState).toBe(false);
|
||||
|
@ -307,6 +319,8 @@ describe('IDE clientside preview', () => {
|
|||
describe('update', () => {
|
||||
it('initializes manager if manager is empty', () => {
|
||||
createComponent({ getters: { packageJson: dummyPackageJson } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ sandpackReady: true });
|
||||
wrapper.vm.update();
|
||||
|
||||
|
@ -340,6 +354,8 @@ describe('IDE clientside preview', () => {
|
|||
describe('template', () => {
|
||||
it('renders ide-preview element when showPreview is true', () => {
|
||||
createComponent({ getters: { packageJson: dummyPackageJson } });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: false });
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -349,6 +365,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
it('renders empty state', () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: false });
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -360,6 +378,8 @@ describe('IDE clientside preview', () => {
|
|||
|
||||
it('renders loading icon', () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: true });
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
|
|
@ -128,6 +128,8 @@ describe('IDE Terminal', () => {
|
|||
canScrollDown: false,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ canScrollUp: true, canScrollDown: true });
|
||||
|
||||
return nextTick().then(() => {
|
||||
|
|
|
@ -474,6 +474,8 @@ describe('InviteMembersModal', () => {
|
|||
beforeEach(() => {
|
||||
createInviteMembersToGroupWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ newUsersToInvite: [user1] });
|
||||
});
|
||||
|
||||
|
@ -644,6 +646,8 @@ describe('InviteMembersModal', () => {
|
|||
beforeEach(() => {
|
||||
createInviteMembersToGroupWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ newUsersToInvite: [user3] });
|
||||
});
|
||||
|
||||
|
@ -712,6 +716,8 @@ describe('InviteMembersModal', () => {
|
|||
it('displays the invalid syntax error if one of the emails is invalid', async () => {
|
||||
createInviteMembersToGroupWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ newUsersToInvite: [user3, user4] });
|
||||
mockInvitationsApi(httpStatus.CREATED, invitationsApiResponse.ERROR_EMAIL_INVALID);
|
||||
|
||||
|
@ -787,6 +793,8 @@ describe('InviteMembersModal', () => {
|
|||
beforeEach(() => {
|
||||
createInviteMembersToGroupWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ newUsersToInvite: [user1, user3] });
|
||||
|
||||
mockInvitationsApi(httpStatus.BAD_REQUEST, invitationsApiResponse.EMAIL_INVALID);
|
||||
|
@ -815,6 +823,8 @@ describe('InviteMembersModal', () => {
|
|||
beforeEach(() => {
|
||||
createComponent({ groupToBeSharedWith: sharedGroup });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ inviteeType: 'group' });
|
||||
wrapper.vm.$toast = { show: jest.fn() };
|
||||
jest.spyOn(Api, 'groupShareWithGroup').mockResolvedValue({ data: groupPostData });
|
||||
|
@ -837,6 +847,8 @@ describe('InviteMembersModal', () => {
|
|||
beforeEach(() => {
|
||||
createInviteGroupToGroupWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ groupToBeSharedWith: sharedGroup });
|
||||
wrapper.vm.$toast = { show: jest.fn() };
|
||||
|
||||
|
|
|
@ -169,6 +169,8 @@ describe('RelatedIssuableItem', () => {
|
|||
});
|
||||
|
||||
it('renders disabled button when removeDisabled', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ removeDisabled: true });
|
||||
await wrapper.vm.$nextTick();
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('renders component', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -47,6 +49,8 @@ describe('Issue title suggestions component', () => {
|
|||
|
||||
it('does not render with empty search', () => {
|
||||
wrapper.setProps({ search: '' });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -55,6 +59,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('does not render when loading', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
...data,
|
||||
loading: 1,
|
||||
|
@ -66,6 +72,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('does not render with empty issues data', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ issues: [] });
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -74,6 +82,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('renders list of issues', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -82,6 +92,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('adds margin class to first item', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -90,6 +102,8 @@ describe('Issue title suggestions component', () => {
|
|||
});
|
||||
|
||||
it('does not add margin class to last item', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData(data);
|
||||
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
|
|
@ -114,6 +114,8 @@ describe('Job table app', () => {
|
|||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
jobs: {
|
||||
pageInfo: {
|
||||
|
|
|
@ -661,6 +661,8 @@ describe('Time series component', () => {
|
|||
const commitUrl = `${mockProjectDir}/-/commit/${mockSha}`;
|
||||
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
tooltip: {
|
||||
type: 'deployments',
|
||||
|
|
|
@ -792,6 +792,8 @@ describe('Dashboard', () => {
|
|||
});
|
||||
createShallowWrapper({ hasMetrics: true });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ hoveredPanel: panelRef });
|
||||
|
||||
return wrapper.vm.$nextTick();
|
||||
|
|
|
@ -38,6 +38,8 @@ describe('DashboardsDropdown', () => {
|
|||
const findSearchInput = () => wrapper.find({ ref: 'monitorDashboardsDropdownSearch' });
|
||||
const findNoItemsMsg = () => wrapper.find({ ref: 'monitorDashboardsDropdownMsg' });
|
||||
const findStarredListDivider = () => wrapper.find({ ref: 'starredListDivider' });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
const setSearchTerm = (searchTerm) => wrapper.setData({ searchTerm });
|
||||
|
||||
beforeEach(() => {
|
||||
|
|
|
@ -35,6 +35,8 @@ describe('MR Popover', () => {
|
|||
|
||||
describe('loaded state', () => {
|
||||
it('matches the snapshot', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
mergeRequest: {
|
||||
title: 'Updated Title',
|
||||
|
@ -55,6 +57,8 @@ describe('MR Popover', () => {
|
|||
});
|
||||
|
||||
it('does not show CI Icon if there is no pipeline data', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
mergeRequest: {
|
||||
state: 'opened',
|
||||
|
|
|
@ -263,6 +263,8 @@ describe('issue_comment_form component', () => {
|
|||
jest.spyOn(wrapper.vm, 'stopPolling');
|
||||
jest.spyOn(wrapper.vm, 'saveNote').mockResolvedValue();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ note: 'hello world' });
|
||||
|
||||
await findCommentButton().trigger('click');
|
||||
|
@ -388,6 +390,8 @@ describe('issue_comment_form component', () => {
|
|||
it('should enable comment button if it has note', async () => {
|
||||
mountComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ note: 'Foo' });
|
||||
|
||||
expect(findCommentTypeDropdown().props('disabled')).toBe(false);
|
||||
|
|
|
@ -257,6 +257,8 @@ describe('issue_note_form component', () => {
|
|||
props = { ...props, ...options };
|
||||
wrapper = createComponentWrapper();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isSubmittingWithKeydown: true });
|
||||
|
||||
const textarea = wrapper.find('textarea');
|
||||
|
|
|
@ -88,6 +88,8 @@ describe('CustomNotificationsModal', () => {
|
|||
beforeEach(async () => {
|
||||
wrapper = createComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
events: [
|
||||
{ id: 'new_release', enabled: true, name: 'New release', loading: false },
|
||||
|
@ -211,6 +213,8 @@ describe('CustomNotificationsModal', () => {
|
|||
|
||||
wrapper = createComponent({ injectedProperties });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
events: [
|
||||
{ id: 'new_release', enabled: true, name: 'New release', loading: false },
|
||||
|
@ -239,6 +243,8 @@ describe('CustomNotificationsModal', () => {
|
|||
mockAxios.onPut('/api/v4/notification_settings').reply(httpStatus.NOT_FOUND, {});
|
||||
wrapper = createComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
events: [
|
||||
{ id: 'new_release', enabled: true, name: 'New release', loading: false },
|
||||
|
|
|
@ -134,6 +134,8 @@ describe('packages_list', () => {
|
|||
});
|
||||
|
||||
it('deleteItemConfirmation resets itemToBeDeleted', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ itemToBeDeleted: 1 });
|
||||
wrapper.vm.deleteItemConfirmation();
|
||||
expect(wrapper.vm.itemToBeDeleted).toEqual(null);
|
||||
|
@ -141,6 +143,8 @@ describe('packages_list', () => {
|
|||
|
||||
it('deleteItemConfirmation emit package:delete', () => {
|
||||
const itemToBeDeleted = { id: 2 };
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ itemToBeDeleted });
|
||||
wrapper.vm.deleteItemConfirmation();
|
||||
return wrapper.vm.$nextTick(() => {
|
||||
|
@ -149,6 +153,8 @@ describe('packages_list', () => {
|
|||
});
|
||||
|
||||
it('deleteItemCanceled resets itemToBeDeleted', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ itemToBeDeleted: 1 });
|
||||
wrapper.vm.deleteItemCanceled();
|
||||
expect(wrapper.vm.itemToBeDeleted).toEqual(null);
|
||||
|
@ -194,6 +200,8 @@ describe('packages_list', () => {
|
|||
beforeEach(() => {
|
||||
mountComponent();
|
||||
eventSpy = jest.spyOn(Tracking, 'event');
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ itemToBeDeleted: { package_type: 'conan' } });
|
||||
});
|
||||
|
||||
|
|
|
@ -79,6 +79,8 @@ describe('UpdateUsername component', () => {
|
|||
|
||||
beforeEach(async () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ newUsername });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
|
|
@ -65,6 +65,8 @@ describe('Author Select', () => {
|
|||
|
||||
describe('user is searching via "filter by commit message"', () => {
|
||||
it('disables dropdown container', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ hasSearchParam: true });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -73,6 +75,8 @@ describe('Author Select', () => {
|
|||
});
|
||||
|
||||
it('has correct tooltip message', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ hasSearchParam: true });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -83,6 +87,8 @@ describe('Author Select', () => {
|
|||
});
|
||||
|
||||
it('disables dropdown', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ hasSearchParam: false });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -103,6 +109,8 @@ describe('Author Select', () => {
|
|||
});
|
||||
|
||||
it('displays the current selected author', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ currentAuthor });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -156,6 +164,8 @@ describe('Author Select', () => {
|
|||
isChecked: true,
|
||||
};
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ currentAuthor });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
|
|
@ -101,6 +101,8 @@ describe('RevisionDropdown component', () => {
|
|||
const findGlDropdownItems = () => wrapper.findAll(GlDropdownItem);
|
||||
const findFirstGlDropdownItem = () => findGlDropdownItems().at(0);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ branches: ['some-branch'] });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
|
|
@ -83,6 +83,8 @@ const createComponent = async (mockData = {}, mountFn = shallowMount) => {
|
|||
}),
|
||||
);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ project, isBinary });
|
||||
|
||||
await waitForPromises();
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
import { createLocalVue } from '@vue/test-utils';
|
||||
import VueApollo from 'vue-apollo';
|
||||
import { nextTick } from 'vue';
|
||||
import createMockApollo from 'helpers/mock_apollo_helper';
|
||||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
import BlobControls from '~/repository/components/blob_controls.vue';
|
||||
import blobControlsQuery from '~/repository/queries/blob_controls.query.graphql';
|
||||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import createRouter from '~/repository/router';
|
||||
import { blobControlsDataMock, refMock } from '../mock_data';
|
||||
|
||||
let router;
|
||||
let wrapper;
|
||||
let mockResolver;
|
||||
|
||||
const localVue = createLocalVue();
|
||||
|
||||
const createComponent = async () => {
|
||||
localVue.use(VueApollo);
|
||||
|
||||
const project = { ...blobControlsDataMock };
|
||||
const projectPath = 'some/project';
|
||||
|
||||
router = createRouter(projectPath, refMock);
|
||||
|
||||
router.replace({ name: 'blobPath', params: { path: '/some/file.js' } });
|
||||
|
||||
mockResolver = jest.fn().mockResolvedValue({ data: { project } });
|
||||
|
||||
wrapper = shallowMountExtended(BlobControls, {
|
||||
localVue,
|
||||
router,
|
||||
apolloProvider: createMockApollo([[blobControlsQuery, mockResolver]]),
|
||||
propsData: { projectPath },
|
||||
mixins: [{ data: () => ({ ref: refMock }) }],
|
||||
});
|
||||
|
||||
await waitForPromises();
|
||||
};
|
||||
|
||||
describe('Blob controls component', () => {
|
||||
const findFindButton = () => wrapper.findByTestId('find');
|
||||
const findBlameButton = () => wrapper.findByTestId('blame');
|
||||
const findHistoryButton = () => wrapper.findByTestId('history');
|
||||
const findPermalinkButton = () => wrapper.findByTestId('permalink');
|
||||
|
||||
beforeEach(() => createComponent());
|
||||
|
||||
afterEach(() => wrapper.destroy());
|
||||
|
||||
it('renders a find button with the correct href', () => {
|
||||
expect(findFindButton().attributes('href')).toBe('find/file.js');
|
||||
});
|
||||
|
||||
it('renders a blame button with the correct href', () => {
|
||||
expect(findBlameButton().attributes('href')).toBe('blame/file.js');
|
||||
});
|
||||
|
||||
it('renders a history button with the correct href', () => {
|
||||
expect(findHistoryButton().attributes('href')).toBe('history/file.js');
|
||||
});
|
||||
|
||||
it('renders a permalink button with the correct href', () => {
|
||||
expect(findPermalinkButton().attributes('href')).toBe('permalink/file.js');
|
||||
});
|
||||
|
||||
it('does not render any buttons if no filePath is provided', async () => {
|
||||
router.replace({ name: 'blobPath', params: { path: null } });
|
||||
|
||||
await nextTick();
|
||||
|
||||
expect(findFindButton().exists()).toBe(false);
|
||||
expect(findBlameButton().exists()).toBe(false);
|
||||
expect(findHistoryButton().exists()).toBe(false);
|
||||
expect(findPermalinkButton().exists()).toBe(false);
|
||||
});
|
||||
});
|
|
@ -75,6 +75,8 @@ describe('Repository breadcrumbs component', () => {
|
|||
it('does not render add to tree dropdown when permissions are false', async () => {
|
||||
factory('/', { canCollaborate: false });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ userPermissions: { forkProject: false, createMergeRequestIn: false } });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
@ -100,6 +102,8 @@ describe('Repository breadcrumbs component', () => {
|
|||
it('renders add to tree dropdown when permissions are true', async () => {
|
||||
factory('/', { canCollaborate: true });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ userPermissions: { forkProject: true, createMergeRequestIn: true } });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
@ -117,6 +121,8 @@ describe('Repository breadcrumbs component', () => {
|
|||
});
|
||||
|
||||
it('renders the modal once loaded', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ $apollo: { queries: { userPermissions: { loading: false } } } });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
@ -139,6 +145,8 @@ describe('Repository breadcrumbs component', () => {
|
|||
});
|
||||
|
||||
it('renders the modal once loaded', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ $apollo: { queries: { userPermissions: { loading: false } } } });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
|
|
@ -43,6 +43,8 @@ function factory(commit = createCommitData(), loading = false) {
|
|||
},
|
||||
},
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ commit });
|
||||
vm.vm.$apollo.queries.commit.loading = loading;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,8 @@ describe('Repository file preview component', () => {
|
|||
name: 'README.md',
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ readme: { html: '<div class="blob">test</div>' } });
|
||||
|
||||
return vm.vm.$nextTick(() => {
|
||||
|
@ -47,6 +49,8 @@ describe('Repository file preview component', () => {
|
|||
name: 'README.md',
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ readme: { html: '<div class="blob">test</div>' } });
|
||||
|
||||
return vm.vm
|
||||
|
@ -63,6 +67,8 @@ describe('Repository file preview component', () => {
|
|||
name: 'README.md',
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ loading: 1 });
|
||||
|
||||
return vm.vm.$nextTick(() => {
|
||||
|
|
|
@ -89,6 +89,8 @@ describe('Repository table component', () => {
|
|||
`('renders table caption for $ref in $path', ({ path, ref }) => {
|
||||
factory({ path });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ ref });
|
||||
|
||||
return vm.vm.$nextTick(() => {
|
||||
|
|
|
@ -40,6 +40,8 @@ function factory(propsData = {}) {
|
|||
},
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ escapedRef: 'main' });
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,8 @@ describe('Repository table component', () => {
|
|||
it('renders file preview', async () => {
|
||||
factory('/');
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ entries: { blobs: [{ name: 'README.md' }] } });
|
||||
|
||||
await vm.vm.$nextTick();
|
||||
|
@ -134,6 +136,8 @@ describe('Repository table component', () => {
|
|||
it('is not rendered if less than 1000 files', async () => {
|
||||
factory('/');
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ fetchCounter: 5, clickedShowMore: false });
|
||||
|
||||
await vm.vm.$nextTick();
|
||||
|
@ -153,6 +157,8 @@ describe('Repository table component', () => {
|
|||
factory('/');
|
||||
|
||||
const blobs = new Array(totalBlobs).fill('fakeBlob');
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ entries: { blobs }, pagesLoaded });
|
||||
|
||||
await vm.vm.$nextTick();
|
||||
|
@ -173,6 +179,8 @@ describe('Repository table component', () => {
|
|||
${200} | ${100}
|
||||
`('exponentially increases page size, to a maximum of 100', ({ fetchCounter, pageSize }) => {
|
||||
factory('/');
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
vm.setData({ fetchCounter });
|
||||
|
||||
vm.vm.fetchFiles();
|
||||
|
|
|
@ -109,6 +109,8 @@ describe('UploadBlobModal', () => {
|
|||
if (canPushCode) {
|
||||
describe('when changing the branch name', () => {
|
||||
it('displays the MR toggle', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ target: 'Not main' });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
@ -120,6 +122,8 @@ describe('UploadBlobModal', () => {
|
|||
|
||||
describe('completed form', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
file: { type: 'jpg' },
|
||||
filePreviewURL: 'http://file.com?format=jpg',
|
||||
|
|
|
@ -64,3 +64,20 @@ export const projectMock = {
|
|||
export const propsMock = { path: 'some_file.js', projectPath: 'some/path' };
|
||||
|
||||
export const refMock = 'default-ref';
|
||||
|
||||
export const blobControlsDataMock = {
|
||||
id: '1234',
|
||||
repository: {
|
||||
blobs: {
|
||||
nodes: [
|
||||
{
|
||||
id: '5678',
|
||||
findFilePath: 'find/file.js',
|
||||
blamePath: 'blame/file.js',
|
||||
historyPath: 'history/file.js',
|
||||
permalinkPath: 'permalink/file.js',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -133,6 +133,8 @@ describe('Global Search Searchable Dropdown', () => {
|
|||
describe(`when search is ${searchText} and frequentItems length is ${frequentItems.length}`, () => {
|
||||
beforeEach(() => {
|
||||
createComponent({}, { frequentItems });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ searchText });
|
||||
});
|
||||
|
||||
|
@ -202,6 +204,8 @@ describe('Global Search Searchable Dropdown', () => {
|
|||
|
||||
describe('not for the first time', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ hasBeenOpened: true });
|
||||
findGlDropdown().vm.$emit('show');
|
||||
});
|
||||
|
|
|
@ -48,12 +48,16 @@ describe('UncollapsedReviewerList component', () => {
|
|||
});
|
||||
|
||||
it('renders re-request loading icon', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ loadingStates: { 1: 'loading' } });
|
||||
|
||||
expect(wrapper.find('[data-testid="re-request-button"]').props('loading')).toBe(true);
|
||||
});
|
||||
|
||||
it('renders re-request success icon', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ loadingStates: { 1: 'success' } });
|
||||
|
||||
expect(wrapper.find('[data-testid="re-request-success"]').exists()).toBe(true);
|
||||
|
@ -98,6 +102,8 @@ describe('UncollapsedReviewerList component', () => {
|
|||
});
|
||||
|
||||
it('renders re-request loading icon', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ loadingStates: { 2: 'loading' } });
|
||||
|
||||
expect(wrapper.findAll('[data-testid="re-request-button"]').length).toBe(2);
|
||||
|
@ -107,6 +113,8 @@ describe('UncollapsedReviewerList component', () => {
|
|||
});
|
||||
|
||||
it('renders re-request success icon', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ loadingStates: { 2: 'success' } });
|
||||
|
||||
expect(wrapper.findAll('[data-testid="re-request-button"]').length).toBe(1);
|
||||
|
|
|
@ -85,6 +85,8 @@ describe('Participants', () => {
|
|||
numberOfLessParticipants,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isShowingMoreParticipants: false,
|
||||
});
|
||||
|
@ -101,6 +103,8 @@ describe('Participants', () => {
|
|||
numberOfLessParticipants: 2,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isShowingMoreParticipants: true,
|
||||
});
|
||||
|
@ -129,6 +133,8 @@ describe('Participants', () => {
|
|||
numberOfLessParticipants: 2,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isShowingMoreParticipants: false,
|
||||
});
|
||||
|
@ -145,6 +151,8 @@ describe('Participants', () => {
|
|||
numberOfLessParticipants: 2,
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isShowingMoreParticipants: true,
|
||||
});
|
||||
|
|
|
@ -157,6 +157,8 @@ describe('Blob Embeddable', () => {
|
|||
});
|
||||
|
||||
// mimic apollo's update
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
blobContent: wrapper.vm.onContentUpdate(apolloData),
|
||||
});
|
||||
|
|
|
@ -242,6 +242,8 @@ describe('Snippet header component', () => {
|
|||
// TODO: we should avoid `wrapper.setData` since they
|
||||
// are component internals. Let's use the apollo mock helpers
|
||||
// in a follow-up.
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ canCreateSnippet: true });
|
||||
await wrapper.vm.$nextTick();
|
||||
|
||||
|
|
|
@ -132,6 +132,8 @@ describe('~/static_site_editor/components/edit_area.vue', () => {
|
|||
|
||||
describe('when the mode changes', () => {
|
||||
const setInitialMode = (mode) => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ editorMode: mode });
|
||||
};
|
||||
|
||||
|
@ -207,6 +209,8 @@ describe('~/static_site_editor/components/edit_area.vue', () => {
|
|||
});
|
||||
|
||||
it('syncs matter changes to content in markdown mode', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ editorMode: EDITOR_TYPES.markdown });
|
||||
|
||||
const newSettings = { title: 'test' };
|
||||
|
|
|
@ -48,6 +48,8 @@ describe('Add Image Modal', () => {
|
|||
const file = { name: 'some_file.png' };
|
||||
|
||||
wrapper.vm.$refs.uploadImageTab = { validateFile: jest.fn() };
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ file, description, tabIndex: IMAGE_TABS.UPLOAD_TAB });
|
||||
|
||||
findModal().vm.$emit('ok', { preventDefault });
|
||||
|
@ -60,6 +62,8 @@ describe('Add Image Modal', () => {
|
|||
it('emits an addImage event when a valid URL is specified', () => {
|
||||
const preventDefault = jest.fn();
|
||||
const mockImage = { imageUrl: '/some/valid/url.png', description: 'some description' };
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ ...mockImage, tabIndex: IMAGE_TABS.URL_TAB });
|
||||
|
||||
findModal().vm.$emit('ok', { preventDefault });
|
||||
|
|
|
@ -293,6 +293,8 @@ describe('StatesTableActions', () => {
|
|||
|
||||
describe('when state name is present', () => {
|
||||
beforeEach(async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
await wrapper.setData({ removeConfirmText: defaultProps.state.name });
|
||||
|
||||
findRemoveModal().vm.$emit('ok');
|
||||
|
|
|
@ -101,6 +101,8 @@ describe('MRWidget approvals', () => {
|
|||
});
|
||||
|
||||
it('shows loading message', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ fetchingApprovals: true });
|
||||
|
||||
return tick().then(() => {
|
||||
|
|
|
@ -88,6 +88,8 @@ describe('Merge request widget rebase component', () => {
|
|||
mergeRequestWidgetGraphql,
|
||||
);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ rebasingError: 'Something went wrong!' });
|
||||
|
||||
await nextTick();
|
||||
|
|
|
@ -253,6 +253,8 @@ describe('MRWidgetAutoMergeEnabled', () => {
|
|||
factory({
|
||||
...defaultMrProps(),
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isCancellingAutoMerge: true,
|
||||
});
|
||||
|
@ -287,6 +289,8 @@ describe('MRWidgetAutoMergeEnabled', () => {
|
|||
factory({
|
||||
...defaultMrProps(),
|
||||
});
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
isRemovingSourceBranch: true,
|
||||
});
|
||||
|
|
|
@ -60,6 +60,8 @@ describe('Commits header component', () => {
|
|||
|
||||
it('has a chevron-right icon', () => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ expanded: false });
|
||||
|
||||
return wrapper.vm.$nextTick().then(() => {
|
||||
|
@ -111,6 +113,8 @@ describe('Commits header component', () => {
|
|||
describe('when expanded', () => {
|
||||
beforeEach(() => {
|
||||
createComponent();
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ expanded: true });
|
||||
});
|
||||
|
||||
|
|
|
@ -41,6 +41,8 @@ describe('MRWidgetConflicts', () => {
|
|||
);
|
||||
|
||||
if (mergeRequestWidgetGraphql) {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
userPermissions: {
|
||||
canMerge: propsData.mr.canMerge,
|
||||
|
|
|
@ -14,6 +14,8 @@ function factory(sourceBranchRemoved, mergeRequestWidgetGraphql) {
|
|||
});
|
||||
|
||||
if (mergeRequestWidgetGraphql) {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ state: { sourceBranchExists: !sourceBranchRemoved } });
|
||||
}
|
||||
|
||||
|
|
|
@ -192,6 +192,8 @@ describe('ReadyToMerge', () => {
|
|||
it('should return "Merge in progress"', async () => {
|
||||
createComponent();
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isMergingImmediately: true });
|
||||
|
||||
await Vue.nextTick();
|
||||
|
@ -260,6 +262,8 @@ describe('ReadyToMerge', () => {
|
|||
it('should return true when the vm instance is making request', async () => {
|
||||
createComponent({ mr: { isMergeAllowed: true } });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isMakingRequest: true });
|
||||
|
||||
await Vue.nextTick();
|
||||
|
@ -287,6 +291,8 @@ describe('ReadyToMerge', () => {
|
|||
jest
|
||||
.spyOn(wrapper.vm.service, 'merge')
|
||||
.mockReturnValue(returnPromise('merge_when_pipeline_succeeds'));
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ removeSourceBranch: false });
|
||||
|
||||
wrapper.vm.handleMergeButtonClick(true);
|
||||
|
@ -691,6 +697,8 @@ describe('ReadyToMerge', () => {
|
|||
true,
|
||||
);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
loading: false,
|
||||
state: {
|
||||
|
|
|
@ -43,6 +43,8 @@ describe('MrWidgetTerraformConainer', () => {
|
|||
mockPollingApi(200, plans, {});
|
||||
|
||||
return mountWrapper().then(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ loading: true });
|
||||
return wrapper.vm.$nextTick();
|
||||
});
|
||||
|
|
|
@ -349,6 +349,8 @@ describe('AlertDetails', () => {
|
|||
${1} | ${'metrics'}
|
||||
${2} | ${'activity'}
|
||||
`('will navigate to the correct tab via $tabId', ({ index, tabId }) => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ currentTabIndex: index });
|
||||
expect($router.replace).toHaveBeenCalledWith({ name: 'tab', params: { tabId } });
|
||||
});
|
||||
|
|
|
@ -109,6 +109,8 @@ describe('Alert Details Sidebar Assignees', () => {
|
|||
});
|
||||
|
||||
it('renders a unassigned option', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isDropdownSearching: false });
|
||||
await wrapper.vm.$nextTick();
|
||||
expect(findDropdown().text()).toBe('Unassigned');
|
||||
|
@ -120,6 +122,8 @@ describe('Alert Details Sidebar Assignees', () => {
|
|||
|
||||
it('calls `$apollo.mutate` with `AlertSetAssignees` mutation and variables containing `iid`, `assigneeUsernames`, & `projectPath`', async () => {
|
||||
jest.spyOn(wrapper.vm.$apollo, 'mutate').mockResolvedValue(mockUpdatedMutationResult);
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isDropdownSearching: false });
|
||||
|
||||
await wrapper.vm.$nextTick();
|
||||
|
@ -136,6 +140,8 @@ describe('Alert Details Sidebar Assignees', () => {
|
|||
});
|
||||
|
||||
it('emits an error when request contains error messages', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ isDropdownSearching: false });
|
||||
const errorMutationResult = {
|
||||
data: {
|
||||
|
|
|
@ -315,6 +315,8 @@ describe('vue_shared/components/chronic_duration_input', () => {
|
|||
});
|
||||
|
||||
it('passes updated prop via v-model', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({ value: MOCK_VALUE });
|
||||
await wrapper.vm.$nextTick();
|
||||
|
||||
|
|
|
@ -122,6 +122,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
describe('sortDirectionIcon', () => {
|
||||
it('returns string "sort-lowest" when `selectedSortDirection` is "ascending"', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortDirection: SortDirection.ascending,
|
||||
});
|
||||
|
@ -130,6 +132,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
});
|
||||
|
||||
it('returns string "sort-highest" when `selectedSortDirection` is "descending"', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortDirection: SortDirection.descending,
|
||||
});
|
||||
|
@ -140,6 +144,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
describe('sortDirectionTooltip', () => {
|
||||
it('returns string "Sort direction: Ascending" when `selectedSortDirection` is "ascending"', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortDirection: SortDirection.ascending,
|
||||
});
|
||||
|
@ -148,6 +154,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
});
|
||||
|
||||
it('returns string "Sort direction: Descending" when `selectedSortDirection` is "descending"', () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortDirection: SortDirection.descending,
|
||||
});
|
||||
|
@ -158,6 +166,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
describe('filteredRecentSearches', () => {
|
||||
it('returns array of recent searches filtering out any string type (unsupported) items', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
recentSearches: [{ foo: 'bar' }, 'foo'],
|
||||
});
|
||||
|
@ -169,6 +179,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
});
|
||||
|
||||
it('returns array of recent searches sanitizing any duplicate token values', async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
recentSearches: [
|
||||
[tokenValueAuthor, tokenValueLabel, tokenValueMilestone, tokenValueLabel],
|
||||
|
@ -198,6 +210,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
describe('filterValue', () => {
|
||||
it('emits component event `onFilter` with empty array and false when filter was never selected', () => {
|
||||
wrapper = createComponent({ initialFilterValue: [tokenValueEmpty] });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
initialRender: false,
|
||||
filterValue: [tokenValueEmpty],
|
||||
|
@ -210,6 +224,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
it('emits component event `onFilter` with empty array and true when initially selected filter value was cleared', () => {
|
||||
wrapper = createComponent({ initialFilterValue: [tokenValueLabel] });
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
initialRender: false,
|
||||
filterValue: [tokenValueEmpty],
|
||||
|
@ -264,6 +280,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
describe('handleSortDirectionClick', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortOption: mockSortOptions[0],
|
||||
});
|
||||
|
@ -312,6 +330,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
const mockFilters = [tokenValueAuthor, 'foo'];
|
||||
|
||||
beforeEach(async () => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
filterValue: mockFilters,
|
||||
});
|
||||
|
@ -376,6 +396,8 @@ describe('FilteredSearchBarRoot', () => {
|
|||
|
||||
describe('template', () => {
|
||||
beforeEach(() => {
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
selectedSortOption: mockSortOptions[0],
|
||||
selectedSortDirection: SortDirection.descending,
|
||||
|
|
|
@ -227,6 +227,8 @@ describe('AuthorToken', () => {
|
|||
|
||||
expect(getAvatarEl().props('src')).toBe(mockAuthors[0].avatar_url);
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
authors: [
|
||||
{
|
||||
|
|
|
@ -121,6 +121,8 @@ describe('BranchToken', () => {
|
|||
beforeEach(async () => {
|
||||
wrapper = createComponent({ value: { data: mockBranches[0].name } });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
branches: mockBranches,
|
||||
});
|
||||
|
|
|
@ -123,6 +123,8 @@ describe('EmojiToken', () => {
|
|||
value: { data: `"${mockEmojis[0].name}"` },
|
||||
});
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
emojis: mockEmojis,
|
||||
});
|
||||
|
|
|
@ -144,6 +144,8 @@ describe('LabelToken', () => {
|
|||
beforeEach(async () => {
|
||||
wrapper = createComponent({ value: { data: `"${mockRegularLabel.title}"` } });
|
||||
|
||||
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
wrapper.setData({
|
||||
labels: mockLabels,
|
||||
});
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue