Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-06-23 18:07:23 +00:00
parent f9c23393a5
commit 2926cbb864
7 changed files with 64 additions and 40 deletions

View File

@ -1 +1 @@
b7cdb3d14671f81166148616b029db2b5a785709
ef91aecceeb69d7b7d7e7f8fb8b26e4dfcf1c266

View File

@ -432,7 +432,7 @@ group :development, :test do
end
group :development, :test, :danger do
gem 'gitlab-dangerfiles', '~> 3.10.0', require: false
gem 'gitlab-dangerfiles', '~> 3.11.0', require: false
end
group :development, :test, :coverage do

View File

@ -207,7 +207,7 @@
{"name":"gitaly","version":"16.1.0.pre.rc2","platform":"ruby","checksum":"0007db161bd3f12321813e7095c8d3266d74b0a22b84d7cba8df864c0b88e3af"},
{"name":"gitlab","version":"4.19.0","platform":"ruby","checksum":"3f645e3e195dbc24f0834fbf83e8ccfb2056d8e9712b01a640aad418a6949679"},
{"name":"gitlab-chronic","version":"0.10.5","platform":"ruby","checksum":"f80f18dc699b708870a80685243331290bc10cfeedb6b99c92219722f729c875"},
{"name":"gitlab-dangerfiles","version":"3.10.0","platform":"ruby","checksum":"df4cfe051f52529c0256346d89d06d5ef2bb630928754eb620b5233eb9b14041"},
{"name":"gitlab-dangerfiles","version":"3.11.0","platform":"ruby","checksum":"9a5cfe03e00c9d489782ad330ece4ce109e6cea1dcaae3eb41a5b5aed234a123"},
{"name":"gitlab-experiment","version":"0.7.1","platform":"ruby","checksum":"166dddb3aa83428bcaa93c35684ed01dc4d61f321fd2ae40b020806dc54a7824"},
{"name":"gitlab-fog-azure-rm","version":"1.7.0","platform":"ruby","checksum":"969c67943c54ad4c259a6acd040493f13922fbdf2211bb4eca00e71505263dc2"},
{"name":"gitlab-labkit","version":"0.33.0","platform":"ruby","checksum":"d1fba8d30fde314a3f5dee1921ac31860bed4fecd8aa98ac6671f2627479e05b"},

View File

@ -594,7 +594,7 @@ GEM
terminal-table (>= 1.5.1)
gitlab-chronic (0.10.5)
numerizer (~> 0.2)
gitlab-dangerfiles (3.10.0)
gitlab-dangerfiles (3.11.0)
danger (>= 8.4.5)
danger-gitlab (>= 8.0.0)
rake
@ -1767,7 +1767,7 @@ DEPENDENCIES
gettext_i18n_rails_js (~> 1.3)
gitaly (~> 16.1.0.pre.rc2)
gitlab-chronic (~> 0.10.5)
gitlab-dangerfiles (~> 3.10.0)
gitlab-dangerfiles (~> 3.11.0)
gitlab-experiment (~> 0.7.1)
gitlab-fog-azure-rm (~> 1.7.0)
gitlab-labkit (~> 0.33.0)

View File

