summaryrefslogtreecommitdiff
path: root/addons/web/static/tests/fields/field_utils_tests.js
diff options
context:
space:
mode:
authorrgarnau <rgarnau20@gmail.com>2017-10-12 09:07:27 +0200
committerChristophe Matthieu <chm@odoo.com>2017-10-12 10:34:40 +0200
commitb8dac2ff32d2e875e2f43c91f702e17adc938f7e (patch)
tree2abe84090860d7622f49d228ec1af130d05687e5 /addons/web/static/tests/fields/field_utils_tests.js
parent2f3b469dee6f18cbccce1cdf2a81cfe57960c533 (diff)
[FIX] web: integer not properly parsed
The parsing of the integers does not escape the thousands separator. issue: Integers are currently not properly parsed. For example, create a database in Spanish language, install product_expiry and in settings activate Lots & Serial Numbers. Go to Products and create a new product. Choose to track by lots and specify the use_time, life_time, etc. When saving, all integers are set to 0
Diffstat (limited to 'addons/web/static/tests/fields/field_utils_tests.js')
-rw-r--r--addons/web/static/tests/fields/field_utils_tests.js62
1 files changed, 59 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) {