diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js
index 50576687808..37f8bd8b3f2 100644
--- a/addons/web/static/src/js/search.js
+++ b/addons/web/static/src/js/search.js
@@ -1348,9 +1348,9 @@ instance.web.search.CharField = instance.web.search.Field.extend( /** @lends ins
instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{
complete: function (value) {
var val = this.parse(value);
- if (!val || isNaN(val)) { return $.when(); }
- var label = _.str.sprintf(_.str.escapeHTML(
- _t("Search %(field)s for: %(value)s")), {
+ if (isNaN(val)) { return $.when(); }
+ var label = _.str.sprintf(
+ _t("Search %(field)s for: %(value)s"), {
field: '' + this.attrs.string + '',
value: '' + _.str.escapeHTML(value) + ''});
return $.when([{
diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js
index 6c4b6d61d3c..73d984506b2 100644
--- a/addons/web/static/test/search.js
+++ b/addons/web/static/test/search.js
@@ -614,6 +614,59 @@ openerp.testing.section('search.completions', {
{relation: 'dummy.model'}, view);
return f.complete("bob");
});
+ test('Integer: invalid', {asserts: 1}, function (instance) {
+ var view = {inputs: []};
+ var f = new instance.web.search.IntegerField(
+ {attrs: {string: "Dummy"}}, {}, view);
+ return f.complete("qux")
+ .done(function (completions) {
+ ok(!completions, "non-number => no completion");
+ });
+ });
+ test('Integer: non-zero', {asserts: 5}, function (instance) {
+ var view = {inputs: []};
+ var f = new instance.web.search.IntegerField(
+ {attrs: {string: "Dummy"}}, {}, view);
+ return f.complete("-2")
+ .done(function (completions) {
+ equal(completions.length, 1, "number fields provide 1 completion only");
+ var facet = new instance.web.search.Facet(completions[0].facet);
+ equal(facet.get('category'), f.attrs.string);
+ equal(facet.get('field'), f);
+ var value = facet.values.at(0);
+ equal(value.get('label'), "-2");
+ equal(value.get('value'), -2);
+ });
+ });
+ test('Integer: zero', {asserts: 3}, function (instance) {
+ var view = {inputs: []};
+ var f = new instance.web.search.IntegerField(
+ {attrs: {string: "Dummy"}}, {}, view);
+ return f.complete("0")
+ .done(function (completions) {
+ equal(completions.length, 1, "number fields provide 1 completion only");
+ var facet = new instance.web.search.Facet(completions[0].facet);
+ var value = facet.values.at(0);
+ equal(value.get('label'), "0");
+ equal(value.get('value'), 0);
+ });
+ });
+ test('Float: non-zero', {asserts: 5}, function (instance) {
+ var view = {inputs: []};
+ var f = new instance.web.search.FloatField(
+ {attrs: {string: "Dummy"}}, {}, view);
+ return f.complete("42.37")
+ .done(function (completions) {
+ equal(completions.length, 1, "float fields provide 1 completion only");
+ var facet = new instance.web.search.Facet(completions[0].facet);
+ equal(facet.get('category'), f.attrs.string);
+ equal(facet.get('field'), f);
+ var value = facet.values.at(0);
+ equal(value.get('label'), "42.37");
+ equal(value.get('value'), 42.37);
+ });
+ });
+
});
openerp.testing.section('search.serialization', {
dependencies: ['web.search'],