summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/views/qweb_tests.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web/static/tests/views/qweb_tests.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web/static/tests/views/qweb_tests.js')
-rw-r--r--addons/web/static/tests/views/qweb_tests.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/addons/web/static/tests/views/qweb_tests.js b/addons/web/static/tests/views/qweb_tests.js
new file mode 100644
index 00000000..19acf9b0
--- /dev/null
+++ b/addons/web/static/tests/views/qweb_tests.js
@@ -0,0 +1,72 @@
+odoo.define('web.qweb_view_tests', function (require) {
+"use strict";
+
+var utils = require('web.test_utils');
+
+QUnit.module("Views", {
+
+}, function () {
+ QUnit.module("QWeb");
+ QUnit.test("basic", async function (assert) {
+ assert.expect(14);
+ var am = await utils.createActionManager({
+ data: {
+ test: {
+ fields: {},
+ records: [],
+ }
+ },
+ archs: {
+ 'test,5,qweb': '<div id="xxx"><t t-esc="ok"/></div>',
+ 'test,false,search': '<search/>'
+ },
+ mockRPC: function (route, args) {
+ if (/^\/web\/dataset\/call_kw/.test(route)) {
+ switch (_.str.sprintf('%(model)s.%(method)s', args)) {
+ case 'test.qweb_render_view':
+ assert.step('fetch');
+ assert.equal(args.kwargs.view_id, 5);
+ return Promise.resolve(
+ '<div>foo' +
+ '<div data-model="test" data-method="wheee" data-id="42" data-other="5">' +
+ '<a type="toggle" class="fa fa-caret-right">Unfold</a>' +
+ '</div>' +
+ '</div>'
+ );
+ case 'test.wheee':
+ assert.step('unfold');
+ assert.deepEqual(args.args, [42]);
+ assert.deepEqual(args.kwargs, {other: 5});
+ return Promise.resolve('<div id="sub">ok</div>');
+ }
+ }
+ return this._super.apply(this, arguments);
+ }
+ });
+ try {
+ var resolved = false;
+ am.doAction({
+ type: 'ir.actions.act_window',
+ views: [[false, 'qweb']],
+ res_model: 'test',
+ }).then(function () { resolved = true; });
+ assert.ok(!resolved, "Action cannot be resolved synchronously");
+
+ await utils.nextTick();
+ assert.ok(resolved, "Action is resolved asynchronously");
+
+ var $content = am.$('.o_content');
+ assert.ok(/^\s*foo/.test($content.text()));
+ await utils.dom.click($content.find('[type=toggle]'));
+ assert.equal($content.find('div#sub').text(), 'ok', 'should have unfolded the sub-item');
+ await utils.dom.click($content.find('[type=toggle]'));
+ assert.equal($content.find('div#sub').length, 0, "should have removed the sub-item");
+ await utils.dom.click($content.find('[type=toggle]'));
+
+ assert.verifySteps(['fetch', 'unfold', 'unfold']);
+ } finally {
+ am.destroy();
+ }
+ });
+});
+});