diff --git a/app/client/cypress/integration/Smoke_TestSuite/Pages/Pages_spec.js b/app/client/cypress/integration/Smoke_TestSuite/Pages/Pages_spec.js index 77dd8f7cc1..e0a8dd72d2 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/Pages/Pages_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/Pages/Pages_spec.js @@ -2,8 +2,12 @@ const pages = require("../../../locators/Pages.json"); describe("Pages", function() { let veryLongPageName = `abcdefghijklmnopqrstuvwxyz1234`; + let apiName = "someApi"; it("Clone page", function() { + cy.NavigateToAPI_Panel(); + cy.CreateAPI(apiName); + cy.xpath(pages.popover) .last() .click({ force: true }); @@ -15,7 +19,12 @@ describe("Pages", function() { 201, ); - cy.get(".t--entity-name:contains(Page1 Copy)"); + // to check if apis are cloned + cy.get(".t--entity-name:contains(Page1)").click({ multiple: true }); + cy.get(".t--entity-name:contains(APIs)") + .last() + .click(); + cy.get(`.t--entity-name:contains(${apiName})`).should("have.length", 2); }); it("Creates a page with long name and checks if it shows tooltip on hover", () => { diff --git a/app/client/src/reducers/entityReducers/actionsReducer.tsx b/app/client/src/reducers/entityReducers/actionsReducer.tsx index 5b35bd7374..798d79c33a 100644 --- a/app/client/src/reducers/entityReducers/actionsReducer.tsx +++ b/app/client/src/reducers/entityReducers/actionsReducer.tsx @@ -55,17 +55,32 @@ const actionsReducer = createReducer(initialState, { action: ReduxAction, ): ActionDataState => { if (action.payload.length > 0) { - const payloadActionMap = _.keyBy(action.payload, "id"); - return state.map((stateAction: ActionData) => { - if (stateAction.config.pageId === action.payload[0].pageId) { - return { + const stateActionMap = _.keyBy(state, "config.id"); + const result: ActionDataState = []; + + action.payload.forEach((actionPayload: RestAction) => { + const stateAction = stateActionMap[actionPayload.id]; + if (stateAction) { + result.push({ data: stateAction.data, isLoading: false, - config: payloadActionMap[stateAction.config.id], - }; + config: actionPayload, + }); + + delete stateActionMap[actionPayload.id]; + } else { + result.push({ + isLoading: false, + config: actionPayload, + }); } - return stateAction; }); + + Object.keys(stateActionMap).forEach(stateActionKey => { + result.push(stateActionMap[stateActionKey]); + }); + + return result; } return state; }, diff --git a/app/client/src/sagas/PageSagas.tsx b/app/client/src/sagas/PageSagas.tsx index 0ef1e82779..248571ab64 100644 --- a/app/client/src/sagas/PageSagas.tsx +++ b/app/client/src/sagas/PageSagas.tsx @@ -511,6 +511,8 @@ export function* clonePageSaga(clonePageAction: ReduxAction) { }, }); + yield put(fetchActionsForPage(response.data.id)); + history.push(BUILDER_PAGE_URL(applicationId, response.data.id)); } } catch (error) {