mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-05-17 08:16:35 +00:00
fix: resolve auto merge option only available if multiple merge strategies enabled
add a new button that toggles auto merge if only a single merge strategy is enabled
This commit is contained in:
parent
03312e4f46
commit
229e511a8b
2 changed files with 114 additions and 0 deletions
|
|
@ -64,3 +64,93 @@ test('hides merge controls when no merge style is allowed', () => {
|
|||
expect(mergeform.find('.merge-button').exists()).toBe(false);
|
||||
expect(mergeform.find('form.form-fetch-action').exists()).toBe(false);
|
||||
});
|
||||
|
||||
test('shows merge styles dropdown when multiple merge styles are allowed', async () => {
|
||||
window.config.pageData.pullRequestMergeForm = {
|
||||
textAutoMergeButtonWhenSucceed: '(When checks succeed)',
|
||||
textAutoMergeWhenSucceed: 'Auto merge when all checks succeed',
|
||||
textAutoMergeCancelSchedule: 'Cancel auto merge',
|
||||
canMergeNow: true,
|
||||
defaultMergeStyle: 'merge',
|
||||
hasPendingPullRequestMerge: false,
|
||||
mergeStyles: [
|
||||
{
|
||||
name: 'merge',
|
||||
allowed: true,
|
||||
textDoMerge: 'Create merge commit',
|
||||
mergeTitleFieldText: '',
|
||||
mergeMessageFieldText: '',
|
||||
hideAutoMerge: false,
|
||||
},
|
||||
{
|
||||
name: 'rebase',
|
||||
allowed: true,
|
||||
textDoMerge: 'Rebase then fast-forward',
|
||||
mergeTitleFieldText: '',
|
||||
mergeMessageFieldText: '',
|
||||
hideAutoMerge: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const mergeform = mount(PullRequestMergeForm);
|
||||
await flushPromises();
|
||||
const mergeBtn = '.merge-button .ui.button .button-text';
|
||||
expect(mergeform.find(mergeBtn).exists()).toBe(true);
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Create merge commit');
|
||||
expect(mergeform.find('.merge-button .single-merge-strategy-auto-merge-btn').exists()).toBe(false);
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu').exists()).toBe(true);
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(1)').exists()).toBe(true);
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(1) .action-text').text()).toBe('Create merge commit');
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(1) .auto-merge-small').text()).toBe('Auto merge when all checks succeed');
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(2)').exists()).toBe(true);
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(2) .action-text').text()).toBe('Rebase then fast-forward');
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(2) .auto-merge-small').text()).toBe('Auto merge when all checks succeed');
|
||||
|
||||
await mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(2)').trigger('click');
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Rebase then fast-forward');
|
||||
|
||||
await mergeform.find('.merge-button .ui.dropdown .menu .item:nth-of-type(1) .auto-merge-small').trigger('click');
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Create merge commit (When checks succeed)');
|
||||
});
|
||||
|
||||
test('shows auto merge button when a single merge style is allowed', async () => {
|
||||
window.config.pageData.pullRequestMergeForm = {
|
||||
textAutoMergeButtonWhenSucceed: '(When checks succeed)',
|
||||
textAutoMergeWhenSucceed: 'Auto merge when all checks succeed',
|
||||
textAutoMergeCancelSchedule: 'Cancel auto merge',
|
||||
canMergeNow: true,
|
||||
defaultMergeStyle: 'merge',
|
||||
hasPendingPullRequestMerge: false,
|
||||
mergeStyles: [
|
||||
{
|
||||
name: 'merge',
|
||||
allowed: true,
|
||||
textDoMerge: 'Create merge commit',
|
||||
mergeTitleFieldText: '',
|
||||
mergeMessageFieldText: '',
|
||||
hideAutoMerge: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const mergeform = mount(PullRequestMergeForm);
|
||||
await flushPromises();
|
||||
const mergeBtn = '.merge-button .ui.button .button-text';
|
||||
expect(mergeform.find(mergeBtn).exists()).toBe(true);
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Create merge commit');
|
||||
expect(mergeform.find('.merge-button .ui.dropdown .menu').exists()).toBe(false);
|
||||
const autoMergeBtn = '.merge-button .single-merge-strategy-auto-merge-btn';
|
||||
expect(mergeform.find(autoMergeBtn).exists()).toBe(true);
|
||||
const tooltip = '.merge-button .single-merge-strategy-auto-merge-btn .single-merge-strategy-auto-merge-tooltip';
|
||||
expect(mergeform.find(tooltip).exists()).toBe(true);
|
||||
expect(mergeform.find(tooltip).text()).toBe('Auto merge when all checks succeed');
|
||||
|
||||
await mergeform.find(autoMergeBtn).trigger('click');
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Create merge commit (When checks succeed)');
|
||||
expect(mergeform.find(tooltip).text()).toBe('Cancel auto merge');
|
||||
|
||||
await mergeform.find(autoMergeBtn).trigger('click');
|
||||
expect(mergeform.find(mergeBtn).text()).toBe('Create merge commit');
|
||||
expect(mergeform.find(tooltip).text()).toBe('Auto merge when all checks succeed');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -149,6 +149,16 @@ export default {
|
|||
</template>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
v-if="mergeStyleAllowedCount === 1 && !mergeStyleDetail.hideAutoMerge && mergeForm.canMergeNow"
|
||||
class="ui icon button single-merge-strategy-auto-merge-btn"
|
||||
@click.stop="autoMergeWhenSucceed = !autoMergeWhenSucceed"
|
||||
>
|
||||
<svg-icon name="octicon-clock"/>
|
||||
<span class="single-merge-strategy-auto-merge-tooltip">
|
||||
{{ autoMergeWhenSucceed ? mergeForm.textAutoMergeCancelSchedule : mergeForm.textAutoMergeWhenSucceed }}
|
||||
</span>
|
||||
</button>
|
||||
<div class="ui dropdown icon button" @click.stop="showMergeStyleMenu = !showMergeStyleMenu" v-if="mergeStyleAllowedCount > 1">
|
||||
<svg-icon name="octicon-triangle-down" :size="14"/>
|
||||
<div class="menu" :class="{'show':showMergeStyleMenu}">
|
||||
|
|
@ -248,6 +258,20 @@ export default {
|
|||
border: 1px solid var(--color-info-border);
|
||||
}
|
||||
|
||||
.ui.buttons .button.single-merge-strategy-auto-merge-btn {
|
||||
color: var(--color-info-text);
|
||||
background-color: var(--color-info-bg);
|
||||
border: 1px solid var(--color-info-border);
|
||||
}
|
||||
|
||||
.ui.buttons .button.single-merge-strategy-auto-merge-btn .single-merge-strategy-auto-merge-tooltip {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ui.buttons .button.single-merge-strategy-auto-merge-btn:hover .single-merge-strategy-auto-merge-tooltip {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.auto-merge-small:hover .auto-merge-tip {
|
||||
display: flex;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue