summaryrefslogtreecommitdiff
path: root/addons/mail/static/tests/thread_window
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-19 15:38:25 +0100
committerGitHub <noreply@github.com>2018-11-19 15:38:25 +0100
commit7c3d5dc067c7c331dcc0b52bafbdfd067087a3c4 (patch)
tree6058f8a893815bf0ed2495649c125523f4def762 /addons/mail/static/tests/thread_window
parent8fc246da31aa2a1c770732ae97e0cb4e840f07cf (diff)
parentabf32b8b21394491040e5c11c1fea809c1d7c62c (diff)
[MERGE][REF] *: update js test suite to use helpers
This rev. introduces robust helpers to use in the JS tests suite to interact with DOM and components, and starts using them (almost) everywhere. All the helpers are exposed though testUtils.js. There are 2 kinds of helpers: 1. Assertions ------------- * assert.containsNone, containsN, containsOnce check that the DOM (or a specific part of the DOM) contains a `selector`. It generates a correct error message automatically. ex: assert.notOk(form.$('button').hasClass('btn-primary')); -> assert.doesNotHaveClass(form.$('button'), 'btn-primary'); * assert.isVisible, isNotVisible check that the DOM has an element visible or not. They also check that the element is actually in the DOM (before most tests didn't verify this). * assert.hasClass, doesNotHaveClass, hasAttrVAlue, check specific properties of a DOM element, and also validate that it is applied on a single existing DOM element (before most tests didn't verify this). 2. Utilities ------------ The goal of the utilities is to centralize the definition of many standard components and interactions, ensuring that when we refactor the JS framework, we do not need to change all the tests. Existing mock utilities (addMockEnvironment, intercept, path, patchDate, unpatch and fieldsViewGet) are moved to 'testUtils.mock.*'. Existing DOM utilities are moved to 'testUtils.dom.*'. New dom utilities are created for opendDatePicker, click, clickFirst and clickLast. Helper `click` verifies that there is exactly 1 element visible in the DOM you click on, `clickFirst` and `clickLast` verify that there are more than one element on the DOM. ex: form.$('button').click(); -> testUtils.dom.click(form.$('button')); New Form utilities: (testUtils.form.*) clickEdit, clickSave, clickCreate, clickDiscard, all clicks on the control panel buttons of the form. `reload` reloads the form data. New modal, graph, kanban and pivot utils (testUtils.pivot.*, testUtils.kanban.*, etc.). New fields utils: (testUtils.fields.*) * editInput, editSelect: allow to change the value of a field, using a selector to identify it. They validate that the input exists and trigger the change event automatically. * editAndTrigger: allow to modify a field and trigger specific events after the value change * many2one (testUtils.fields.many2one.*) clickOpenDropdown, clickHighlightedItem, clickItem, searchAndClickItem: use a field name instead of a selector and do all the complex mechanism to open, filter and highlight many2one fields. Joint work with aab, dam, ged, mge, svs and vsc. closes odoo/odoo#28784
Diffstat (limited to 'addons/mail/static/tests/thread_window')
-rw-r--r--addons/mail/static/tests/thread_window/basic_thread_window_tests.js14
-rw-r--r--addons/mail/static/tests/thread_window/blank_thread_window_tests.js14
-rw-r--r--addons/mail/static/tests/thread_window/hidden_thread_window_tests.js10
-rw-r--r--addons/mail/static/tests/thread_window/moderation_thread_window_tests.js2
4 files changed, 20 insertions, 20 deletions
diff --git a/addons/mail/static/tests/thread_window/basic_thread_window_tests.js b/addons/mail/static/tests/thread_window/basic_thread_window_tests.js
index 4b8935e81cf..b820972bef8 100644
--- a/addons/mail/static/tests/thread_window/basic_thread_window_tests.js
+++ b/addons/mail/static/tests/thread_window/basic_thread_window_tests.js
@@ -44,7 +44,7 @@ QUnit.module('Basic', {
self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture';
}
- testUtils.addMockEnvironment(widget, params);
+ testUtils.mock.addMockEnvironment(widget, params);
return widget;
};
},
@@ -121,7 +121,7 @@ QUnit.test('close thread window using ESCAPE key', function (assert) {
"there should be a thread window that is opened");
// focus on the thread window and press ESCAPE
- $('.o_thread_window .o_composer_text_field').click();
+ testUtils.dom.click($('.o_thread_window .o_composer_text_field'));
assert.strictEqual(document.activeElement,
$('.o_thread_window .o_composer_text_field')[0],
"thread window's input should now be focused");
@@ -150,7 +150,7 @@ QUnit.test('thread window\'s input can still be focused when the UI is blocked',
channel.detach();
var $input = $('<input/>', {type: 'text'}).appendTo($dom);
- $input.focus().click();
+ testUtils.dom.click($input.focus());
assert.strictEqual(document.activeElement, $input[0],
"fake input should be focused");
@@ -159,7 +159,7 @@ QUnit.test('thread window\'s input can still be focused when the UI is blocked',
// makes no sense, this test is just about
// making sure that the code which forces the
// focus on click is not removed
- $('.o_thread_window .o_composer_text_field').click();
+ testUtils.dom.click($('.o_thread_window .o_composer_text_field'));
assert.strictEqual(document.activeElement,
$('.o_thread_window .o_composer_text_field')[0],
"thread window's input should now be focused");
@@ -181,7 +181,7 @@ QUnit.test('emoji popover should open correctly in thread windows', function (as
channel.detach();
var $emojiButton = $('.o_composer_button_emoji');
- $emojiButton.trigger('focusin').focus().click();
+ testUtils.dom.click($emojiButton.trigger('focusin').focus());
var $popover = $('.o_mail_emoji_container');
var done = assert.async();
@@ -254,7 +254,7 @@ QUnit.test('do not increment unread counter with focus on thread window', functi
"thread should have unread counter to 0 initially");
// hard focus on thread window composer
- $('.o_composer_text_field').click();
+ testUtils.dom.click($('.o_composer_text_field'));
// simulate receiving message from someone else
var messageData = {
@@ -346,7 +346,7 @@ QUnit.test('do not mark as read the newly open thread window from received messa
assert.strictEqual($threadWindow.find('.o_thread_window_title').text().replace(/\s/g, ''), '#DM(1)',
"open DM chat window should have one unread message");
- $threadWindow.find('.o_thread_composer').click();
+ testUtils.dom.click($threadWindow.find('.o_thread_composer'));
assert.strictEqual($threadWindow.find('.o_thread_window_title').text().replace(/\s/g, ''), '#DM',
"open DM chat window should have message marked as read on composer focus");
diff --git a/addons/mail/static/tests/thread_window/blank_thread_window_tests.js b/addons/mail/static/tests/thread_window/blank_thread_window_tests.js
index 883494a4ec6..0f3c7c7bbe7 100644
--- a/addons/mail/static/tests/thread_window/blank_thread_window_tests.js
+++ b/addons/mail/static/tests/thread_window/blank_thread_window_tests.js
@@ -44,7 +44,7 @@ QUnit.module('Blank', {
self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture';
}
- testUtils.addMockEnvironment(widget, params);
+ testUtils.mock.addMockEnvironment(widget, params);
return widget;
};
@@ -125,7 +125,7 @@ QUnit.test('close blank thread window', function (assert) {
// open blank thread window
parent.call('mail_service', 'openBlankThreadWindow');
- $('.o_thread_window_close').click();
+ testUtils.dom.click($('.o_thread_window_close'));
assert.strictEqual($('.o_thread_window').length, 0,
"blank thread window should be closed");
@@ -147,7 +147,7 @@ QUnit.test('fold blank thread window', function (assert) {
var HEIGHT_OPEN = AbstractThreadWindow.prototype.HEIGHT_OPEN;
// Make fold animation instantaneous
- testUtils.patch(AbstractThreadWindow, {
+ testUtils.mock.patch(AbstractThreadWindow, {
FOLD_ANIMATION_DURATION: 0,
});
@@ -159,12 +159,12 @@ QUnit.test('fold blank thread window', function (assert) {
console.warn('Assertion above may fail due to too narrow height of browser');
}
- $('.o_thread_window_title').click();
+ testUtils.dom.click($('.o_thread_window_title'));
assert.strictEqual($('.o_thread_window').css('height'), HEIGHT_FOLDED,
"blank thread window should be open");
parent.destroy();
- testUtils.unpatch(AbstractThreadWindow);
+ testUtils.mock.unpatch(AbstractThreadWindow);
});
QUnit.test('open new DM chat from blank thread window', function (assert) {
@@ -224,7 +224,7 @@ QUnit.test('open new DM chat from blank thread window', function (assert) {
assert.strictEqual($('.ui-menu-item a').eq(1).text(), "DemoUser2",
"second suggestion should be 'DemoUser2'");
- $('.ui-menu-item a').eq(0).click();
+ testUtils.dom.click($('.ui-menu-item a').eq(0));
});
selectDef.then(function () {
assert.strictEqual($('.o_thread_window').length, 1,
@@ -299,7 +299,7 @@ QUnit.test('open already detached DM chat from blank thread window', function (a
$('.o_thread_search_input input').val("D").trigger('keydown');
$.when(sourceDef, def).then(function () {
- $('.ui-menu-item a').eq(0).click();
+ testUtils.dom.click($('.ui-menu-item a').eq(0));
});
selectDef.then(function () {
assert.strictEqual($('.o_thread_window').length, 1,
diff --git a/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js b/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js
index 29e05c59da9..b87dbe0f794 100644
--- a/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js
+++ b/addons/mail/static/tests/thread_window/hidden_thread_window_tests.js
@@ -43,7 +43,7 @@ QUnit.module('Hidden', {
self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture';
}
- testUtils.addMockEnvironment(widget, params);
+ testUtils.mock.addMockEnvironment(widget, params);
return widget;
};
},
@@ -62,7 +62,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver
// single thread window.
assert.expect(13);
- testUtils.patch(this.services.mail_service, {
+ testUtils.mock.patch(this.services.mail_service, {
HIDDEN_THREAD_WINDOW_DROPDOWN_BUTTON_WIDTH: 100,
THREAD_WINDOW_WIDTH: 300,
_getGlobalWidth: function () { return 800; },
@@ -128,7 +128,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver
1, "should contain thread window with ID 1 in hidden dropdown menu");
parent.destroy();
- testUtils.unpatch(this.services.mail_service);
+ testUtils.mock.unpatch(this.services.mail_service);
});
QUnit.test('hidden thread windows dropdown when not enough horizontal space (version 2)', function (assert) {
@@ -146,7 +146,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver
// With button: 2 thread windows (2*250px + 100px = 600px < 800px)
assert.expect(16);
- testUtils.patch(this.services.mail_service, {
+ testUtils.mock.patch(this.services.mail_service, {
HIDDEN_THREAD_WINDOW_DROPDOWN_BUTTON_WIDTH: 100,
THREAD_WINDOW_WIDTH: 250,
_getGlobalWidth: function () { return 800; },
@@ -219,7 +219,7 @@ QUnit.test('hidden thread windows dropdown when not enough horizontal space (ver
1, "should contain thread window with ID 2 in hidden dropdown menu");
parent.destroy();
- testUtils.unpatch(this.services.mail_service);
+ testUtils.mock.unpatch(this.services.mail_service);
});
});
diff --git a/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js b/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js
index 4a8cc9e2af0..b35405a2243 100644
--- a/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js
+++ b/addons/mail/static/tests/thread_window/moderation_thread_window_tests.js
@@ -74,7 +74,7 @@ QUnit.module('Moderation', {
self.services.mail_service.prototype.THREAD_WINDOW_APPENDTO = '#qunit-fixture';
}
- testUtils.addMockEnvironment(widget, params);
+ testUtils.mock.addMockEnvironment(widget, params);
return widget;
};
},