Просмотр исходного кода

controlbox: Wait when saving while closing

Otherwise we run into race conditions while testing
JC Brand 5 лет назад
Родитель
Сommit
831e59c1a7
2 измененных файлов с 6 добавлено и 8 удалено
  1. 4 4
      spec/chatbox.js
  2. 2 4
      src/converse-controlbox.js

+ 4 - 4
spec/chatbox.js

@@ -321,15 +321,14 @@
                 chatview.delegateEvents();
 
                 controlview.el.querySelector('.close-chatbox-button').click();
-
                 expect(controlview.close).toHaveBeenCalled();
+                await new Promise(resolve => _converse.api.listen.once('chatBoxClosed', resolve));
                 expect(_converse.api.trigger).toHaveBeenCalledWith('chatBoxClosed', jasmine.any(Object));
-                expect(_converse.api.trigger.calls.count(), 1);
-                chatview.el.querySelector('.close-chatbox-button').click();
 
+                chatview.el.querySelector('.close-chatbox-button').click();
                 expect(chatview.close).toHaveBeenCalled();
+                await new Promise(resolve => _converse.api.listen.once('chatBoxClosed', resolve));
                 expect(_converse.api.trigger).toHaveBeenCalledWith('chatBoxClosed', jasmine.any(Object));
-                expect(_converse.api.trigger.calls.count(), 2);
                 done();
             }));
 
@@ -381,6 +380,7 @@
                 spyOn(_converse.api, "trigger").and.callThrough();
 
                 test_utils.closeControlBox();
+                await new Promise(resolve => _converse.api.listen.once('chatBoxClosed', resolve));
                 expect(_converse.api.trigger).toHaveBeenCalledWith('chatBoxClosed', jasmine.any(Object));
                 expect(_converse.chatboxes.length).toEqual(1);
                 expect(_converse.chatboxes.pluck('id')).toEqual(['controlbox']);

+ 2 - 4
src/converse-controlbox.js

@@ -297,7 +297,7 @@ converse.plugins.add('converse-controlbox', {
                     await new Promise((resolve, reject) => {
                         return this.model.save(
                             {'closed': true},
-                            {'success': resolve, 'error': reject}
+                            {'success': resolve, 'error': reject, 'wait': true}
                         );
                     });
                 } else {
@@ -341,9 +341,7 @@ converse.plugins.add('converse-controlbox', {
             },
 
             show () {
-                _converse.controlboxtoggle.hide(
-                    this.onControlBoxToggleHidden.bind(this)
-                );
+                _converse.controlboxtoggle.hide(() => this.onControlBoxToggleHidden());
                 return this;
             },