Commit 456a7247 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent ddd268b0
import $ from 'jquery'; import $ from 'jquery';
import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';
import axios from '~/lib/utils/axios_utils'; import axios from '~/lib/utils/axios_utils';
import Activities from '~/activities'; import Activities from '~/activities';
import { localTimeAgo } from '~/lib/utils/datetime_utility'; import { localTimeAgo } from '~/lib/utils/datetime_utility';
...@@ -209,7 +210,7 @@ export default class UserTabs { ...@@ -209,7 +210,7 @@ export default class UserTabs {
loadActivityCalendar() { loadActivityCalendar() {
const $calendarWrap = this.$parentEl.find('.tab-pane.active .user-calendar'); const $calendarWrap = this.$parentEl.find('.tab-pane.active .user-calendar');
if (!$calendarWrap.length) return; if (!$calendarWrap.length || bp.getBreakpointSize() === 'xs') return;
const calendarPath = $calendarWrap.data('calendarPath'); const calendarPath = $calendarWrap.data('calendarPath');
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
= s_('ClusterIntegration|Alternatively') = s_('ClusterIntegration|Alternatively')
%code{ :class => "js-ingress-domain-snippet" } #{@cluster.application_ingress_external_ip}.nip.io %code{ :class => "js-ingress-domain-snippet" } #{@cluster.application_ingress_external_ip}.nip.io
= s_('ClusterIntegration| can be used instead of a custom domain.') = s_('ClusterIntegration| can be used instead of a custom domain.')
- custom_domain_url = help_page_path('user/project/clusters/index', anchor: 'pointing-your-dns-at-the-external-endpoint') - custom_domain_url = help_page_path('user/clusters/applications.md', anchor: 'pointing-your-dns-at-the-external-endpoint')
- custom_domain_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: custom_domain_url } - custom_domain_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: custom_domain_url }
= s_('ClusterIntegration| %{custom_domain_start}More information%{custom_domain_end}.').html_safe % { custom_domain_start: custom_domain_start, custom_domain_end: '</a>'.html_safe } = s_('ClusterIntegration| %{custom_domain_start}More information%{custom_domain_end}.').html_safe % { custom_domain_start: custom_domain_start, custom_domain_end: '</a>'.html_safe }
......
...@@ -283,7 +283,7 @@ ...@@ -283,7 +283,7 @@
Dropdown option Dropdown option
.dropdown-footer .dropdown-footer
%strong Tip: %strong Tip:
If an author is not a member of this project, you can still filter by his name while using the search field. If an author is not a member of this project, you can still filter by their name while using the search field.
.dropdown.inline .dropdown.inline
%button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } } %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown' } }
Dropdown loading Dropdown loading
...@@ -322,7 +322,7 @@ ...@@ -322,7 +322,7 @@
Dropdown option Dropdown option
.dropdown-footer .dropdown-footer
%strong Tip: %strong Tip:
If an author is not a member of this project, you can still filter by his name while using the search field. If an author is not a member of this project, you can still filter by their name while using the search field.
.dropdown-loading .dropdown-loading
= icon('spinner spin') = icon('spinner spin')
......
---
title: Avoid loading user activity calendar on mobile
merge_request: 24277
author: Takuya Noguchi
type: fixed
---
title: Fix link to base domain help in clusters view
merge_request: 24658
author:
type: fixed
...@@ -20,7 +20,7 @@ Branching in an Agile environment usually happens around user stories with one ...@@ -20,7 +20,7 @@ Branching in an Agile environment usually happens around user stories with one
or more developers working on it. or more developers working on it.
If more than one developer then another branch for each developer is also used If more than one developer then another branch for each developer is also used
with his/her initials, and US id. with their initials, and US id.
After its tested merge into master and remove the branch. After its tested merge into master and remove the branch.
......
...@@ -4799,6 +4799,9 @@ msgstr "" ...@@ -4799,6 +4799,9 @@ msgstr ""
msgid "Comment & unresolve thread" msgid "Comment & unresolve thread"
msgstr "" msgstr ""
msgid "Comment '%{label}' position"
msgstr ""
msgid "Comment form position" msgid "Comment form position"
msgstr "" msgstr ""
......
...@@ -24,7 +24,7 @@ function update_tests_metadata() { ...@@ -24,7 +24,7 @@ function update_tests_metadata() {
scripts/merge-reports "${FLAKY_RSPEC_SUITE_REPORT_PATH}" rspec_flaky/all_*.json scripts/merge-reports "${FLAKY_RSPEC_SUITE_REPORT_PATH}" rspec_flaky/all_*.json
export FLAKY_RSPEC_GENERATE_REPORT="1" export FLAKY_RSPEC_GENERATE_REPORT="true"
scripts/flaky_examples/prune-old-flaky-examples "${FLAKY_RSPEC_SUITE_REPORT_PATH}" scripts/flaky_examples/prune-old-flaky-examples "${FLAKY_RSPEC_SUITE_REPORT_PATH}"
if [[ -n ${TESTS_METADATA_S3_BUCKET} ]]; then if [[ -n ${TESTS_METADATA_S3_BUCKET} ]]; then
......
...@@ -27,7 +27,7 @@ describe Admin::SpamLogsController do ...@@ -27,7 +27,7 @@ describe Admin::SpamLogsController do
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
end end
it 'removes user and his spam logs when removing the user', :sidekiq_might_not_need_inline do it 'removes user and their spam logs when removing the user', :sidekiq_might_not_need_inline do
delete :destroy, params: { id: first_spam.id, remove_user: true } delete :destroy, params: { id: first_spam.id, remove_user: true }
expect(flash[:notice]).to eq "User #{user.username} was successfully removed." expect(flash[:notice]).to eq "User #{user.username} was successfully removed."
......
...@@ -270,7 +270,7 @@ describe Admin::UsersController do ...@@ -270,7 +270,7 @@ describe Admin::UsersController do
post :update, params: params post :update, params: params
end end
context 'when the admin changes his own password' do context 'when the admin changes their own password' do
it 'updates the password' do it 'updates the password' do
expect { update_password(admin, 'AValidPassword1') } expect { update_password(admin, 'AValidPassword1') }
.to change { admin.reload.encrypted_password } .to change { admin.reload.encrypted_password }
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
require 'spec_helper' require 'spec_helper'
describe 'Contributions Calendar', :js do describe 'Contributions Calendar', :js do
include MobileHelpers
let(:user) { create(:user) } let(:user) { create(:user) }
let(:contributed_project) { create(:project, :public, :repository) } let(:contributed_project) { create(:project, :public, :repository) }
let(:issue_note) { create(:note, project: contributed_project) } let(:issue_note) { create(:note, project: contributed_project) }
...@@ -122,15 +124,15 @@ describe 'Contributions Calendar', :js do ...@@ -122,15 +124,15 @@ describe 'Contributions Calendar', :js do
end end
end end
describe 'calendar daily activities' do shared_context 'visit user page' do
shared_context 'visit user page' do before do
before do visit user.username
visit user.username page.find('.js-overview-tab a').click
page.find('.js-overview-tab a').click wait_for_requests
wait_for_requests
end
end end
end
describe 'calendar daily activities' do
shared_examples 'a day with activity' do |contribution_count:| shared_examples 'a day with activity' do |contribution_count:|
include_context 'visit user page' include_context 'visit user page'
...@@ -199,4 +201,22 @@ describe 'Contributions Calendar', :js do ...@@ -199,4 +201,22 @@ describe 'Contributions Calendar', :js do
end end
end end
end end
describe 'on smaller screens' do
shared_examples 'hidden activity calendar' do
include_context 'visit user page'
it 'hides the activity calender' do
expect(find('#js-overview')).not_to have_css('.js-contrib-calendar')
end
end
context 'size xs' do
before do
resize_screen_xs
end
it_behaves_like 'hidden activity calendar'
end
end
end end
...@@ -169,7 +169,7 @@ describe 'Invites' do ...@@ -169,7 +169,7 @@ describe 'Invites' do
end end
end end
it "doesn't accept invitations until the user confirms his email" do it "doesn't accept invitations until the user confirms their email" do
fill_in_sign_up_form(new_user) fill_in_sign_up_form(new_user)
sign_in(owner) sign_in(owner)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
require 'spec_helper' require 'spec_helper'
describe 'Projects > Members > Group member cannot request access to his group project' do describe 'Projects > Members > Group member cannot request access to their group project' do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:group) { create(:group) } let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) } let(:project) { create(:project, namespace: group) }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
require 'spec_helper' require 'spec_helper'
describe 'Projects > Members > Member cannot request access to his project' do describe 'Projects > Members > Member cannot request access to their project' do
let(:member) { create(:user) } let(:member) { create(:user) }
let(:project) { create(:project) } let(:project) { create(:project) }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
require 'spec_helper' require 'spec_helper'
describe 'Projects > Members > Owner cannot request access to his project' do describe 'Projects > Members > Owner cannot request access to their own project' do
let(:project) { create(:project) } let(:project) { create(:project) }
before do before do
......
...@@ -5,7 +5,7 @@ require 'spec_helper' ...@@ -5,7 +5,7 @@ require 'spec_helper'
describe 'GPG signed commits' do describe 'GPG signed commits' do
let(:project) { create(:project, :public, :repository) } let(:project) { create(:project, :public, :repository) }
it 'changes from unverified to verified when the user changes his email to match the gpg key', :sidekiq_might_not_need_inline do it 'changes from unverified to verified when the user changes their email to match the gpg key', :sidekiq_might_not_need_inline do
ref = GpgHelpers::SIGNED_AND_AUTHORED_SHA ref = GpgHelpers::SIGNED_AND_AUTHORED_SHA
user = create(:user, email: 'unrelated.user@example.org') user = create(:user, email: 'unrelated.user@example.org')
...@@ -18,7 +18,7 @@ describe 'GPG signed commits' do ...@@ -18,7 +18,7 @@ describe 'GPG signed commits' do
expect(page).to have_button 'Unverified' expect(page).to have_button 'Unverified'
expect(page).not_to have_button 'Verified' expect(page).not_to have_button 'Verified'
# user changes his email which makes the gpg key verified # user changes their email which makes the gpg key verified
perform_enqueued_jobs do perform_enqueued_jobs do
user.skip_reconfirmation! user.skip_reconfirmation!
user.update!(email: GpgHelpers::User1.emails.first) user.update!(email: GpgHelpers::User1.emails.first)
......
const devProps = {
id: 7,
name: 'DEV',
state: 'available',
external_url: null,
environment_type: null,
last_deployment: null,
has_stop_action: false,
environment_path: '/root/review-app/environments/7',
stop_path: '/root/review-app/environments/7/stop',
created_at: '2017-01-31T10:53:46.894Z',
updated_at: '2017-01-31T10:53:46.894Z',
};
const buildProps = {
id: 12,
name: 'build/update-README',
state: 'available',
external_url: null,
environment_type: 'build',
last_deployment: null,
has_stop_action: false,
environment_path: '/root/review-app/environments/12',
stop_path: '/root/review-app/environments/12/stop',
created_at: '2017-02-01T19:42:18.400Z',
updated_at: '2017-02-01T19:42:18.400Z',
};
const environment = { const environment = {
name: 'production', name: 'production',
size: 1, size: 1,
...@@ -66,6 +94,18 @@ const environment = { ...@@ -66,6 +94,18 @@ const environment = {
auto_stop_at: null, auto_stop_at: null,
}; };
const environmentsList = [
{
size: 1,
...devProps,
},
{
folderName: 'build',
size: 5,
...buildProps,
},
];
const folder = { const folder = {
name: 'review', name: 'review',
folderName: 'review', folderName: 'review',
...@@ -78,6 +118,23 @@ const folder = { ...@@ -78,6 +118,23 @@ const folder = {
}, },
}; };
const serverData = [
{
name: 'DEV',
size: 1,
latest: {
...devProps,
},
},
{
name: 'build',
size: 5,
latest: {
...buildProps,
},
},
];
const tableData = { const tableData = {
name: { name: {
title: 'Environment', title: 'Environment',
...@@ -108,4 +165,4 @@ const tableData = { ...@@ -108,4 +165,4 @@ const tableData = {
}, },
}; };
export { environment, folder, tableData }; export { environment, environmentsList, folder, serverData, tableData };
...@@ -30,43 +30,6 @@ export const environmentsList = [ ...@@ -30,43 +30,6 @@ export const environmentsList = [
}, },
]; ];
export const serverData = [
{
name: 'DEV',
size: 1,
latest: {
id: 7,
name: 'DEV',
state: 'available',
external_url: null,
environment_type: null,
last_deployment: null,
has_stop_action: false,
environment_path: '/root/review-app/environments/7',
stop_path: '/root/review-app/environments/7/stop',
created_at: '2017-01-31T10:53:46.894Z',
updated_at: '2017-01-31T10:53:46.894Z',
},
},
{
name: 'build',
size: 5,
latest: {
id: 12,
name: 'build/update-README',
state: 'available',
external_url: null,
environment_type: 'build',
last_deployment: null,
has_stop_action: false,
environment_path: '/root/review-app/environments/12',
stop_path: '/root/review-app/environments/12/stop',
created_at: '2017-02-01T19:42:18.400Z',
updated_at: '2017-02-01T19:42:18.400Z',
},
},
];
export const environment = { export const environment = {
name: 'DEV', name: 'DEV',
size: 1, size: 1,
......
...@@ -65,7 +65,7 @@ describe Clusters::Applications::CertManager do ...@@ -65,7 +65,7 @@ describe Clusters::Applications::CertManager do
cert_manager.email = cert_email cert_manager.email = cert_email
end end
it 'uses his/her email to register issuer with certificate provider' do it 'uses their email to register issuer with certificate provider' do
expect(subject.files).to eq(cert_manager.files.merge(cluster_issuer_file)) expect(subject.files).to eq(cert_manager.files.merge(cluster_issuer_file))
end end
end end
......
...@@ -749,7 +749,7 @@ describe API::Users do ...@@ -749,7 +749,7 @@ describe API::Users do
expect(user.email).to eq('new@email.com') expect(user.email).to eq('new@email.com')
end end
it 'updates user with his own username' do it 'updates user with their own username' do
put api("/users/#{user.id}", admin), params: { username: user.username } put api("/users/#{user.id}", admin), params: { username: user.username }
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
......
...@@ -124,6 +124,9 @@ RSpec.configure do |config| ...@@ -124,6 +124,9 @@ RSpec.configure do |config|
if ENV['CI'] || ENV['RETRIES'] if ENV['CI'] || ENV['RETRIES']
# This includes the first try, i.e. tests will be run 4 times before failing. # This includes the first try, i.e. tests will be run 4 times before failing.
config.default_retry_count = ENV.fetch('RETRIES', 3).to_i + 1 config.default_retry_count = ENV.fetch('RETRIES', 3).to_i + 1
end
if ENV['FLAKY_RSPEC_GENERATE_REPORT']
config.reporter.register_listener( config.reporter.register_listener(
RspecFlaky::Listener.new, RspecFlaky::Listener.new,
:example_passed, :example_passed,
......
...@@ -239,7 +239,7 @@ RSpec.shared_examples 'noteable API' do |parent_type, noteable_type, id_name| ...@@ -239,7 +239,7 @@ RSpec.shared_examples 'noteable API' do |parent_type, noteable_type, id_name|
end end
end end
context 'when the user is posting an award emoji on his/her own noteable' do context 'when the user is posting an award emoji on their own noteable' do
it 'creates a new note' do it 'creates a new note' do
post api("/#{parent_type}/#{parent.id}/#{noteable_type}/#{noteable[id_name]}/notes", user), params: { body: ':+1:' } post api("/#{parent_type}/#{parent.id}/#{noteable_type}/#{noteable[id_name]}/notes", user), params: { body: ':+1:' }
......
...@@ -735,15 +735,15 @@ ...@@ -735,15 +735,15 @@
dependencies: dependencies:
vue-eslint-parser "^6.0.4" vue-eslint-parser "^6.0.4"
"@gitlab/svgs@^1.95.0": "@gitlab/svgs@^1.96.0":
version "1.95.0" version "1.96.0"
resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.95.0.tgz#105311b8eae530dbe586232925690ca3e947a89b" resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.96.0.tgz#1d32730389e94358dc245e8336912523446d1269"
integrity sha512-sGvtkf5XgDhMA9vPJu2YLHiEk4tbF6W9AAxAl3lMfwaFdF4mwfOwVtAWLJaM+9ubL91t+jVsOtHGsAzATufnlg== integrity sha512-mhg6kndxDhwjWChKhs5utO6PowlOyFdaCXUrkkxxe2H3cd8DYa40QOEcJeUrSIhkmgIMVesUawesx5tt4Bnnnw==
"@gitlab/ui@^9.4.0": "@gitlab/ui@^9.4.1":
version "9.4.0" version "9.4.1"
resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-9.4.0.tgz#ffe3ca7845801cdefd42a9a7cc423a320d7ffdc2" resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-9.4.1.tgz#c4128ac07e1d6e4367a1c7a38dbee0aed1a2ae23"
integrity sha512-dsr+IZPjfe+UHVLlhVHF4kXd2daRUGzplC9WA5Odf1q9kHugGn1yK7glT5VCRQa2vtiTVvqGwXB7ENfHoz23Kg== integrity sha512-Xti1dKWhwzL/3sXdMU2z9P6Liip9UElAHXfAXBnRTEPO3JONhdbwbVXrLnCQzKhkJ6qEaM3cJiC9oIeFhlO/sw==
dependencies: dependencies:
"@babel/standalone" "^7.0.0" "@babel/standalone" "^7.0.0"
"@gitlab/vue-toasted" "^1.3.0" "@gitlab/vue-toasted" "^1.3.0"
......
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