Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
f9c23393a5
commit
2926cbb864
|
|
@ -1 +1 @@
|
|||
b7cdb3d14671f81166148616b029db2b5a785709
|
||||
ef91aecceeb69d7b7d7e7f8fb8b26e4dfcf1c266
|
||||
|
|
|
|||
2
Gemfile
2
Gemfile
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"},
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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([[]]);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue