Commit dea6ebd3 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent 94611567
......@@ -209,7 +209,7 @@ review-qa-all:
when: manual
parallel: 5
script:
- export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/review-qa-all_master_report.json
- export KNAPSACK_REPORT_PATH=knapsack/master_report.json
- export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb
- gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation
......
......@@ -2,9 +2,9 @@
## Canonical source
The canonical source of GitLab where development takes place is [hosted on GitLab.com](https://gitlab.com/gitlab-org/gitlab).
The canonical source of GitLab where all development takes place is [hosted on GitLab.com](https://gitlab.com/gitlab-org/gitlab).
A FOSS source of GitLab is hosted on a [mirrored, read-only project on GitLab.com](https://gitlab.com/gitlab-org/gitlab-foss/).
If you wish to clone a copy of GitLab without proprietary code, you can use the read-only mirror of GitLab located at https://gitlab.com/gitlab-org/gitlab-foss/. Please do not submit any issues and/or merge requests to this project.
## Free trial
......
export default {
data() {
return {
isCustomStageForm: false,
};
},
methods: {
showAddStageForm: () => {},
hideAddStageForm: () => {},
},
};
......@@ -3,7 +3,6 @@ import Vue from 'vue';
import Cookies from 'js-cookie';
import { GlEmptyState } from '@gitlab/ui';
import filterMixins from 'ee_else_ce/analytics/cycle_analytics/mixins/filter_mixins';
import addStageMixin from 'ee_else_ce/analytics/cycle_analytics/mixins/add_stage_mixin';
import Flash from '../flash';
import { __ } from '~/locale';
import Translate from '../vue_shared/translate';
......@@ -44,14 +43,8 @@ export default () => {
DateRangeDropdown: () =>
import('ee_component/analytics/shared/components/date_range_dropdown.vue'),
'stage-nav-item': stageNavItem,
CustomStageForm: () =>
import('ee_component/analytics/cycle_analytics/components/custom_stage_form.vue'),
AddStageButton: () =>
import('ee_component/analytics/cycle_analytics/components/add_stage_button.vue'),
CustomStageFormContainer: () =>
import('ee_component/analytics/cycle_analytics/components/custom_stage_form_container.vue'),
},
mixins: [filterMixins, addStageMixin],
mixins: [filterMixins],
data() {
return {
store: CycleAnalyticsStore,
......@@ -131,7 +124,6 @@ export default () => {
return;
}
this.hideAddStageForm();
this.isLoadingStage = true;
this.store.setStageEvents([], stage);
this.store.setActiveStage(stage);
......
......@@ -152,6 +152,14 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
branch: getters.branchName,
})
.then(() => {
commit(rootTypes.CLEAR_STAGED_CHANGES, null, { root: true });
commit(rootTypes.CLEAR_REPLACED_FILES, null, { root: true });
setTimeout(() => {
commit(rootTypes.SET_LAST_COMMIT_MSG, '', { root: true });
}, 5000);
if (state.shouldCreateMR) {
const { currentProject } = rootGetters;
const targetBranch = getters.isCreatingNewBranch
......@@ -164,14 +172,6 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
{ root: true },
);
}
commit(rootTypes.CLEAR_STAGED_CHANGES, null, { root: true });
commit(rootTypes.CLEAR_REPLACED_FILES, null, { root: true });
setTimeout(() => {
commit(rootTypes.SET_LAST_COMMIT_MSG, '', { root: true });
}, 5000);
})
.then(() => {
if (rootGetters.lastOpenedFile) {
......
<script>
import { __ } from '~/locale';
import { s__, __ } from '~/locale';
import { GlLink, GlButton } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import dateFormat from 'dateformat';
......@@ -52,6 +52,16 @@ export default {
required: false,
default: () => [],
},
legendAverageText: {
type: String,
required: false,
default: s__('Metrics|Avg'),
},
legendMaxText: {
type: String,
required: false,
default: s__('Metrics|Max'),
},
},
data() {
return {
......@@ -260,7 +270,6 @@ export default {
<slot></slot>
</div>
</div>
<component
:is="glChartComponent"
ref="chart"
......@@ -271,6 +280,8 @@ export default {
:thresholds="thresholds"
:width="width"
:height="height"
:average-text="legendAverageText"
:max-text="legendMaxText"
@updated="onChartUpdated"
>
<template v-if="tooltip.isDeployment">
......
......@@ -81,7 +81,7 @@ module SubmoduleHelper
end
def relative_self_links(relative_path, commit, project)
relative_path.rstrip!
relative_path = relative_path.rstrip
absolute_project_path = "/" + project.full_path
# Resolve `relative_path` to target path
......
......@@ -85,7 +85,7 @@ module Emails
@project = Project.find(project_id)
@results = results
mail(to: recipient(@user.id, @project.group), subject: subject('Imported issues')) do |format|
mail(to: @user.notification_email_for(@project.group), subject: subject('Imported issues')) do |format|
format.html { render layout: 'mailer' }
format.text { render layout: 'mailer' }
end
......@@ -105,7 +105,7 @@ module Emails
def issue_thread_options(sender_id, recipient_id, reason)
{
from: sender(sender_id),
to: recipient(recipient_id, @project.group),
to: User.find(recipient_id).notification_email_for(@project.group),
subject: subject("#{@issue.title} (##{@issue.iid})"),
'X-GitLab-NotificationReason' => reason
}
......
......@@ -13,7 +13,9 @@ module Emails
@member_source_type = member_source_type
@member_id = member_id
mail(to: recipient(recipient_id, notification_group),
user = User.find(recipient_id)
mail(to: user.notification_email_for(notification_group),
subject: subject("Request to join the #{member_source.human_name} #{member_source.model_name.singular}"))
end
......@@ -21,7 +23,7 @@ module Emails
@member_source_type = member_source_type
@member_id = member_id
mail(to: recipient(member.user, notification_group),
mail(to: member.user.notification_email_for(notification_group),
subject: subject("Access to the #{member_source.human_name} #{member_source.model_name.singular} was granted"))
end
......@@ -29,7 +31,9 @@ module Emails
@member_source_type = member_source_type
@member_source = member_source_class.find(source_id)
mail(to: recipient(user_id, notification_group),
user = User.find(user_id)
mail(to: user.notification_email_for(notification_group),
subject: subject("Access to the #{member_source.human_name} #{member_source.model_name.singular} was denied"))
end
......@@ -47,7 +51,7 @@ module Emails
@member_id = member_id
return unless member.created_by
mail(to: recipient(member.created_by, notification_group),
mail(to: member.created_by.notification_email_for(notification_group),
subject: subject('Invitation accepted'))
end
......@@ -58,7 +62,9 @@ module Emails
@member_source = member_source_class.find(source_id)
@invite_email = invite_email
mail(to: recipient(created_by_id, notification_group),
user = User.find(created_by_id)
mail(to: user.notification_email_for(notification_group),
subject: subject('Invitation declined'))
end
......
......@@ -110,7 +110,7 @@ module Emails
def merge_request_thread_options(sender_id, recipient_id, reason = nil)
{
from: sender(sender_id),
to: recipient(recipient_id, @project.group),
to: User.find(recipient_id).notification_email_for(@project.group),
subject: subject("#{@merge_request.title} (#{@merge_request.to_reference})"),
'X-GitLab-NotificationReason' => reason
}
......
......@@ -55,7 +55,7 @@ module Emails
def note_thread_options(recipient_id, reason)
{
from: sender(@note.author_id),
to: recipient(recipient_id, @project&.group || @group),
to: User.find(recipient_id).notification_email_for(@project&.group || @group),
subject: subject("#{@note.noteable.title} (#{@note.noteable.reference_link_text})"),
'X-GitLab-NotificationReason' => reason
}
......
......@@ -7,7 +7,7 @@ module Emails
@project = domain.project
mail(
to: recipient(recipient.id, @project.group),
to: recipient.notification_email_for(@project.group),
subject: subject("GitLab Pages domain '#{domain.domain}' has been enabled")
)
end
......@@ -17,7 +17,7 @@ module Emails
@project = domain.project
mail(
to: recipient(recipient.id, @project.group),
to: recipient.notification_email_for(@project.group),
subject: subject("GitLab Pages domain '#{domain.domain}' has been disabled")
)
end
......@@ -27,7 +27,7 @@ module Emails
@project = domain.project
mail(
to: recipient(recipient.id, @project.group),
to: recipient.notification_email_for(@project.group),
subject: subject("Verification succeeded for GitLab Pages domain '#{domain.domain}'")
)
end
......@@ -37,7 +37,7 @@ module Emails
@project = domain.project
mail(
to: recipient(recipient.id, @project.group),
to: recipient.notification_email_for(@project.group),
subject: subject("ACTION REQUIRED: Verification failed for GitLab Pages domain '#{domain.domain}'")
)
end
......
......@@ -7,20 +7,20 @@ module Emails
@project = Project.find project_id
@target_url = project_url(@project)
@old_path_with_namespace = old_path_with_namespace
mail(to: recipient(user_id, @project.group),
mail(to: @user.notification_email_for(@project.group),
subject: subject("Project was moved"))
end
def project_was_exported_email(current_user, project)
@project = project
mail(to: recipient(current_user.id, project.group),
mail(to: current_user.notification_email_for(project.group),
subject: subject("Project was exported"))
end
def project_was_not_exported_email(current_user, project, errors)
@project = project
@errors = errors
mail(to: recipient(current_user.id, @project.group),
mail(to: current_user.notification_email_for(@project.group),
subject: subject("Project export error"))
end
......@@ -28,7 +28,7 @@ module Emails
@project = project
@user = user
mail(to: recipient(user.id, project.group), subject: subject("Project cleanup has completed"))
mail(to: user.notification_email_for(project.group), subject: subject("Project cleanup has completed"))
end
def repository_cleanup_failure_email(project, user, error)
......@@ -36,7 +36,7 @@ module Emails
@user = user
@error = error
mail(to: recipient(user.id, project.group), subject: subject("Project cleanup failure"))
mail(to: user.notification_email_for(project.group), subject: subject("Project cleanup failure"))
end
def repository_push_email(project_id, opts = {})
......
......@@ -5,8 +5,9 @@ module Emails
def remote_mirror_update_failed_email(remote_mirror_id, recipient_id)
@remote_mirror = RemoteMirror.find_by_id(remote_mirror_id)
@project = @remote_mirror.project
user = User.find(recipient_id)
mail(to: recipient(recipient_id, @project.group), subject: subject('Remote mirror update failed'))
mail(to: user.notification_email_for(@project.group), subject: subject('Remote mirror update failed'))
end
end
end
......@@ -71,20 +71,6 @@ class Notify < BaseMailer
address.format
end
# Look up a User's notification email for a particular context.
# Can look up by their ID or can accept a User object.
#
# recipient - User object OR a User ID
# notification_group - The parent group of the notification
#
# Returns a String containing the User's email address.
def recipient(recipient, notification_group = nil)
user = recipient if recipient.is_a?(User)
user ||= User.find(recipient)
user.notification_email_for(notification_group)
end
# Formats arguments into a String suitable for use as an email subject
#
# extra - Extra Strings to be inserted into the subject
......
......@@ -245,7 +245,6 @@ class Project < ApplicationRecord
has_one :cluster_project, class_name: 'Clusters::Project'
has_many :clusters, through: :cluster_project, class_name: 'Clusters::Cluster'
has_many :cluster_ingresses, through: :clusters, source: :application_ingress, class_name: 'Clusters::Applications::Ingress'
has_many :kubernetes_namespaces, class_name: 'Clusters::KubernetesNamespace'
has_many :prometheus_metrics
......
......@@ -17,7 +17,7 @@ module Issues
end
def can_add_link?
available? && !link_in_issue_description?
can? && !link_in_issue_description?
end
def remove_link
......@@ -29,7 +29,7 @@ module Issues
end
def can_remove_link?
available? && link_in_issue_description?
can? && link_in_issue_description?
end
def parse_link(link)
......@@ -75,14 +75,6 @@ module Issues
issue_description[/(\S+)\z/, 1]
end
def available?
feature_enabled? && can?
end
def feature_enabled?
Feature.enabled?(:issue_zoom_integration, project)
end
def can?
current_user.can?(:update_issue, project)
end
......
......@@ -43,6 +43,7 @@ module Projects
shared_runners_enabled: @project.shared_runners_enabled,
namespace_id: target_namespace.id,
fork_network: fork_network,
ci_config_path: @project.ci_config_path,
# We need to set ci_default_git_depth to 0 for the forked project when
# @project.ci_default_git_depth is nil in order to keep the same behaviour
# and not get ProjectCiCdSetting::DEFAULT_GIT_DEPTH set on create
......
......@@ -21,7 +21,7 @@
- if any_dashboard_nav_link?([:groups, :milestones, :activity, :snippets])
%li.header-more.dropdown
%a{ href: "#", data: { toggle: "dropdown" } }
%a{ href: "#", data: { toggle: "dropdown", qa_selector: 'more_dropdown' } }
= _('More')
= sprite_icon('angle-down', css_class: 'caret-down')
.dropdown-menu
......@@ -42,7 +42,7 @@
- if dashboard_nav_link?(:snippets)
= nav_link(controller: 'dashboard/snippets') do
= link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets qa-snippets-link' do
= link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets', data: { qa_selector: 'snippets_link' } do
= _('Snippets')
= render_if_exists 'layouts/nav/sidebar/analytics_more_link'
......
---
title: Refactor email notification code
merge_request: 17741
author: briankabiro
type: other
---
title: 'Fix Issue: WebIDE asks for confirmation to leave the page when committing
and creating a new MR'
merge_request: 17671
author:
type: fixed
---
title: Allow users to add and remove zoom rooms on an issue using quick action commands
merge_request:
author:
type: added
---
title: Preserve custom .gitlab-ci.yml config path when forking.
merge_request: 17817
author: Mathieu Parent
type: added
---
title: Provides internationalization support to chart legends
merge_request: 16832
author:
type: added
---
title: Expose web_url for epics on API
merge_request: 17380
author:
type: added
......@@ -67,7 +67,7 @@ Example response:
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/4",
"web_url": "http://localhost:3001/groups/test/-/epics/4",
"reference": "&4",
"author": {
"id": 10,
......@@ -122,7 +122,7 @@ Example response:
"title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/5",
"web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&5",
"author":{
"id": 7,
......@@ -188,7 +188,7 @@ Example response:
"title": "Epic",
"description": "Epic description",
"state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/6",
"web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&6",
"author": {
"name" : "Alexandra Bashirian",
......@@ -255,7 +255,7 @@ Example response:
"title": "New Title",
"description": "Epic description",
"state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/6",
"web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&6",
"author": {
"name" : "Alexandra Bashirian",
......
......@@ -64,8 +64,8 @@ The following quick actions are applicable to descriptions, discussions and thre
| `/create_merge_request <branch name>` | ✓ | | | Create a new merge request starting from the current issue |
| `/relate #issue1 #issue2` | ✓ | | | Mark issues as related **(STARTER)** |
| `/move <path/to/project>` | ✓ | | | Move this issue to another project |
| `/zoom <Zoom URL>` | ✓ | | | Add Zoom meeting to this issue. ([Introduced in GitLab 12.3](https://gitlab.com/gitlab-org/gitlab/merge_requests/16609). Must be enabled by feature flag `issue_zoom_integration` for self-hosted. [Feature flag to be removed and available by default in 12.4.](https://gitlab.com/gitlab-org/gitlab/issues/32133)) |
| `/remove_zoom` | ✓ | | | Remove Zoom meeting from this issue. ([Introduced in GitLab 12.3](https://gitlab.com/gitlab-org/gitlab/merge_requests/16609). Must be enabled by feature flag `issue_zoom_integration` for self-hosted. [Feature flag to be removed and available by default in 12.4.](https://gitlab.com/gitlab-org/gitlab/issues/32133)) |
| `/zoom <Zoom URL>` | ✓ | | | Add Zoom meeting to this issue. |
| `/remove_zoom` | ✓ | | | Remove Zoom meeting from this issue. |
| `/target_branch <local branch name>` | | ✓ | | Set target branch |
| `/wip` | | ✓ | | Toggle the Work In Progress status |
| `/approve` | | ✓ | | Approve the merge request |
......
......@@ -9858,6 +9858,9 @@ msgstr ""
msgid "Metrics|Add metric"
msgstr ""
msgid "Metrics|Avg"
msgstr ""
msgid "Metrics|Check out the CI/CD documentation on deploying to an environment"
msgstr ""
......@@ -9888,6 +9891,9 @@ msgstr ""
msgid "Metrics|Legend label (optional)"
msgstr ""
msgid "Metrics|Max"
msgstr ""
msgid "Metrics|Must be a valid PromQL query."
msgstr ""
......@@ -15833,7 +15839,7 @@ msgstr ""
msgid "There was an error fetching configuration for charts"
msgstr ""
msgid "There was an error fetching the form data"
msgid "There was an error fetching data for the form"
msgstr ""
msgid "There was an error gathering the chart data"
......
{
"qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb": 9.697327613830566,
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 46.54227638244629,
"qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb": 10.214765310287476,
"qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb": 7.882027864456177,
"qa/specs/features/api/3_create/repository/files_spec.rb": 5.015859127044678,
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 12.772682905197144,
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 29.76174831390381,
"qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb": 22.800872802734375,
"qa/specs/features/browser_ui/1_manage/login/register_spec.rb": 22.320587396621704,
"qa/specs/features/api/1_manage/users_spec.rb": 0.6089541912078857,
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 0.9618203639984131,
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 13.403101205825806,
"qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb": 8.810423135757446,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 7.730542182922363,
"qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb": 16.18057894706726,
"qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb": 8.31815505027771,
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 9.48607873916626,
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 19.552733182907104,
"qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb": 17.273863554000854,
"qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb": 8.281434059143066,
"qa/specs/features/browser_ui/3_create/repository/create_edit_delete_file_via_web_spec.rb": 18.047621726989746,
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 7.422840595245361,
"qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb": 3.438166856765747,
"qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb": 18.679633855819702,
"qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb": 27.943300485610962,
"qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb": 39.17585229873657,
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 40.09336972236633,
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 3.705310821533203,
"qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb": 5.812374591827393,
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 92.46774697303772,
"qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb": 100.28881478309631,
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 23.710937023162842,
"qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb": 20.58603596687317,
"qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb": 25.460349321365356,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 19.459370374679565,
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 6.731764793395996,
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 15.342933893203735,
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 11.280649185180664,
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 57.48992609977722,
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 32.5517954826355
}
\ No newline at end of file
{
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 4.835599899291992,
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 69.85551619529724,
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 14.649160623550415,
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 12.790381908416748,
"qa/specs/features/ee/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 0.00018262863159179688,
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 59.73394823074341,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 26.39240026473999,
"qa/specs/features/ee/browser_ui/secure/create_project_with_secure_spec.rb": 46.76790499687195,
"qa/specs/features/api/1_manage/users_spec.rb": 0.6089541912078857,
"qa/specs/features/api/3_create/repository/files_spec.rb": 5.015859127044678,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 1.0199065208435059,
......
......@@ -20,6 +20,7 @@ module QA
element :admin_area_link
element :projects_dropdown, required: true
element :groups_dropdown, required: true
element :more_dropdown, required: true
element :snippets_link
end
......@@ -52,6 +53,13 @@ module QA
end
end
def go_to_snippets
within_top_menu do
click_element :more_dropdown
click_element :snippets_link
end
end
def click_admin_area
within_top_menu { click_element :admin_area_link }
end
......@@ -80,10 +88,6 @@ module QA
end
end
def click_snippets_link
click_element :snippets_link
end
def search_for(term)
fill_element :search_term_field, "#{term}\n"
end
......
......@@ -7,7 +7,7 @@ module QA
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials)
Page::Main::Menu.perform(&:click_snippets_link)
Page::Main::Menu.perform(&:go_to_snippets)
Resource::Snippet.fabricate_via_browser_ui! do |snippet|
snippet.title = 'Snippet title'
......
# frozen_string_literal: true
require 'spec_helper'
describe ApplicationHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe AutoDevopsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe AvatarsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe AwardEmojiHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe BlameHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe BlobHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe BoardsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe BroadcastMessagesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe ButtonHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe CalendarHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe CiStatusHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe CommitsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe ComponentsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe DashboardHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe DeferScriptTagHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe EmailsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe EventsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe ExploreHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe FormHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe GitHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe GitlabRoutingHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe GraphHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe HooksHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe IconsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe ImportHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe InstanceConfigurationHelper do
......
# frozen_string_literal: true
require "spec_helper"
describe IssuesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe LabelsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe MarkupHelper do
......@@ -408,12 +410,12 @@ describe MarkupHelper do
it 'preserves a link href when link text is truncated' do
text = 'The quick brown fox jumped over the lazy dog' # 44 chars
input = "#{text}#{text}#{text} " # 133 chars
link_url = 'http://example.com/foo/bar/baz' # 30 chars
input << link_url
object = create_object(input)
input = "#{text}#{text}#{text} #{link_url}" # 163 chars
expected_link_text = 'http://example...</a>'
object = create_object(input)
expect(first_line_in_markdown(object, attribute, 150, project: project)).to match(link_url)
expect(first_line_in_markdown(object, attribute, 150, project: project)).to match(expected_link_text)
end
......
# frozen_string_literal: true
require 'spec_helper'
describe MembersHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe MilestonesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe MilestonesRoutingHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe NamespacesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe NavHelper, :do_not_mock_admin_mode do
......
# frozen_string_literal: true
require "spec_helper"
describe NotesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe NotificationsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe PageLayoutHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe PaginationHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe PreferencesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe ProfilesHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe RssHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe RunnersHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe SearchHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe SidekiqHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe SnippetsHelper do
......
# frozen_string_literal: true
require "spec_helper"
describe StorageHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe SubmoduleHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe TabHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe TimeHelper do
......
# frozen_string_literal: true
require "spec_helper"
describe TodosHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe TreeHelper do
......
# frozen_string_literal: true
require "spec_helper"
describe UserCalloutsHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe UsersHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe VersionCheckHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe VisibilityLevelHelper do
......
# frozen_string_literal: true
require 'spec_helper'
describe WikiHelper do
......
......@@ -473,18 +473,16 @@ describe('IDE commit module actions', () => {
});
it('resets changed files before redirecting', done => {
visitUrl = visitUrl.and.callFake(() => {
expect(store.state.stagedFiles.length).toBe(0);
done();
});
spyOn(eventHub, '$on');
store.state.commit.commitAction = '3';
store
.dispatch('commit/commitChanges')
.then(() => {
expect(store.state.stagedFiles.length).toBe(0);
done();
})
.catch(done.fail);
store.dispatch('commit/commitChanges').catch(done.fail);
});
});
});
......
......@@ -60,6 +60,18 @@ describe('Time series component', () => {
expect(timeSeriesChart.find('.js-graph-widgets').text()).toBe(mockWidgets);
});
it('allows user to override max value label text using prop', () => {
timeSeriesChart.setProps({ legendMaxText: 'legendMaxText' });
expect(timeSeriesChart.props().legendMaxText).toBe('legendMaxText');
});
it('allows user to override average value label text using prop', () => {
timeSeriesChart.setProps({ legendAverageText: 'averageText' });
expect(timeSeriesChart.props().legendAverageText).toBe('averageText');
});
describe('methods', () => {
describe('formatTooltipText', () => {
const mockDate = deploymentData[0].created_at;
......
......@@ -250,7 +250,6 @@ project:
- cluster
- clusters
- cluster_project
- cluster_ingresses
- creator
- cycle_analytics_stages
- group
......
......@@ -38,12 +38,6 @@ describe Issues::ZoomLinkService do
end
end
shared_context 'feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
end
shared_context 'insufficient permissions' do
before do
project.add_guest(user)
......@@ -78,11 +72,6 @@ describe Issues::ZoomLinkService do
include_examples 'cannot add link'
end
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
include_examples 'cannot add link'
end
context 'with insufficient permissions' do
include_context 'insufficient permissions'
include_examples 'cannot add link'
......@@ -113,12 +102,6 @@ describe Issues::ZoomLinkService do
it { is_expected.to eq(true) }
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
it { is_expected.to eq(false) }
end
context 'with insufficient permissions' do
include_context 'insufficient permissions'
......@@ -152,11 +135,6 @@ describe Issues::ZoomLinkService do
.to eq(issue.description.delete_suffix("\n\n#{zoom_link}"))
end
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
include_examples 'cannot remove link'
end
context 'with insufficient permissions' do
include_context 'insufficient permissions'
include_examples 'cannot remove link'
......@@ -187,12 +165,6 @@ describe Issues::ZoomLinkService do
it { is_expected.to eq(true) }
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
it { is_expected.to eq(false) }
end
context 'with insufficient permissions' do
include_context 'insufficient permissions'
......
......@@ -50,6 +50,7 @@ describe Projects::ForkService do
it { expect(to_project.star_count).to be_zero }
it { expect(to_project.description).to eq(@from_project.description) }
it { expect(to_project.avatar.file).to be_exists }
it { expect(to_project.ci_config_path).to eq(@from_project.ci_config_path) }
# This test is here because we had a bug where the from-project lost its
# avatar after being forked.
......@@ -215,7 +216,8 @@ describe Projects::ForkService do
@project = create(:project, :repository,
creator_id: @group_owner.id,
star_count: 777,
description: 'Wow, such a cool project!')
description: 'Wow, such a cool project!',
ci_config_path: 'debian/salsa-ci.yml')
@group = create(:group)
@group.add_user(@group_owner, GroupMember::OWNER)
@group.add_user(@developer, GroupMember::DEVELOPER)
......@@ -228,14 +230,15 @@ describe Projects::ForkService do
it 'group owner successfully forks project into the group' do
to_project = fork_project(@project, @group_owner, @opts)
expect(to_project).to be_persisted
expect(to_project.errors).to be_empty
expect(to_project.owner).to eq(@group)
expect(to_project.namespace).to eq(@group)
expect(to_project.name).to eq(@project.name)
expect(to_project.path).to eq(@project.path)
expect(to_project.description).to eq(@project.description)
expect(to_project.star_count).to be_zero
expect(to_project).to be_persisted
expect(to_project.errors).to be_empty
expect(to_project.owner).to eq(@group)
expect(to_project.namespace).to eq(@group)
expect(to_project.name).to eq(@project.name)
expect(to_project.path).to eq(@project.path)
expect(to_project.description).to eq(@project.description)
expect(to_project.ci_config_path).to eq(@project.ci_config_path)
expect(to_project.star_count).to be_zero
end
end
......
......@@ -373,6 +373,8 @@ module GpgHelpers
KEY
end
# passphrase for secret key is:
# 4a45718624c9939a043471d83d1eda7c
def secret_key
<<~SECRET
-----BEGIN PGP PRIVATE KEY BLOCK-----
......
......@@ -45,14 +45,6 @@ shared_examples 'zoom quick actions' do
expect(page).to have_content('Failed to add a Zoom meeting')
expect(page).not_to have_content(zoom_link)
end
context 'when feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
include_examples 'skip silently'
end
end
context 'with Zoom link not at the end of the issue description' do
......@@ -92,14 +84,6 @@ shared_examples 'zoom quick actions' do
expect(page).to have_content('Zoom meeting removed')
expect(issue.reload.description).to eq("Text with #{zoom_link}")
end
context 'when feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
include_examples 'skip silently'
end
end
context 'with a Zoom link not at the end of the description' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment