diff --git a/src/lib/vm-manager-hoc.jsx b/src/lib/vm-manager-hoc.jsx index fb71d6c0885f23e668b21615abc164f8de0fec70..f344907807e1def1370f78d813d62d84a262ab3e 100644 --- a/src/lib/vm-manager-hoc.jsx +++ b/src/lib/vm-manager-hoc.jsx @@ -129,7 +129,7 @@ const vmManagerHOC = function (WrappedComponent) { const mapDispatchToProps = dispatch => ({ onError: error => dispatch(projectError(error)), onLoadedProject: (loadingState, canSave) => - dispatch(onLoadedProject(loadingState, canSave)), + dispatch(onLoadedProject(loadingState, canSave, true)), onSetProjectUnchanged: () => dispatch(setProjectUnchanged()) }); diff --git a/src/reducers/project-state.js b/src/reducers/project-state.js index c3a5004b5800d64e21d8c30c5b340597fbdc29fa..84c956b72cb39b7556ae6899f128575e67895f8e 100644 --- a/src/reducers/project-state.js +++ b/src/reducers/project-state.js @@ -505,6 +505,7 @@ const requestProjectUpload = loadingState => { return { type: START_UPDATING_BEFORE_FILE_UPLOAD }; + case LoadingState.NOT_LOADED: case LoadingState.SHOWING_WITHOUT_ID: return { type: START_LOADING_VM_FILE_UPLOAD diff --git a/test/unit/reducers/project-state-reducer.test.js b/test/unit/reducers/project-state-reducer.test.js index 657bd39a4813d7e69901bf2100eb34f22a97c01b..412287d441d315e6f8ab75acc97cd2c0147785ab 100644 --- a/test/unit/reducers/project-state-reducer.test.js +++ b/test/unit/reducers/project-state-reducer.test.js @@ -8,10 +8,10 @@ import { manualUpdateProject, onFetchedProjectData, onLoadedProject, - onProjectUploadStarted, projectError, remixProject, requestNewProject, + requestProjectUpload, saveProjectAsCopy, setProjectId } from '../../../src/reducers/project-state'; @@ -96,7 +96,7 @@ test('onLoadedProject upload, with canSave false, shows without id', () => { const initialState = { loadingState: LoadingState.LOADING_VM_FILE_UPLOAD }; - const action = onLoadedProject(initialState.loadingState, false); + const action = onLoadedProject(initialState.loadingState, false, true); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID); }); @@ -105,7 +105,7 @@ test('onLoadedProject upload, with canSave true, prepares to save', () => { const initialState = { loadingState: LoadingState.LOADING_VM_FILE_UPLOAD }; - const action = onLoadedProject(initialState.loadingState, true); + const action = onLoadedProject(initialState.loadingState, true, true); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.AUTO_UPDATING); }); @@ -114,7 +114,7 @@ test('onLoadedProject with id shows with id', () => { const initialState = { loadingState: LoadingState.LOADING_VM_WITH_ID }; - const action = onLoadedProject(initialState.loadingState); + const action = onLoadedProject(initialState.loadingState, true, true); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID); }); @@ -123,7 +123,7 @@ test('onLoadedProject new shows without id', () => { const initialState = { loadingState: LoadingState.LOADING_VM_NEW_DEFAULT }; - const action = onLoadedProject(initialState.loadingState); + const action = onLoadedProject(initialState.loadingState, false, true); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID); }); @@ -132,11 +132,31 @@ test('onLoadedProject new, to save shows without id', () => { const initialState = { loadingState: LoadingState.LOADING_VM_NEW_DEFAULT }; - const action = onLoadedProject(initialState.loadingState); + const action = onLoadedProject(initialState.loadingState, true, true); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID); }); +test('onLoadedProject with success false, no project id, shows without id', () => { + const initialState = { + loadingState: LoadingState.LOADING_VM_WITH_ID, + projectId: null + }; + const action = onLoadedProject(initialState.loadingState, false, false); + const resultState = projectStateReducer(initialState, action); + expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITHOUT_ID); +}); + +test('onLoadedProject with success false, valid project id, shows with id', () => { + const initialState = { + loadingState: LoadingState.LOADING_VM_WITH_ID, + projectId: '12345' + }; + const action = onLoadedProject(initialState.loadingState, false, false); + const resultState = projectStateReducer(initialState, action); + expect(resultState.loadingState).toBe(LoadingState.SHOWING_WITH_ID); +}); + test('doneUpdatingProject with id shows with id', () => { const initialState = { loadingState: LoadingState.MANUAL_UPDATING @@ -215,29 +235,29 @@ test('requestNewProject, when can create new, should save and prepare to fetch d expect(resultState.loadingState).toBe(LoadingState.UPDATING_BEFORE_NEW); }); -test('onProjectUploadStarted when project not loaded should load', () => { +test('requestProjectUpload when project not loaded should load', () => { const initialState = { loadingState: LoadingState.NOT_LOADED }; - const action = onProjectUploadStarted(); + const action = requestProjectUpload(initialState.loadingState); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.LOADING_VM_FILE_UPLOAD); }); -test('onProjectUploadStarted when showing project with id should load', () => { +test('requestProjectUpload when showing project with id should load', () => { const initialState = { loadingState: LoadingState.SHOWING_WITH_ID }; - const action = onProjectUploadStarted(); + const action = requestProjectUpload(initialState.loadingState); const resultState = projectStateReducer(initialState, action); - expect(resultState.loadingState).toBe(LoadingState.LOADING_VM_FILE_UPLOAD); + expect(resultState.loadingState).toBe(LoadingState.UPDATING_BEFORE_FILE_UPLOAD); }); -test('onProjectUploadStarted when showing project without id should load', () => { +test('requestProjectUpload when showing project without id should load', () => { const initialState = { loadingState: LoadingState.SHOWING_WITHOUT_ID }; - const action = onProjectUploadStarted(); + const action = requestProjectUpload(initialState.loadingState); const resultState = projectStateReducer(initialState, action); expect(resultState.loadingState).toBe(LoadingState.LOADING_VM_FILE_UPLOAD); });