summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-10-13 13:13:11 +0200
committerChristophe Simonis <chs@odoo.com>2017-10-13 13:13:11 +0200
commit1da064a1d34b48ff23d8cdf5a1c189c8bbb4eb64 (patch)
treed832553531790ca342cda3b03e6c44097717ff43 /addons/web/static/tests/fields
parent119ae9b5dcaea577bfd91b36565b764990b9de02 (diff)
parent8ee9024a4c888647df9e18861fe5e58b68947469 (diff)
[MERGE] forward port branch saas-16 up to 8ee9024a4c8
Diffstat (limited to 'addons/web/static/tests/fields')
-rw-r--r--addons/web/static/tests/fields/field_utils_tests.js62
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js81
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);