diff options
Diffstat (limited to 'addons/web/static/tests/fields')
| -rw-r--r-- | addons/web/static/tests/fields/field_utils_tests.js | 62 | ||||
| -rw-r--r-- | addons/web/static/tests/fields/relational_fields_tests.js | 81 |
2 files changed, 140 insertions, 3 deletions
diff --git a/addons/web/static/tests/fields/field_utils_tests.js b/addons/web/static/tests/fields/field_utils_tests.js index a0284798553..1f8c27e7192 100644 --- a/addons/web/static/tests/fields/field_utils_tests.js +++ b/addons/web/static/tests/fields/field_utils_tests.js @@ -128,7 +128,15 @@ QUnit.test('format one2many', function(assert) { }); QUnit.test('parse float', function(assert) { - assert.expect(7); + assert.expect(10); + + var originalParameters = _.clone(core._t.database.parameters); + + _.extend(core._t.database.parameters, { + grouping: [3, 0], + decimal_point: '.', + thousands_sep: ',' + }); assert.strictEqual(fieldUtils.parse.float(""), 0); assert.strictEqual(fieldUtils.parse.float("0"), 0); @@ -136,16 +144,64 @@ QUnit.test('parse float', function(assert) { assert.strictEqual(fieldUtils.parse.float("-100.00"), -100); assert.strictEqual(fieldUtils.parse.float("1,000.00"), 1000); assert.strictEqual(fieldUtils.parse.float("1,000,000.00"), 1000000); + assert.strictEqual(fieldUtils.parse.float('1,234.567'), 1234.567); + assert.throws(function () { + fieldUtils.parse.float("1.000.000"); + }, "Throw an exception if it's not a valid number"); - var originalParameters = $.extend(true, {}, core._t.database.parameters); _.extend(core._t.database.parameters, { grouping: [3, 0], decimal_point: ',', thousands_sep: '.' }); + assert.strictEqual(fieldUtils.parse.float('1.234,567'), 1234.567); + assert.throws(function () { + fieldUtils.parse.float("1,000,000"); + }, "Throw an exception if it's not a valid number"); - core._t.database.parameters = originalParameters; + _.extend(core._t.database.parameters, originalParameters); +}); + +QUnit.test('parse integer', function(assert) { + assert.expect(11); + + var originalParameters = _.clone(core._t.database.parameters); + + _.extend(core._t.database.parameters, { + grouping: [3, 0], + decimal_point: '.', + thousands_sep: ',' + }); + + assert.strictEqual(fieldUtils.parse.integer(""), 0); + assert.strictEqual(fieldUtils.parse.integer("0"), 0); + assert.strictEqual(fieldUtils.parse.integer("100"), 100); + assert.strictEqual(fieldUtils.parse.integer("-100"), -100); + assert.strictEqual(fieldUtils.parse.integer("1,000"), 1000); + assert.strictEqual(fieldUtils.parse.integer("1,000,000"), 1000000); + assert.throws(function () { + fieldUtils.parse.integer("1.000.000"); + }, "Throw an exception if it's not a valid number"); + assert.throws(function () { + fieldUtils.parse.integer("1,234.567"); + }, "Throw an exception if the number is a float"); + + _.extend(core._t.database.parameters, { + grouping: [3, 0], + decimal_point: ',', + thousands_sep: '.' + }); + + assert.strictEqual(fieldUtils.parse.integer("1.000.000"), 1000000); + assert.throws(function () { + fieldUtils.parse.integer("1,000,000"); + }, "Throw an exception if it's not a valid number"); + assert.throws(function () { + fieldUtils.parse.integer("1.234,567"); + }, "Throw an exception if the number is a float"); + + _.extend(core._t.database.parameters, originalParameters); }); QUnit.test('parse monetary', function(assert) { diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 7a0937084c3..bc24146f253 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -1063,6 +1063,44 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('list in form: default_get with x2many create and onchange', function (assert) { + assert.expect(1); + + this.data.partner.onchanges.turtles = function (obj) { + assert.deepEqual( + obj.turtles, + [ + [0, false, {turtle_foo: 'blip', id: 2}], + [0, false, {turtle_foo: 'kawa', id: 3}] + ], + "should have properly created the x2many command list"); + }; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form>' + + '<sheet>' + + '<field name="turtles">' + + '<tree editable="bottom">' + + '<field name="turtle_foo"/>' + + '</tree>' + + '</field>' + + '<field name="int_field"/>' + + '</sheet>' + + '</form>', + mockRPC: function (route, args) { + if (args.method === 'default_get') { + return $.when({turtles: [[6, 0, [2,3]]]}); + } + return this._super.apply(this, arguments); + }, + }); + + form.destroy(); + }); + QUnit.test('list in form: call button in sub view', function (assert) { assert.expect(6); @@ -7498,6 +7536,26 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('field selection with many2ones and special characters', function (assert) { + assert.expect(1); + + // edit the partner with id=4 + this.data.partner.records[2].display_name = '<span>hey</span>'; + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="trululu" widget="selection"/>' + + '</form>', + res_id: 1, + viewOptions: {mode: 'edit'}, + }); + assert.strictEqual(form.$('select option[value="4"]').text(), '<span>hey</span>'); + + form.destroy(); + }); + QUnit.test('widget selection on a many2one: domain updated by an onchange', function (assert) { assert.expect(4); @@ -7891,6 +7949,29 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('many2many_tags can load more than 40 records', function (assert) { + assert.expect(1); + + this.data.partner.fields.partner_ids = {string: "Partner", type: "many2many", relation: 'partner'}; + this.data.partner.records[0].partner_ids = []; + for (var i = 15; i < 115; i++) { + this.data.partner.records.push({id: i, display_name: 'walter' + i}); + this.data.partner.records[0].partner_ids.push(i); + } + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '<form string="Partners">' + + '<field name="partner_ids" widget="many2many_tags"/>' + + '</form>', + res_id: 1, + }); + assert.strictEqual(form.$('.o_field_widget[name="partner_ids"] > span').length, 100, + 'should have rendered 100 tags'); + form.destroy(); + }); + QUnit.test('field many2many_tags keeps focus when being edited', function (assert) { assert.expect(7); |
