diff --git a/app/assets/javascripts/protected_branches/protected_branch_edit.js b/app/assets/javascripts/protected_branches/protected_branch_edit.js index 67ae33e1fc83a533dd9a9b4d63e8488ac04044e1..22973ae318bcf8ef885de3dd85ce68375012bed8 100644 --- a/app/assets/javascripts/protected_branches/protected_branch_edit.js +++ b/app/assets/javascripts/protected_branches/protected_branch_edit.js @@ -182,6 +182,14 @@ export default class ProtectedBranchEdit { persisted: true, }; } + if (currentItem.deploy_key_id) { + return { + id: currentItem.id, + deploy_key_id: currentItem.deploy_key_id, + type: LEVEL_TYPES.DEPLOY_KEY, + persisted: true, + }; + } return { id: currentItem.id, diff --git a/spec/frontend/protected_branches/protected_branch_edit_spec.js b/spec/frontend/protected_branches/protected_branch_edit_spec.js index 301b0e8e15721faae89bedf1795ce6f652ec4ae7..463354ab7e1eb3e898bfe9728378ff6900758ef6 100644 --- a/spec/frontend/protected_branches/protected_branch_edit_spec.js +++ b/spec/frontend/protected_branches/protected_branch_edit_spec.js @@ -43,6 +43,11 @@ const response = { group_id: null, deploy_key_id: null, }, + { + id: 39, + access_level: 40, + deploy_key_id: 45, + }, ], }; @@ -193,6 +198,21 @@ describe('ProtectedBranchEdit', () => { expect(dropdown.preselected[0].id).toBe(response.push_access_levels[0].id); }); + it('updates deploy key on save for enabled dropdowns', async () => { + const selectedValue = [{ deploy_key_id: 45 }]; + const ProtectedBranchEditInstance = create({}); + const dropdown = ProtectedBranchEditInstance.push_access_levels_dropdown; + dropdown.$emit('select', selectedValue); + dropdown.$emit('hidden'); + await waitForPromises(); + expect(dropdown.preselected[1]).toEqual({ + deploy_key_id: 45, + id: 39, + persisted: true, + type: 'deploy_key', + }); + }); + it('does not update selected item on save for disabled dropdowns', async () => { const selectedValue = [{ access_level: 40 }]; const ProtectedBranchEditInstance = create({ pushDisabled: '' });