Files
odoo_source/addons/mrp/static/tests/mrp_tests.js
T
jpr-odooandpga-odoo 8bf1486da5 [IMP] mrp: added support embedded google slide on work center
This commit adds new `embed_viewer` widget which will be used display URLs
via embedded iframes.  You can add any valid URL to display page via iframe,
although widget automatically converts raw google slide URL into embedded URL.

Task ID: 1909010

closes odoo/odoo#29404

Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>


Co-authored-by: pga-odoo <pga@odoo.com>
2019-08-01 13:34:58 +00:00

135 lines
4.9 KiB
JavaScript

odoo.define('mrp.tests', function (require) {
"use strict";
var FormView = require('web.FormView');
var testUtils = require("web.test_utils");
var createView = testUtils.createView;
QUnit.module('mrp', {
beforeEach: function () {
this.data = {
partner: {
fields: {
state: {
string: "State",
type: "selection",
selection: [['waiting', 'Waiting'], ['chilling', 'Chilling']],
},
duration: {string: "Duration", type: "float"},
},
records: [{
id: 1,
state: 'waiting',
duration: 6000,
}],
onchanges: {},
},
};
},
}, function () {
QUnit.test("bullet_state: basic rendering", async function (assert) {
assert.expect(2);
var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
res_id: 1,
arch:
'<form>' +
'<field name="state" widget="bullet_state" options="{\'classes\': {\'waiting\': \'danger\'}}"/>' +
'</form>',
});
assert.strictEqual(form.$('.o_field_widget').text(), "Waiting Materials",
"the widget should be correctly named");
assert.containsOnce(form, '.o_field_widget .badge-danger',
"the badge should be danger");
form.destroy();
});
QUnit.test("mrp_time_counter: basic rendering", async function (assert) {
assert.expect(2);
var form = await createView({
View: FormView,
model: 'partner',
data: this.data,
res_id: 1,
arch:
'<form>' +
'<field name="duration" widget="mrp_time_counter"/>' +
'</form>',
mockRPC: function (route, args) {
if (args.method === 'search_read' && args.model === 'mrp.workcenter.productivity') {
assert.ok(true, "the widget should fetch the mrp.workcenter.productivity");
return Promise.resolve([{
date_start: '2017-01-01 08:00:00',
date_end: '2017-01-01 10:00:00',
}, {
date_start: '2017-01-01 12:00:00',
date_end: '2017-01-01 12:30:00',
}]);
}
return this._super.apply(this, arguments);
},
});
assert.strictEqual(form.$('.o_field_widget[name="duration"]').text(), "02:30:00",
"the timer should be correctly set");
form.destroy();
});
QUnit.test("embed_viewer rendering in form view", async function (assert) {
assert.expect(8);
var data = {
foo: {
fields: { char_url: { string: "URL", type: "char" } },
records: [{ id: 1 }]
},
};
var form = await createView({
View: FormView,
model: 'foo',
data: data,
arch:
'<form>' +
'<field name="char_url" widget="embed_viewer"/>' +
'</form>',
res_id: 1,
mockRPC: function (route) {
if (route === ('http://example.com')) {
return Promise.resolve();
}
return this._super.apply(this, arguments);
}
});
assert.isNotVisible(form.$('iframe.o_embed_iframe'), "there should be an invisible iframe readonly mode");
assert.strictEqual(_.has(form.$('iframe.o_embed_iframe')[0].attributes, "src"), false,
"src attribute is not set if there are no values");
await testUtils.form.clickEdit(form);
assert.isNotVisible(form.$('iframe.o_embed_iframe'), "there should be an invisible iframe in edit mode");
await testUtils.fields.editAndTrigger(form.$('.o_field_char'), 'http://example.com', ['input', 'change', 'focusout']);
assert.strictEqual(form.$('iframe.o_embed_iframe').attr('src'), 'http://example.com',
"src should updated on the iframe");
assert.isVisible(form.$('iframe.o_embed_iframe'), "there should be a visible iframe in edit mode");
await testUtils.form.clickSave(form);
assert.isVisible(form.$('iframe.o_embed_iframe'), "there should be a visible iframe in readonly mode");
assert.strictEqual(form.$('iframe.o_embed_iframe').attr('data-src'), 'http://example.com',
"should have updated src in readonly mode");
// In readonly mode, we are not displaying the URL, only iframe will be there.
assert.strictEqual(form.$('.iframe.o_embed_iframe').siblings().length, 0,
"there shouldn't be any siblings of iframe in readonly mode");
form.destroy();
});
});
});