flectra/addons/account_asset/static/tests/account_asset_tests.js
2018-01-16 02:34:37 -08:00

169 lines
6.5 KiB
JavaScript

flectra.define('account_asset.widget_tests', function (require) {
"use strict";
var FormView = require('web.FormView');
var testUtils = require('web.test_utils');
var createView = testUtils.createView;
QUnit.module('fields', {}, function () {
QUnit.module('account_asset', {
beforeEach: function () {
this.data = {
asset: {
fields: {
display_name: { string: "Displayed name", type: "char" },
line_ids: {
string: "Lines",
type: "one2many",
relation: 'line',
relation_field: 'asset_id',
},
},
records: [{
id: 1,
display_name: "asset name",
line_ids: [1, 2, 3, 4],
}],
},
line: {
fields: {
move_check: {string: "Move Check", type: 'boolean'},
move_posted_check: {string: "Move Posted Check", type: 'boolean'},
asset_id: {string: "Asset", type: 'many2one', relation: 'asset'},
},
records: [{
id: 1,
move_check: true,
move_posted_check: true,
}, {
id: 2,
move_check: false,
move_posted_check: true,
}, {
id: 3,
move_check: true,
move_posted_check: false,
}, {
id: 4,
move_check: false,
move_posted_check: false,
}],
},
};
}
});
QUnit.test('basic rendering', function (assert) {
assert.expect(18);
var form = createView({
View: FormView,
model: 'asset',
data: this.data,
arch: '<form string="Asset">' +
'<sheet>' +
'<field name="display_name"/>' +
'<field name="line_ids">' +
'<tree>' +
'<field name="move_check" widget="deprec_lines_toggler"/>' +
'<field name="move_posted_check" invisible="1"/>' +
'</tree>' +
'</field>' +
'</sheet>' +
'</form>',
res_id: 1,
});
// check the header
assert.strictEqual(form.$('thead th').text(), "", "toggler column should have no title");
// check the classnames
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(0) button').hasClass('o_is_posted'),
"first line toggler should have classname 'o_is_posted'");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(0) button').hasClass('o_unposted'),
"first line toggler should not have classname 'o_unposted'");
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(1) button').hasClass('o_is_posted'),
"second line toggler should have classname 'o_is_posted'");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(1) button').hasClass('o_unposted'),
"second line toggler should not have classname 'o_unposted'");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(2) button').hasClass('o_is_posted'),
"third line toggler should not have classname 'o_is_posted'");
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(2) button').hasClass('o_unposted'),
"third line toggler should have classname 'o_unposted'");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(3) button').hasClass('o_is_posted'),
"fourth line toggler should not have classname 'o_is_posted'");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(3) button').hasClass('o_unposted'),
"fourth line toggler should not have classname 'o_unposted'");
// check the titles
assert.strictEqual(form.$('.o_deprec_lines_toggler_cell:nth(0) button').attr('title'),
'Posted', "first line toggler should have correct title");
assert.strictEqual(form.$('.o_deprec_lines_toggler_cell:nth(1) button').attr('title'),
'Posted', "second line toggler should have correct title");
assert.strictEqual(form.$('.o_deprec_lines_toggler_cell:nth(2) button').attr('title'),
'Accounting entries waiting for manual verification',
"third line toggler should have correct title");
assert.strictEqual(form.$('.o_deprec_lines_toggler_cell:nth(3) button').attr('title'),
'Unposted', "fourth line toggler should have correct title");
// check disabled property
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(0) button').attr('disabled'),
"first line toggle should be disabled");
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(1) button').attr('disabled'),
"second line toggle should be disabled");
assert.ok(form.$('.o_deprec_lines_toggler_cell:nth(2) button').attr('disabled'),
"third line toggle should be disabled");
assert.ok(!form.$('.o_deprec_lines_toggler_cell:nth(3) button').attr('disabled'),
"fourth line toggle should not be disabled");
// check the visibility: the widget should always be visible, regardless its value
assert.strictEqual(form.$('.o_deprec_lines_toggler:visible').length, 4,
"all togglers should be visible");
form.destroy();
});
QUnit.test('click events are correctly triggered', function (assert) {
assert.expect(2);
var form = createView({
View: FormView,
model: 'asset',
data: this.data,
arch: '<form string="Asset">' +
'<sheet>' +
'<field name="display_name"/>' +
'<field name="line_ids">' +
'<tree>' +
'<field name="move_check" widget="deprec_lines_toggler"/>' +
'<field name="move_posted_check" invisible="1"/>' +
'</tree>' +
'</field>' +
'</sheet>' +
'</form>',
res_id: 1,
intercepts: {
execute_action: function (event) {
var data = event.data;
assert.strictEqual(data.env.model, 'line', "should have correct model");
assert.strictEqual(data.action_data.name, 'create_move',
"should call correct method");
},
}
});
// click on last row toggler
form.$('.o_deprec_lines_toggler_cell:nth(3) button').click();
form.destroy();
});
});
});