diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js index 5492628e7..57d8b768c 100644 --- a/src/actions/sponsor-forms-actions.js +++ b/src/actions/sponsor-forms-actions.js @@ -1231,37 +1231,6 @@ export const deleteSponsorFormItem = }); }; -const saveItemImages = - (formId, formItemId, images) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const { currentSummit } = currentSummitState; - const accessToken = await getAccessTokenSafely(); - const params = { access_token: accessToken }; - - const promises = images.map((file) => { - if (file.id) { - return putRequest( - null, - createAction(SPONSOR_FORM_ITEM_IMAGES_UPDATED), - `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items/${formItemId}/images/${file.id}`, - file, - authErrorHandler, - file - )(params)(dispatch); - } - return postRequest( - null, - createAction(SPONSOR_FORM_ITEM_IMAGES_UPDATED), - `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items/${formItemId}/images`, - file, - authErrorHandler, - file - )(params)(dispatch); - }); - - return Promise.all(promises); - }; - export const saveSponsorFormItem = (formId, entity) => async (dispatch, getState) => { const { currentSummitState } = getState(); @@ -1276,85 +1245,44 @@ export const saveSponsorFormItem = const normalizedEntity = normalizeItem(entity); - return postRequest( - null, - createAction(SPONSOR_FORM_ITEM_UPDATED), - `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items`, - normalizedEntity, - snackbarErrorHandler - )(params)(dispatch) - .then(({ response }) => { - const promises = [Promise.resolve(0)]; - - if (normalizedEntity.images?.length > 0) { - const savingImages = saveItemImages( - formId, - response.id, - normalizedEntity.images - )(dispatch, getState); - - promises.push(savingImages); - } - - return Promise.all(promises).then(() => { + if (entity.id) { + return putRequest( + null, + createAction(SPONSOR_FORM_ITEM_UPDATED), + `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items/${entity.id}`, + normalizedEntity, + snackbarErrorHandler + )(params)(dispatch) + .then(() => { dispatch( snackbarSuccessHandler({ title: T.translate("general.success"), - html: T.translate("sponsor_form_item_list.edit_item.created") + html: T.translate("sponsor_form_item_list.edit_item.updated") }) ); + }) + .catch((err) => { + throw err; + }) + .finally(() => { + dispatch(stopLoading()); }); - }) - .finally(() => { - dispatch(stopLoading()); - }); - }; - -export const updateSponsorFormItem = - (formId, entity) => async (dispatch, getState) => { - const { currentSummitState } = getState(); - const accessToken = await getAccessTokenSafely(); - const { currentSummit } = currentSummitState; - - dispatch(startLoading()); - - const params = { - access_token: accessToken - }; - - const normalizedEntity = normalizeItem(entity); + } - return putRequest( + return postRequest( null, createAction(SPONSOR_FORM_ITEM_UPDATED), - `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items/${entity.id}`, + `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items`, normalizedEntity, snackbarErrorHandler )(params)(dispatch) .then(() => { - const promises = [Promise.resolve(0)]; - - if (normalizedEntity.images?.length > 0) { - const savingImages = saveItemImages( - formId, - entity.id, - normalizedEntity.images - )(dispatch, getState); - - promises.push(savingImages); - } - - return Promise.all(promises).then(() => { - dispatch( - snackbarSuccessHandler({ - title: T.translate("general.success"), - html: T.translate("sponsor_form_item_list.edit_item.updated") - }) - ); - }); - }) - .catch((err) => { - throw err; + dispatch( + snackbarSuccessHandler({ + title: T.translate("general.success"), + html: T.translate("sponsor_form_item_list.edit_item.created") + }) + ); }) .finally(() => { dispatch(stopLoading()); diff --git a/src/pages/sponsors-global/form-templates/__tests__/sponsor-inventory-popup.test.js b/src/pages/sponsors-global/form-templates/__tests__/sponsor-inventory-popup.test.js new file mode 100644 index 000000000..d9b04b287 --- /dev/null +++ b/src/pages/sponsors-global/form-templates/__tests__/sponsor-inventory-popup.test.js @@ -0,0 +1,187 @@ +import React from "react"; +import { render, screen, waitFor } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import "@testing-library/jest-dom"; +import SponsorItemDialog from "../sponsor-inventory-popup"; + +jest.mock("i18n-react/dist/i18n-react", () => ({ + translate: jest.fn((key) => key) +})); + +jest.mock("../../../../hooks/useScrollToError", () => jest.fn()); + +jest.mock("openstack-uicore-foundation/lib/components", () => ({ + MuiFormikUpload: function MockMuiFormikUpload({ name }) { + return
; + } +})); + +jest.mock( + "openstack-uicore-foundation/lib/components/mui/formik-inputs/additional-input-list", + () => + function MockAdditionalInputList({ name }) { + return
; + } +); + +jest.mock( + "../../../../components/mui/formik-inputs/item-price-tiers", + () => + function MockItemPriceTiers() { + return
; + } +); + +jest.mock( + "../../../../components/inputs/formik-text-editor", + () => + function MockFormikTextEditor({ name }) { + return