summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2018-05-23 09:11:52 +0000
committerFilipa Lacerda <filipa@gitlab.com>2018-05-23 09:11:52 +0000
commit3a3f542db6dd1a406f341cb59b18d9af7956e9fd (patch)
treef1556bd821bb26bae9234e5d21550a3273c2dc00
parent4ba8ff508c79b33e59e65497d7a102449cd4c155 (diff)
parentfff2b4f6e4ef24e8648a9754fe32a2322a40d110 (diff)
downloadgitlab-ce-3a3f542db6dd1a406f341cb59b18d9af7956e9fd.tar.gz
Merge branch 'ide-commit-state-bug' into 'master'
Fixed web IDE review & commit editors getting into incorrect state Closes #46392 See merge request gitlab-org/gitlab-ce!19038
-rw-r--r--app/assets/javascripts/ide/components/repo_editor.vue9
-rw-r--r--spec/javascripts/ide/components/repo_editor_spec.js20
2 files changed, 27 insertions, 2 deletions
diff --git a/app/assets/javascripts/ide/components/repo_editor.vue b/app/assets/javascripts/ide/components/repo_editor.vue
index f8678b602ac..f2178c06c10 100644
--- a/app/assets/javascripts/ide/components/repo_editor.vue
+++ b/app/assets/javascripts/ide/components/repo_editor.vue
@@ -43,9 +43,13 @@ export default {
},
},
watch: {
- file(oldVal, newVal) {
+ file(newVal, oldVal) {
+ if (oldVal.pending) {
+ this.removePendingTab(oldVal);
+ }
+
// Compare key to allow for files opened in review mode to be cached differently
- if (newVal.key !== this.file.key) {
+ if (oldVal.key !== this.file.key) {
this.initMonaco();
if (this.currentActivityView !== activityBarViews.edit) {
@@ -99,6 +103,7 @@ export default {
'setFileViewMode',
'setFileEOL',
'updateViewer',
+ 'removePendingTab',
]),
initMonaco() {
if (this.shouldHideEditor) return;
diff --git a/spec/javascripts/ide/components/repo_editor_spec.js b/spec/javascripts/ide/components/repo_editor_spec.js
index ff500acd849..d3f80e6f9c0 100644
--- a/spec/javascripts/ide/components/repo_editor_spec.js
+++ b/spec/javascripts/ide/components/repo_editor_spec.js
@@ -346,4 +346,24 @@ describe('RepoEditor', () => {
});
});
});
+
+ it('calls removePendingTab when old file is pending', done => {
+ spyOnProperty(vm, 'shouldHideEditor').and.returnValue(true);
+ spyOn(vm, 'removePendingTab');
+
+ vm.file.pending = true;
+
+ vm
+ .$nextTick()
+ .then(() => {
+ vm.file = file('testing');
+
+ return vm.$nextTick();
+ })
+ .then(() => {
+ expect(vm.removePendingTab).toHaveBeenCalled();
+ })
+ .then(done)
+ .catch(done.fail);
+ });
});