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: ...@@ -209,7 +209,7 @@ review-qa-all:
when: manual when: manual
parallel: 5 parallel: 5
script: 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 - 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 - 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 @@ ...@@ -2,9 +2,9 @@
## Canonical source ## 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 ## Free trial
......
export default {
data() {
return {
isCustomStageForm: false,
};
},
methods: {
showAddStageForm: () => {},
hideAddStageForm: () => {},
},
};
...@@ -3,7 +3,6 @@ import Vue from 'vue'; ...@@ -3,7 +3,6 @@ import Vue from 'vue';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { GlEmptyState } from '@gitlab/ui'; import { GlEmptyState } from '@gitlab/ui';
import filterMixins from 'ee_else_ce/analytics/cycle_analytics/mixins/filter_mixins'; 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 Flash from '../flash';
import { __ } from '~/locale'; import { __ } from '~/locale';
import Translate from '../vue_shared/translate'; import Translate from '../vue_shared/translate';
...@@ -44,14 +43,8 @@ export default () => { ...@@ -44,14 +43,8 @@ export default () => {
DateRangeDropdown: () => DateRangeDropdown: () =>
import('ee_component/analytics/shared/components/date_range_dropdown.vue'), import('ee_component/analytics/shared/components/date_range_dropdown.vue'),
'stage-nav-item': stageNavItem, '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() { data() {
return { return {
store: CycleAnalyticsStore, store: CycleAnalyticsStore,
...@@ -131,7 +124,6 @@ export default () => { ...@@ -131,7 +124,6 @@ export default () => {
return; return;
} }
this.hideAddStageForm();
this.isLoadingStage = true; this.isLoadingStage = true;
this.store.setStageEvents([], stage); this.store.setStageEvents([], stage);
this.store.setActiveStage(stage); this.store.setActiveStage(stage);
......
...@@ -152,6 +152,14 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo ...@@ -152,6 +152,14 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
branch: getters.branchName, branch: getters.branchName,
}) })
.then(() => { .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) { if (state.shouldCreateMR) {
const { currentProject } = rootGetters; const { currentProject } = rootGetters;
const targetBranch = getters.isCreatingNewBranch const targetBranch = getters.isCreatingNewBranch
...@@ -164,14 +172,6 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo ...@@ -164,14 +172,6 @@ export const commitChanges = ({ commit, state, getters, dispatch, rootState, roo
{ root: true }, { 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(() => { .then(() => {
if (rootGetters.lastOpenedFile) { if (rootGetters.lastOpenedFile) {
......
<script> <script>
import { __ } from '~/locale'; import { s__, __ } from '~/locale';
import { GlLink, GlButton } from '@gitlab/ui'; import { GlLink, GlButton } from '@gitlab/ui';
import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts'; import { GlAreaChart, GlLineChart, GlChartSeriesLabel } from '@gitlab/ui/dist/charts';
import dateFormat from 'dateformat'; import dateFormat from 'dateformat';
...@@ -52,6 +52,16 @@ export default { ...@@ -52,6 +52,16 @@ export default {
required: false, required: false,
default: () => [], default: () => [],
}, },
legendAverageText: {
type: String,
required: false,
default: s__('Metrics|Avg'),
},
legendMaxText: {
type: String,
required: false,
default: s__('Metrics|Max'),
},
}, },
data() { data() {
return { return {
...@@ -260,7 +270,6 @@ export default { ...@@ -260,7 +270,6 @@ export default {
<slot></slot> <slot></slot>
</div> </div>
</div> </div>
<component <component
:is="glChartComponent" :is="glChartComponent"
ref="chart" ref="chart"
...@@ -271,6 +280,8 @@ export default { ...@@ -271,6 +280,8 @@ export default {
:thresholds="thresholds" :thresholds="thresholds"
:width="width" :width="width"
:height="height" :height="height"
:average-text="legendAverageText"
:max-text="legendMaxText"
@updated="onChartUpdated" @updated="onChartUpdated"
> >
<template v-if="tooltip.isDeployment"> <template v-if="tooltip.isDeployment">
......
...@@ -81,7 +81,7 @@ module SubmoduleHelper ...@@ -81,7 +81,7 @@ module SubmoduleHelper
end end
def relative_self_links(relative_path, commit, project) def relative_self_links(relative_path, commit, project)
relative_path.rstrip! relative_path = relative_path.rstrip
absolute_project_path = "/" + project.full_path absolute_project_path = "/" + project.full_path
# Resolve `relative_path` to target path # Resolve `relative_path` to target path
......
...@@ -85,7 +85,7 @@ module Emails ...@@ -85,7 +85,7 @@ module Emails
@project = Project.find(project_id) @project = Project.find(project_id)
@results = results @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.html { render layout: 'mailer' }
format.text { render layout: 'mailer' } format.text { render layout: 'mailer' }
end end
...@@ -105,7 +105,7 @@ module Emails ...@@ -105,7 +105,7 @@ module Emails
def issue_thread_options(sender_id, recipient_id, reason) def issue_thread_options(sender_id, recipient_id, reason)
{ {
from: sender(sender_id), 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})"), subject: subject("#{@issue.title} (##{@issue.iid})"),
'X-GitLab-NotificationReason' => reason 'X-GitLab-NotificationReason' => reason
} }
......
...@@ -13,7 +13,9 @@ module Emails ...@@ -13,7 +13,9 @@ module Emails
@member_source_type = member_source_type @member_source_type = member_source_type
@member_id = member_id @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}")) subject: subject("Request to join the #{member_source.human_name} #{member_source.model_name.singular}"))
end end
...@@ -21,7 +23,7 @@ module Emails ...@@ -21,7 +23,7 @@ module Emails
@member_source_type = member_source_type @member_source_type = member_source_type
@member_id = member_id @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")) subject: subject("Access to the #{member_source.human_name} #{member_source.model_name.singular} was granted"))
end end
...@@ -29,7 +31,9 @@ module Emails ...@@ -29,7 +31,9 @@ module Emails
@member_source_type = member_source_type @member_source_type = member_source_type
@member_source = member_source_class.find(source_id) @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")) subject: subject("Access to the #{member_source.human_name} #{member_source.model_name.singular} was denied"))
end end
...@@ -47,7 +51,7 @@ module Emails ...@@ -47,7 +51,7 @@ module Emails
@member_id = member_id @member_id = member_id
return unless member.created_by 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')) subject: subject('Invitation accepted'))
end end
...@@ -58,7 +62,9 @@ module Emails ...@@ -58,7 +62,9 @@ module Emails
@member_source = member_source_class.find(source_id) @member_source = member_source_class.find(source_id)
@invite_email = invite_email @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')) subject: subject('Invitation declined'))
end end
......
...@@ -110,7 +110,7 @@ module Emails ...@@ -110,7 +110,7 @@ module Emails
def merge_request_thread_options(sender_id, recipient_id, reason = nil) def merge_request_thread_options(sender_id, recipient_id, reason = nil)
{ {
from: sender(sender_id), 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})"), subject: subject("#{@merge_request.title} (#{@merge_request.to_reference})"),
'X-GitLab-NotificationReason' => reason 'X-GitLab-NotificationReason' => reason
} }
......
...@@ -55,7 +55,7 @@ module Emails ...@@ -55,7 +55,7 @@ module Emails
def note_thread_options(recipient_id, reason) def note_thread_options(recipient_id, reason)
{ {
from: sender(@note.author_id), 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})"), subject: subject("#{@note.noteable.title} (#{@note.noteable.reference_link_text})"),
'X-GitLab-NotificationReason' => reason 'X-GitLab-NotificationReason' => reason
} }
......
...@@ -7,7 +7,7 @@ module Emails ...@@ -7,7 +7,7 @@ module Emails
@project = domain.project @project = domain.project
mail( mail(
to: recipient(recipient.id, @project.group), to: recipient.notification_email_for(@project.group),
subject: subject("GitLab Pages domain '#{domain.domain}' has been enabled") subject: subject("GitLab Pages domain '#{domain.domain}' has been enabled")
) )
end end
...@@ -17,7 +17,7 @@ module Emails ...@@ -17,7 +17,7 @@ module Emails
@project = domain.project @project = domain.project
mail( mail(
to: recipient(recipient.id, @project.group), to: recipient.notification_email_for(@project.group),
subject: subject("GitLab Pages domain '#{domain.domain}' has been disabled") subject: subject("GitLab Pages domain '#{domain.domain}' has been disabled")
) )
end end
...@@ -27,7 +27,7 @@ module Emails ...@@ -27,7 +27,7 @@ module Emails
@project = domain.project @project = domain.project
mail( mail(
to: recipient(recipient.id, @project.group), to: recipient.notification_email_for(@project.group),
subject: subject("Verification succeeded for GitLab Pages domain '#{domain.domain}'") subject: subject("Verification succeeded for GitLab Pages domain '#{domain.domain}'")
) )
end end
...@@ -37,7 +37,7 @@ module Emails ...@@ -37,7 +37,7 @@ module Emails
@project = domain.project @project = domain.project
mail( 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}'") subject: subject("ACTION REQUIRED: Verification failed for GitLab Pages domain '#{domain.domain}'")
) )
end end
......
...@@ -7,20 +7,20 @@ module Emails ...@@ -7,20 +7,20 @@ module Emails
@project = Project.find project_id @project = Project.find project_id
@target_url = project_url(@project) @target_url = project_url(@project)
@old_path_with_namespace = old_path_with_namespace @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")) subject: subject("Project was moved"))
end end
def project_was_exported_email(current_user, project) def project_was_exported_email(current_user, project)
@project = 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")) subject: subject("Project was exported"))
end end
def project_was_not_exported_email(current_user, project, errors) def project_was_not_exported_email(current_user, project, errors)
@project = project @project = project
@errors = errors @errors = errors
mail(to: recipient(current_user.id, @project.group), mail(to: current_user.notification_email_for(@project.group),
subject: subject("Project export error")) subject: subject("Project export error"))
end end
...@@ -28,7 +28,7 @@ module Emails ...@@ -28,7 +28,7 @@ module Emails
@project = project @project = project
@user = user @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 end
def repository_cleanup_failure_email(project, user, error) def repository_cleanup_failure_email(project, user, error)
...@@ -36,7 +36,7 @@ module Emails ...@@ -36,7 +36,7 @@ module Emails
@user = user @user = user
@error = error @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 end
def repository_push_email(project_id, opts = {}) def repository_push_email(project_id, opts = {})
......
...@@ -5,8 +5,9 @@ module Emails ...@@ -5,8 +5,9 @@ module Emails
def remote_mirror_update_failed_email(remote_mirror_id, recipient_id) def remote_mirror_update_failed_email(remote_mirror_id, recipient_id)
@remote_mirror = RemoteMirror.find_by_id(remote_mirror_id) @remote_mirror = RemoteMirror.find_by_id(remote_mirror_id)
@project = @remote_mirror.project @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 end
end end
...@@ -71,20 +71,6 @@ class Notify < BaseMailer ...@@ -71,20 +71,6 @@ class Notify < BaseMailer
address.format address.format
end 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 # Formats arguments into a String suitable for use as an email subject
# #
# extra - Extra Strings to be inserted into the subject # extra - Extra Strings to be inserted into the subject
......
...@@ -245,7 +245,6 @@ class Project < ApplicationRecord ...@@ -245,7 +245,6 @@ class Project < ApplicationRecord
has_one :cluster_project, class_name: 'Clusters::Project' has_one :cluster_project, class_name: 'Clusters::Project'
has_many :clusters, through: :cluster_project, class_name: 'Clusters::Cluster' 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 :kubernetes_namespaces, class_name: 'Clusters::KubernetesNamespace'
has_many :prometheus_metrics has_many :prometheus_metrics
......
...@@ -17,7 +17,7 @@ module Issues ...@@ -17,7 +17,7 @@ module Issues
end end
def can_add_link? def can_add_link?
available? && !link_in_issue_description? can? && !link_in_issue_description?
end end
def remove_link def remove_link
...@@ -29,7 +29,7 @@ module Issues ...@@ -29,7 +29,7 @@ module Issues
end end
def can_remove_link? def can_remove_link?
available? && link_in_issue_description? can? && link_in_issue_description?
end end
def parse_link(link) def parse_link(link)
...@@ -75,14 +75,6 @@ module Issues ...@@ -75,14 +75,6 @@ module Issues
issue_description[/(\S+)\z/, 1] issue_description[/(\S+)\z/, 1]
end end
def available?
feature_enabled? && can?
end
def feature_enabled?
Feature.enabled?(:issue_zoom_integration, project)
end
def can? def can?
current_user.can?(:update_issue, project) current_user.can?(:update_issue, project)
end end
......
...@@ -43,6 +43,7 @@ module Projects ...@@ -43,6 +43,7 @@ module Projects
shared_runners_enabled: @project.shared_runners_enabled, shared_runners_enabled: @project.shared_runners_enabled,
namespace_id: target_namespace.id, namespace_id: target_namespace.id,
fork_network: fork_network, 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 # 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 # @project.ci_default_git_depth is nil in order to keep the same behaviour
# and not get ProjectCiCdSetting::DEFAULT_GIT_DEPTH set on create # and not get ProjectCiCdSetting::DEFAULT_GIT_DEPTH set on create
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
- if any_dashboard_nav_link?([:groups, :milestones, :activity, :snippets]) - if any_dashboard_nav_link?([:groups, :milestones, :activity, :snippets])
%li.header-more.dropdown %li.header-more.dropdown
%a{ href: "#", data: { toggle: "dropdown" } } %a{ href: "#", data: { toggle: "dropdown", qa_selector: 'more_dropdown' } }
= _('More') = _('More')
= sprite_icon('angle-down', css_class: 'caret-down') = sprite_icon('angle-down', css_class: 'caret-down')
.dropdown-menu .dropdown-menu
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
- if dashboard_nav_link?(:snippets) - if dashboard_nav_link?(:snippets)
= nav_link(controller: 'dashboard/snippets') do = 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') = _('Snippets')
= render_if_exists 'layouts/nav/sidebar/analytics_more_link' = 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: ...@@ -67,7 +67,7 @@ Example response:
"title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.", "title": "Accusamus iste et ullam ratione voluptatem omnis debitis dolor est.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.", "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"state": "opened", "state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/4", "web_url": "http://localhost:3001/groups/test/-/epics/4",
"reference": "&4", "reference": "&4",
"author": { "author": {
"id": 10, "id": 10,
...@@ -122,7 +122,7 @@ Example response: ...@@ -122,7 +122,7 @@ Example response:
"title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.", "title": "Ea cupiditate dolores ut vero consequatur quasi veniam voluptatem et non.",
"description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.", "description": "Molestias dolorem eos vitae expedita impedit necessitatibus quo voluptatum.",
"state": "opened", "state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/5", "web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&5", "reference": "&5",
"author":{ "author":{
"id": 7, "id": 7,
...@@ -188,7 +188,7 @@ Example response: ...@@ -188,7 +188,7 @@ Example response:
"title": "Epic", "title": "Epic",
"description": "Epic description", "description": "Epic description",
"state": "opened", "state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/6", "web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&6", "reference": "&6",
"author": { "author": {
"name" : "Alexandra Bashirian", "name" : "Alexandra Bashirian",
...@@ -255,7 +255,7 @@ Example response: ...@@ -255,7 +255,7 @@ Example response:
"title": "New Title", "title": "New Title",
"description": "Epic description", "description": "Epic description",
"state": "opened", "state": "opened",
"web_edit_url": "http://localhost:3001/groups/test/-/epics/6", "web_url": "http://localhost:3001/groups/test/-/epics/5",
"reference": "&6", "reference": "&6",
"author": { "author": {
"name" : "Alexandra Bashirian", "name" : "Alexandra Bashirian",
......
...@@ -64,8 +64,8 @@ The following quick actions are applicable to descriptions, discussions and thre ...@@ -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 | | `/create_merge_request <branch name>` | ✓ | | | Create a new merge request starting from the current issue |
| `/relate #issue1 #issue2` | ✓ | | | Mark issues as related **(STARTER)** | | `/relate #issue1 #issue2` | ✓ | | | Mark issues as related **(STARTER)** |
| `/move <path/to/project>` | ✓ | | | Move this issue to another project | | `/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)) | | `/zoom <Zoom URL>` | ✓ | | | Add Zoom meeting to this issue. |
| `/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)) | | `/remove_zoom` | ✓ | | | Remove Zoom meeting from this issue. |
| `/target_branch <local branch name>` | | ✓ | | Set target branch | | `/target_branch <local branch name>` | | ✓ | | Set target branch |
| `/wip` | | ✓ | | Toggle the Work In Progress status | | `/wip` | | ✓ | | Toggle the Work In Progress status |
| `/approve` | | ✓ | | Approve the merge request | | `/approve` | | ✓ | | Approve the merge request |
......
...@@ -9858,6 +9858,9 @@ msgstr "" ...@@ -9858,6 +9858,9 @@ msgstr ""
msgid "Metrics|Add metric" msgid "Metrics|Add metric"
msgstr "" msgstr ""
msgid "Metrics|Avg"
msgstr ""
msgid "Metrics|Check out the CI/CD documentation on deploying to an environment" msgid "Metrics|Check out the CI/CD documentation on deploying to an environment"
msgstr "" msgstr ""
...@@ -9888,6 +9891,9 @@ msgstr "" ...@@ -9888,6 +9891,9 @@ msgstr ""
msgid "Metrics|Legend label (optional)" msgid "Metrics|Legend label (optional)"
msgstr "" msgstr ""
msgid "Metrics|Max"
msgstr ""
msgid "Metrics|Must be a valid PromQL query." msgid "Metrics|Must be a valid PromQL query."
msgstr "" msgstr ""
...@@ -15833,7 +15839,7 @@ msgstr "" ...@@ -15833,7 +15839,7 @@ msgstr ""
msgid "There was an error fetching configuration for charts" msgid "There was an error fetching configuration for charts"
msgstr "" msgstr ""
msgid "There was an error fetching the form data" msgid "There was an error fetching data for the form"
msgstr "" msgstr ""
msgid "There was an error gathering the chart data" 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/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/files_spec.rb": 5.015859127044678,
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 1.0199065208435059, "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 1.0199065208435059,
......
...@@ -20,6 +20,7 @@ module QA ...@@ -20,6 +20,7 @@ module QA
element :admin_area_link element :admin_area_link
element :projects_dropdown, required: true element :projects_dropdown, required: true
element :groups_dropdown, required: true element :groups_dropdown, required: true
element :more_dropdown, required: true
element :snippets_link element :snippets_link
end end
...@@ -52,6 +53,13 @@ module QA ...@@ -52,6 +53,13 @@ module QA
end end
end end
def go_to_snippets
within_top_menu do
click_element :more_dropdown
click_element :snippets_link
end
end
def click_admin_area def click_admin_area
within_top_menu { click_element :admin_area_link } within_top_menu { click_element :admin_area_link }
end end
...@@ -80,10 +88,6 @@ module QA ...@@ -80,10 +88,6 @@ module QA
end end
end end
def click_snippets_link
click_element :snippets_link
end
def search_for(term) def search_for(term)
fill_element :search_term_field, "#{term}\n" fill_element :search_term_field, "#{term}\n"
end end
......
...@@ -7,7 +7,7 @@ module QA ...@@ -7,7 +7,7 @@ module QA
Runtime::Browser.visit(:gitlab, Page::Main::Login) Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.perform(&:sign_in_using_credentials) 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| Resource::Snippet.fabricate_via_browser_ui! do |snippet|
snippet.title = 'Snippet title' snippet.title = 'Snippet title'
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ApplicationHelper do describe ApplicationHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe AutoDevopsHelper do describe AutoDevopsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe AvatarsHelper do describe AvatarsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe AwardEmojiHelper do describe AwardEmojiHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe BlameHelper do describe BlameHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe BlobHelper do describe BlobHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe BoardsHelper do describe BoardsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe BroadcastMessagesHelper do describe BroadcastMessagesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ButtonHelper do describe ButtonHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe CalendarHelper do describe CalendarHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe CiStatusHelper do describe CiStatusHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe CommitsHelper do describe CommitsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ComponentsHelper do describe ComponentsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe DashboardHelper do describe DashboardHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe DeferScriptTagHelper do describe DeferScriptTagHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe EmailsHelper do describe EmailsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe EventsHelper do describe EventsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ExploreHelper do describe ExploreHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe FormHelper do describe FormHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe GitHelper do describe GitHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe GitlabRoutingHelper do describe GitlabRoutingHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe GraphHelper do describe GraphHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe HooksHelper do describe HooksHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe IconsHelper do describe IconsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ImportHelper do describe ImportHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe InstanceConfigurationHelper do describe InstanceConfigurationHelper do
......
# frozen_string_literal: true
require "spec_helper" require "spec_helper"
describe IssuesHelper do describe IssuesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe LabelsHelper do describe LabelsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe MarkupHelper do describe MarkupHelper do
...@@ -408,12 +410,12 @@ describe MarkupHelper do ...@@ -408,12 +410,12 @@ describe MarkupHelper do
it 'preserves a link href when link text is truncated' do it 'preserves a link href when link text is truncated' do
text = 'The quick brown fox jumped over the lazy dog' # 44 chars 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 link_url = 'http://example.com/foo/bar/baz' # 30 chars
input << link_url input = "#{text}#{text}#{text} #{link_url}" # 163 chars
object = create_object(input)
expected_link_text = 'http://example...</a>' 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(link_url)
expect(first_line_in_markdown(object, attribute, 150, project: project)).to match(expected_link_text) expect(first_line_in_markdown(object, attribute, 150, project: project)).to match(expected_link_text)
end end
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe MembersHelper do describe MembersHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe MilestonesHelper do describe MilestonesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe MilestonesRoutingHelper do describe MilestonesRoutingHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe NamespacesHelper do describe NamespacesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe NavHelper, :do_not_mock_admin_mode do describe NavHelper, :do_not_mock_admin_mode do
......
# frozen_string_literal: true
require "spec_helper" require "spec_helper"
describe NotesHelper do describe NotesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe NotificationsHelper do describe NotificationsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe PageLayoutHelper do describe PageLayoutHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe PaginationHelper do describe PaginationHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe PreferencesHelper do describe PreferencesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe ProfilesHelper do describe ProfilesHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe RssHelper do describe RssHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe RunnersHelper do describe RunnersHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe SearchHelper do describe SearchHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe SidekiqHelper do describe SidekiqHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe SnippetsHelper do describe SnippetsHelper do
......
# frozen_string_literal: true
require "spec_helper" require "spec_helper"
describe StorageHelper do describe StorageHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe SubmoduleHelper do describe SubmoduleHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe TabHelper do describe TabHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe TimeHelper do describe TimeHelper do
......
# frozen_string_literal: true
require "spec_helper" require "spec_helper"
describe TodosHelper do describe TodosHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe TreeHelper do describe TreeHelper do
......
# frozen_string_literal: true
require "spec_helper" require "spec_helper"
describe UserCalloutsHelper do describe UserCalloutsHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe UsersHelper do describe UsersHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe VersionCheckHelper do describe VersionCheckHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe VisibilityLevelHelper do describe VisibilityLevelHelper do
......
# frozen_string_literal: true
require 'spec_helper' require 'spec_helper'
describe WikiHelper do describe WikiHelper do
......
...@@ -473,18 +473,16 @@ describe('IDE commit module actions', () => { ...@@ -473,18 +473,16 @@ describe('IDE commit module actions', () => {
}); });
it('resets changed files before redirecting', done => { it('resets changed files before redirecting', done => {
visitUrl = visitUrl.and.callFake(() => {
expect(store.state.stagedFiles.length).toBe(0);
done();
});
spyOn(eventHub, '$on'); spyOn(eventHub, '$on');
store.state.commit.commitAction = '3'; store.state.commit.commitAction = '3';
store store.dispatch('commit/commitChanges').catch(done.fail);
.dispatch('commit/commitChanges')
.then(() => {
expect(store.state.stagedFiles.length).toBe(0);
done();
})
.catch(done.fail);
}); });
}); });
}); });
......
...@@ -60,6 +60,18 @@ describe('Time series component', () => { ...@@ -60,6 +60,18 @@ describe('Time series component', () => {
expect(timeSeriesChart.find('.js-graph-widgets').text()).toBe(mockWidgets); 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('methods', () => {
describe('formatTooltipText', () => { describe('formatTooltipText', () => {
const mockDate = deploymentData[0].created_at; const mockDate = deploymentData[0].created_at;
......
...@@ -250,7 +250,6 @@ project: ...@@ -250,7 +250,6 @@ project:
- cluster - cluster
- clusters - clusters
- cluster_project - cluster_project
- cluster_ingresses
- creator - creator
- cycle_analytics_stages - cycle_analytics_stages
- group - group
......
...@@ -38,12 +38,6 @@ describe Issues::ZoomLinkService do ...@@ -38,12 +38,6 @@ describe Issues::ZoomLinkService do
end end
end end
shared_context 'feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
end
shared_context 'insufficient permissions' do shared_context 'insufficient permissions' do
before do before do
project.add_guest(user) project.add_guest(user)
...@@ -78,11 +72,6 @@ describe Issues::ZoomLinkService do ...@@ -78,11 +72,6 @@ describe Issues::ZoomLinkService do
include_examples 'cannot add link' include_examples 'cannot add link'
end end
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
include_examples 'cannot add link'
end
context 'with insufficient permissions' do context 'with insufficient permissions' do
include_context 'insufficient permissions' include_context 'insufficient permissions'
include_examples 'cannot add link' include_examples 'cannot add link'
...@@ -113,12 +102,6 @@ describe Issues::ZoomLinkService do ...@@ -113,12 +102,6 @@ describe Issues::ZoomLinkService do
it { is_expected.to eq(true) } 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 context 'with insufficient permissions' do
include_context 'insufficient permissions' include_context 'insufficient permissions'
...@@ -152,11 +135,6 @@ describe Issues::ZoomLinkService do ...@@ -152,11 +135,6 @@ describe Issues::ZoomLinkService do
.to eq(issue.description.delete_suffix("\n\n#{zoom_link}")) .to eq(issue.description.delete_suffix("\n\n#{zoom_link}"))
end end
context 'when feature flag is disabled' do
include_context 'feature flag disabled'
include_examples 'cannot remove link'
end
context 'with insufficient permissions' do context 'with insufficient permissions' do
include_context 'insufficient permissions' include_context 'insufficient permissions'
include_examples 'cannot remove link' include_examples 'cannot remove link'
...@@ -187,12 +165,6 @@ describe Issues::ZoomLinkService do ...@@ -187,12 +165,6 @@ describe Issues::ZoomLinkService do
it { is_expected.to eq(true) } 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 context 'with insufficient permissions' do
include_context 'insufficient permissions' include_context 'insufficient permissions'
......
...@@ -50,6 +50,7 @@ describe Projects::ForkService do ...@@ -50,6 +50,7 @@ describe Projects::ForkService do
it { expect(to_project.star_count).to be_zero } it { expect(to_project.star_count).to be_zero }
it { expect(to_project.description).to eq(@from_project.description) } it { expect(to_project.description).to eq(@from_project.description) }
it { expect(to_project.avatar.file).to be_exists } 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 # This test is here because we had a bug where the from-project lost its
# avatar after being forked. # avatar after being forked.
...@@ -215,7 +216,8 @@ describe Projects::ForkService do ...@@ -215,7 +216,8 @@ describe Projects::ForkService do
@project = create(:project, :repository, @project = create(:project, :repository,
creator_id: @group_owner.id, creator_id: @group_owner.id,
star_count: 777, 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 = create(:group)
@group.add_user(@group_owner, GroupMember::OWNER) @group.add_user(@group_owner, GroupMember::OWNER)
@group.add_user(@developer, GroupMember::DEVELOPER) @group.add_user(@developer, GroupMember::DEVELOPER)
...@@ -228,14 +230,15 @@ describe Projects::ForkService do ...@@ -228,14 +230,15 @@ describe Projects::ForkService do
it 'group owner successfully forks project into the group' do it 'group owner successfully forks project into the group' do
to_project = fork_project(@project, @group_owner, @opts) to_project = fork_project(@project, @group_owner, @opts)
expect(to_project).to be_persisted expect(to_project).to be_persisted
expect(to_project.errors).to be_empty expect(to_project.errors).to be_empty
expect(to_project.owner).to eq(@group) expect(to_project.owner).to eq(@group)
expect(to_project.namespace).to eq(@group) expect(to_project.namespace).to eq(@group)
expect(to_project.name).to eq(@project.name) expect(to_project.name).to eq(@project.name)
expect(to_project.path).to eq(@project.path) expect(to_project.path).to eq(@project.path)
expect(to_project.description).to eq(@project.description) expect(to_project.description).to eq(@project.description)
expect(to_project.star_count).to be_zero expect(to_project.ci_config_path).to eq(@project.ci_config_path)
expect(to_project.star_count).to be_zero
end end
end end
......
...@@ -373,6 +373,8 @@ module GpgHelpers ...@@ -373,6 +373,8 @@ module GpgHelpers
KEY KEY
end end
# passphrase for secret key is:
# 4a45718624c9939a043471d83d1eda7c
def secret_key def secret_key
<<~SECRET <<~SECRET
-----BEGIN PGP PRIVATE KEY BLOCK----- -----BEGIN PGP PRIVATE KEY BLOCK-----
......
...@@ -45,14 +45,6 @@ shared_examples 'zoom quick actions' do ...@@ -45,14 +45,6 @@ shared_examples 'zoom quick actions' do
expect(page).to have_content('Failed to add a Zoom meeting') expect(page).to have_content('Failed to add a Zoom meeting')
expect(page).not_to have_content(zoom_link) expect(page).not_to have_content(zoom_link)
end end
context 'when feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
include_examples 'skip silently'
end
end end
context 'with Zoom link not at the end of the issue description' do context 'with Zoom link not at the end of the issue description' do
...@@ -92,14 +84,6 @@ shared_examples 'zoom quick actions' do ...@@ -92,14 +84,6 @@ shared_examples 'zoom quick actions' do
expect(page).to have_content('Zoom meeting removed') expect(page).to have_content('Zoom meeting removed')
expect(issue.reload.description).to eq("Text with #{zoom_link}") expect(issue.reload.description).to eq("Text with #{zoom_link}")
end end
context 'when feature flag disabled' do
before do
stub_feature_flags(issue_zoom_integration: false)
end
include_examples 'skip silently'
end
end end
context 'with a Zoom link not at the end of the description' do 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