Commit 981ba790 authored by Natalia Tepluhina's avatar Natalia Tepluhina

Merge branch '27244-discard-all-changes' into 'master'

Web IDE: Fix "Discard all" for new and renamed files

See merge request gitlab-org/gitlab!21854
parents 65fd74f7 047a0319
...@@ -17,10 +17,18 @@ export const setInitialData = ({ commit }, data) => commit(types.SET_INITIAL_DAT ...@@ -17,10 +17,18 @@ export const setInitialData = ({ commit }, data) => commit(types.SET_INITIAL_DAT
export const discardAllChanges = ({ state, commit, dispatch }) => { export const discardAllChanges = ({ state, commit, dispatch }) => {
state.changedFiles.forEach(file => { state.changedFiles.forEach(file => {
commit(types.DISCARD_FILE_CHANGES, file.path); if (file.tempFile || file.prevPath) dispatch('closeFile', file);
if (file.tempFile) { if (file.tempFile) {
dispatch('closeFile', file); dispatch('deleteEntry', file.path);
} else if (file.prevPath) {
dispatch('renameEntry', {
path: file.path,
name: file.prevName,
parentPath: file.prevParentPath,
});
} else {
commit(types.DISCARD_FILE_CHANGES, file.path);
} }
}); });
......
---
title: Fix "Discard all" for new and renamed files
merge_request: 21854
author:
type: fixed
...@@ -92,26 +92,58 @@ describe('Multi-file store actions', () => { ...@@ -92,26 +92,58 @@ describe('Multi-file store actions', () => {
.catch(done.fail); .catch(done.fail);
}); });
it('closes the temp file if it was open', done => { it('closes the temp file and deletes it if it was open', done => {
f.tempFile = true; f.tempFile = true;
testAction( testAction(
discardAllChanges, discardAllChanges,
undefined, undefined,
store.state, store.state,
[{ type: types.REMOVE_ALL_CHANGES_FILES }],
[ [
{ type: types.DISCARD_FILE_CHANGES, payload: 'discardAll' }, { type: 'closeFile', payload: jasmine.objectContaining({ path: 'discardAll' }) },
{ type: types.REMOVE_ALL_CHANGES_FILES }, { type: 'deleteEntry', payload: 'discardAll' },
], ],
done,
);
});
it('renames the file to its original name and closes it if it was open', done => {
Object.assign(f, {
prevPath: 'parent/path/old_name',
prevName: 'old_name',
prevParentPath: 'parent/path',
});
testAction(
discardAllChanges,
undefined,
store.state,
[{ type: types.REMOVE_ALL_CHANGES_FILES }],
[ [
{ type: 'closeFile', payload: jasmine.objectContaining({ path: 'discardAll' }) },
{ {
type: 'closeFile', type: 'renameEntry',
payload: jasmine.objectContaining({ path: 'discardAll' }), payload: { path: 'discardAll', name: 'old_name', parentPath: 'parent/path' },
}, },
], ],
done, done,
); );
}); });
it('discards file changes on all other files', done => {
testAction(
discardAllChanges,
undefined,
store.state,
[
{ type: types.DISCARD_FILE_CHANGES, payload: 'discardAll' },
{ type: types.REMOVE_ALL_CHANGES_FILES },
],
[],
done,
);
});
}); });
describe('closeAllFiles', () => { describe('closeAllFiles', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment