summaryrefslogtreecommitdiff
path: root/addons/web/static/tests
diff options
context:
space:
mode:
authorMichael Mattiello (mcm) <mcm@odoo.com>2020-08-03 12:17:25 +0000
committerMichael Mattiello (mcm) <mcm@odoo.com>2020-08-11 14:15:43 +0000
commita5cca2cda3b5dc9468961fe7bebeb1257d67ecdd (patch)
tree1d2aa2b4c2ffeff4c6981f9abcb725a337ab0550 /addons/web/static/tests
parent6184070923b618a6923822a2b2c37c7d9835825f (diff)
[IMP] web: add smart date input on date field
This commit adds smart date inputs for date and datetime fields. The goal of smart date input is to provide the user some shortcuts when setting dates. The rule is [+-]\d+[dwmy]? So we can enter inputs like: +3 to have today + 3 days -2w to have today - 2 weeks +1y to have today + 1 year +5m to have today + 5 months -4d to have today - 4 days closes odoo/odoo#55602 Task: 2270347 Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web/static/tests')
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js30
-rw-r--r--addons/web/static/tests/fields/field_utils_tests.js18
2 files changed, 48 insertions, 0 deletions
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index 504d69dff69..965a98e973b 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -3891,6 +3891,36 @@ QUnit.module('basic_fields', {
form.destroy();
});
+ QUnit.test('date field: hit enter should update value', async function (assert) {
+ assert.expect(2);
+
+ const form = await createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch:'<form string="Partners"><field name="date"/></form>',
+ res_id: 1,
+ translateParameters: { // Avoid issues due to localization formats
+ date_format: '%m/%d/%Y',
+ },
+ viewOptions: {
+ mode: 'edit',
+ },
+ });
+
+ const year = (new Date()).getFullYear();
+
+ await testUtils.fields.editInput(form.el.querySelector('input[name="date"]'), '01/08');
+ await testUtils.fields.triggerKeydown(form.el.querySelector('input[name="date"]'), 'enter');
+ assert.strictEqual(form.el.querySelector('input[name="date"]').value, '01/08/' + year);
+
+ await testUtils.fields.editInput(form.el.querySelector('input[name="date"]'), '08/01');
+ await testUtils.fields.triggerKeydown(form.el.querySelector('input[name="date"]'), 'enter');
+ assert.strictEqual(form.el.querySelector('input[name="date"]').value, '08/01/' + year);
+
+ form.destroy();
+ });
+
QUnit.module('FieldDatetime');
QUnit.test('datetime field in form view', async function (assert) {
diff --git a/addons/web/static/tests/fields/field_utils_tests.js b/addons/web/static/tests/fields/field_utils_tests.js
index f3ab43260ae..567390e336d 100644
--- a/addons/web/static/tests/fields/field_utils_tests.js
+++ b/addons/web/static/tests/fields/field_utils_tests.js
@@ -413,4 +413,22 @@ QUnit.test('parse datetime without separator', function (assert) {
core._t.database.parameters = originalParameters;
});
});
+
+QUnit.test('parse smart date input', function (assert) {
+ assert.expect(10);
+
+ const format = "DD MM YYYY";
+ assert.strictEqual(fieldUtils.parse.date("+1d").format(format), moment().add(1, 'days').format(format));
+ assert.strictEqual(fieldUtils.parse.datetime("+2w").format(format), moment().add(2, 'weeks').format(format));
+ assert.strictEqual(fieldUtils.parse.date("+3m").format(format), moment().add(3, 'months').format(format));
+ assert.strictEqual(fieldUtils.parse.datetime("+4y").format(format), moment().add(4, 'years').format(format));
+
+ assert.strictEqual(fieldUtils.parse.date("+5").format(format), moment().add(5, 'days').format(format));
+ assert.strictEqual(fieldUtils.parse.datetime("-5").format(format), moment().subtract(5, 'days').format(format));
+
+ assert.strictEqual(fieldUtils.parse.date("-4y").format(format), moment().subtract(4, 'years').format(format));
+ assert.strictEqual(fieldUtils.parse.datetime("-3m").format(format), moment().subtract(3, 'months').format(format));
+ assert.strictEqual(fieldUtils.parse.date("-2w").format(format), moment().subtract(2, 'weeks').format(format));
+ assert.strictEqual(fieldUtils.parse.datetime("-1d").format(format), moment().subtract(1, 'days').format(format));
+});
});