In the extended template `HiddenInputFile` there are actually two inputs (one for image only and another one). This widget needs to replace both of them otherwise the file selector will be opened twice.
145 lines
5.0 KiB
JavaScript
145 lines
5.0 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']],
|
|
},
|
|
document: {string: "Document", type: "binary"},
|
|
duration: {string: "Duration", type: "float"},
|
|
},
|
|
records: [{
|
|
id: 1,
|
|
document: 'coucou==\n',
|
|
state: 'waiting',
|
|
duration: 6000,
|
|
}],
|
|
onchanges: {},
|
|
},
|
|
};
|
|
},
|
|
}, function () {
|
|
QUnit.test("pdf_viewer without data", function (assert) {
|
|
assert.expect(4);
|
|
|
|
var form = createView({
|
|
View: FormView,
|
|
model: 'partner',
|
|
data: this.data,
|
|
arch:
|
|
'<form>' +
|
|
'<field name="document" widget="pdf_viewer"/>' +
|
|
'</form>',
|
|
});
|
|
|
|
assert.ok(form.$('.o_field_widget').hasClass('o_field_pdfviewer'));
|
|
assert.strictEqual(form.$('.o_select_file_button:not(.o_hidden)').length, 1,
|
|
"there should be a visible 'Upload' button");
|
|
assert.ok(form.$('.o_field_widget iframe.o_pdfview_iframe').hasClass('o_hidden'),
|
|
"there should be an invisible iframe");
|
|
assert.strictEqual(form.$('input[type="file"]').length, 1,
|
|
"there should be one input");
|
|
|
|
form.destroy();
|
|
});
|
|
|
|
QUnit.test("pdf_viewer: basic rendering", function (assert) {
|
|
assert.expect(4);
|
|
|
|
var form = createView({
|
|
View: FormView,
|
|
model: 'partner',
|
|
data: this.data,
|
|
res_id: 1,
|
|
arch:
|
|
'<form>' +
|
|
'<field name="document" widget="pdf_viewer"/>' +
|
|
'</form>',
|
|
mockRPC: function (route) {
|
|
if (route.indexOf('/web/static/lib/pdfjs/web/viewer.html') !== -1) {
|
|
return $.when();
|
|
}
|
|
return this._super.apply(this, arguments);
|
|
}
|
|
});
|
|
|
|
assert.ok(form.$('.o_field_widget').hasClass('o_field_pdfviewer'));
|
|
assert.strictEqual(form.$('.o_select_file_button:not(.o_hidden)').length, 0,
|
|
"there should not be a any visible 'Upload' button");
|
|
assert.notOk(form.$('.o_field_widget iframe.o_pdfview_iframe').hasClass('o_hidden'),
|
|
"there should be an visible iframe");
|
|
assert.strictEqual(form.$('.o_field_widget iframe.o_pdfview_iframe').attr('data-src'),
|
|
'/web/static/lib/pdfjs/web/viewer.html?file=%2Fweb%2Fimage%3Fmodel%3Dpartner%26field%3Ddocument%26id%3D1',
|
|
"the src attribute should be correctly set on the iframe");
|
|
|
|
form.destroy();
|
|
});
|
|
|
|
QUnit.test("bullet_state: basic rendering", function (assert) {
|
|
assert.expect(2);
|
|
|
|
var form = 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.strictEqual(form.$('.o_field_widget .label-danger').length, 1,
|
|
"the label should be danger");
|
|
|
|
form.destroy();
|
|
});
|
|
|
|
QUnit.test("mrp_time_counter: basic rendering", function (assert) {
|
|
assert.expect(2);
|
|
|
|
var form = 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 $.when([{
|
|
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();
|
|
});
|
|
});
|
|
});
|