From 191e9b5e348284b5d49e18f8eb6a2a6c7669e5f0 Mon Sep 17 00:00:00 2001 From: Ivan Shtyrliaiev <ee923925@gmail.com> Date: Tue, 6 Feb 2024 22:32:14 +0000 Subject: [PATCH] Redirect is current environment page empty empty If after removing protected environment current page becomes empty redirect user to the previous pagination page Changelog: changed EE: true --- .../store/edit/actions.js | 6 +++- .../store/edit/actions_spec.js | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/ee/app/assets/javascripts/protected_environments/store/edit/actions.js b/ee/app/assets/javascripts/protected_environments/store/edit/actions.js index d88a1bc9825af..53bc5757a77cf 100644 --- a/ee/app/assets/javascripts/protected_environments/store/edit/actions.js +++ b/ee/app/assets/javascripts/protected_environments/store/edit/actions.js @@ -154,12 +154,16 @@ export const updateApproverInheritance = ({ commit }, { rule, value }) => { export const editRule = ({ commit }, rule) => commit(types.EDIT_RULE, rule); -export const unprotectEnvironment = ({ state, commit }, environment) => { +export const unprotectEnvironment = ({ state, commit, dispatch }, environment) => { commit(types.REQUEST_UPDATE_PROTECTED_ENVIRONMENT); return Api.deleteProtectedEnvironment(state.projectId, environment) .then(() => { commit(types.DELETE_PROTECTED_ENVIRONMENT_SUCCESS, environment); + + if (!state.protectedEnvironments.length && state.pageInfo.page > 1) { + dispatch('setPage', state.pageInfo.page - 1); + } }) .catch((error) => { commit(types.RECEIVE_UPDATE_PROTECTED_ENVIRONMENT_ERROR, error); diff --git a/ee/spec/frontend/protected_environments/store/edit/actions_spec.js b/ee/spec/frontend/protected_environments/store/edit/actions_spec.js index 58d396e28daca..93774b8f5ea01 100644 --- a/ee/spec/frontend/protected_environments/store/edit/actions_spec.js +++ b/ee/spec/frontend/protected_environments/store/edit/actions_spec.js @@ -426,5 +426,38 @@ describe('ee/protected_environments/store/edit/actions', () => { [], ); }); + + it('redirects to previous page after deleting if current page is empty', () => { + const environment = { + name: 'staging', + }; + + mockedState.pageInfo = { + page: 2, + nextPage: null, + previousPage: 1, + perPage: 10, + total: 11, + totalPages: 2, + }; + + mock.onDelete(url, environment).replyOnce(HTTP_STATUS_OK); + + return testAction({ + action: unprotectEnvironment, + payload: environment, + state: mockedState, + expectedMutations: [ + { type: types.REQUEST_UPDATE_PROTECTED_ENVIRONMENT }, + { type: types.DELETE_PROTECTED_ENVIRONMENT_SUCCESS, payload: environment }, + ], + expectedActions: [ + { + type: 'setPage', + payload: 1, + }, + ], + }); + }); }); }); -- GitLab