@ -4,8 +4,7 @@ import {
GlTooltipDirective,
GlSprintf,
GlIcon,
GlDropdown,
GlDropdownItem,
GlDisclosureDropdown,
} from '@gitlab/ui';
import { formatDate } from '~/lib/utils/datetime_utility';
import { numberToHumanSize } from '~/lib/utils/number_utils';
@ -33,8 +32,7 @@ export default {
GlSprintf,
GlFormCheckbox,
GlIcon,
GlDropdown,
GlDropdownItem,
GlDisclosureDropdown,
ListItem,
ClipboardButton,
TimeAgoTooltip,
@ -76,6 +74,22 @@ export default {
COPY_IMAGE_PATH_TITLE,
},
computed: {
items() {
return [
{
text: this.$options.i18n.REMOVE_TAG_BUTTON_TITLE,
extraAttrs: {
class: 'gl-text-red-500!',
'data-testid': 'single-delete-button',
'data-qa-selector': 'tag_delete_button',
},
action: () => {
this.$emit('delete');
},
},
];
},
formattedSize() {
return this.tag.totalSize
? numberToHumanSize(Number(this.tag.totalSize))
@ -177,27 +191,19 @@ export default {
</span>
</template>
<template v-if="tag.canDelete" #right-action>
<gl-dropdown
<gl-disclosure-dropdown
:disabled="disabled"
icon="ellipsis_v"
:text="$options.i18n.MORE_ACTIONS_TEXT"
:toggle-text="$options.i18n.MORE_ACTIONS_TEXT"
:text-sr-only="true"
category="tertiary"
no-caret
right
placement="right"
:class="{ 'gl-opacity-0 gl-pointer-events-none': disabled }"
data-testid="additional-actions"
data-qa-selector="more_actions_menu"
>
<gl-dropdown-item
variant="danger"
data-testid="single-delete-button"
data-qa-selector="tag_delete_button"
@click="$emit('delete')"
>
{{ $options.i18n.REMOVE_TAG_BUTTON_TITLE }}
</gl-dropdown-item>
</gl-dropdown>
:items="items"
/>
</template>
<template v-if="!isInvalidTag" #details-published>

View File

@ -24,6 +24,7 @@ jest.mock('~/invite_members/utils/trigger_successful_invite_alert');
describe('InviteGroupsModal', () => {
let wrapper;
const mockToastShow = jest.fn();
const createComponent = (props = {}) => {
wrapper = shallowMountExtended(InviteGroupsModal, {
@ -39,9 +40,18 @@ describe('InviteGroupsModal', () => {
template: '<div><slot></slot><slot name="modal-footer"></slot></div>',
}),
},
mocks: {
$toast: {
show: mockToastShow,
},
},
});
};
afterEach(() => {
mockToastShow.mockClear();
});
const createInviteGroupToProjectWrapper = () => {
createComponent({ isProject: true });
};
@ -133,7 +143,6 @@ describe('InviteGroupsModal', () => {
createComponent();
triggerGroupSelect(sharedGroup);
wrapper.vm.$toast = { show: jest.fn() };
jest.spyOn(Api, 'groupShareWithGroup').mockImplementation(
() =>
new Promise((resolve, reject) => {
@ -167,7 +176,7 @@ describe('InviteGroupsModal', () => {
});
it('displays the successful toastMessage', () => {
expect(wrapper.vm.$toast.show).toHaveBeenCalledWith('Members were successfully added', {
expect(mockToastShow).toHaveBeenCalledWith('Members were successfully added', {
onComplete: expect.any(Function),
});
});
@ -187,7 +196,7 @@ describe('InviteGroupsModal', () => {
});
it('does not show the toast message on failure', () => {
expect(wrapper.vm.$toast.show).not.toHaveBeenCalled();
expect(mockToastShow).not.toHaveBeenCalled();
});
it('displays the generic error for http server error', () => {
@ -222,7 +231,6 @@ describe('InviteGroupsModal', () => {
createComponent({ reloadPageOnSubmit: true });
triggerGroupSelect(sharedGroup);
wrapper.vm.$toast = { show: jest.fn() };
jest.spyOn(Api, 'groupShareWithGroup').mockResolvedValue({ data: groupPostData });
clickInviteButton();
@ -238,7 +246,7 @@ describe('InviteGroupsModal', () => {
});
it('does not show the toast message on failure', () => {
expect(wrapper.vm.$toast.show).not.toHaveBeenCalled();
expect(mockToastShow).not.toHaveBeenCalled();
});
});
});

View File

@ -1,5 +1,11 @@
import { GlFormCheckbox, GlSprintf, GlIcon, GlDropdown, GlDropdownItem } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import {
GlFormCheckbox,
GlSprintf,
GlIcon,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
} from '@gitlab/ui';
import { shallowMount, mount } from '@vue/test-utils';
import { nextTick } from 'vue';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
@ -37,16 +43,17 @@ describe('tags list row', () => {
const findManifestDetail = () => wrapper.find('[data-testid="manifest-detail"]');
const findConfigurationDetail = () => wrapper.find('[data-testid="configuration-detail"]');
const findWarningIcon = () => wrapper.findComponent(GlIcon);
const findAdditionalActionsMenu = () => wrapper.findComponent(GlDropdown);
const findDeleteButton = () => wrapper.findComponent(GlDropdownItem);
const findAdditionalActionsMenu = () => wrapper.findComponent(GlDisclosureDropdown);
const findDeleteButton = () => wrapper.findComponent(GlDisclosureDropdownItem);
const mountComponent = (propsData = defaultProps) => {
wrapper = shallowMount(component, {
const mountComponent = (propsData = defaultProps, mountFn = shallowMount) => {
wrapper = mountFn(component, {
stubs: {
GlSprintf,
ListItem,
DetailsRow,
GlDropdown,
GlDisclosureDropdown,
GlDisclosureDropdownItem,
},
propsData,
directives: {
@ -274,10 +281,10 @@ describe('tags list row', () => {
expect(findAdditionalActionsMenu().props()).toMatchObject({
icon: 'ellipsis_v',
text: 'More actions',
toggleText: 'More actions',
textSrOnly: true,
category: 'tertiary',
right: true,
placement: 'right',
disabled: false,
});
});
@ -308,16 +315,19 @@ describe('tags list row', () => {
mountComponent();
expect(findDeleteButton().exists()).toBe(true);
expect(findDeleteButton().attributes()).toMatchObject({
variant: 'danger',
expect(findDeleteButton().props('item').extraAttrs).toMatchObject({
class: 'gl-text-red-500!',
'data-testid': 'single-delete-button',
'data-qa-selector': 'tag_delete_button',
});
expect(findDeleteButton().text()).toBe(REMOVE_TAG_BUTTON_TITLE);
});
it('delete event emits delete', () => {
mountComponent();
mountComponent(undefined, mount);
findDeleteButton().vm.$emit('click');
wrapper.find('[data-testid="single-delete-button"]').trigger('click');
expect(wrapper.emitted('delete')).toEqual([[]]);
});