[FIX] web search: correct previous fix to properly handle searching for 0 on number fields
Also removed useless HTML escaping and added basic tests. bzr revid: odo@openerp.com-20130328153502-v71q2m60wh37ganq
This commit is contained in:
parent
300d5be0e6
commit
35d61bbd8b
|
@ -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# */{
|
instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{
|
||||||
complete: function (value) {
|
complete: function (value) {
|
||||||
var val = this.parse(value);
|
var val = this.parse(value);
|
||||||
if (!val || isNaN(val)) { return $.when(); }
|
if (isNaN(val)) { return $.when(); }
|
||||||
var label = _.str.sprintf(_.str.escapeHTML(
|
var label = _.str.sprintf(
|
||||||
_t("Search %(field)s for: %(value)s")), {
|
_t("Search %(field)s for: %(value)s"), {
|
||||||
field: '<em>' + this.attrs.string + '</em>',
|
field: '<em>' + this.attrs.string + '</em>',
|
||||||
value: '<strong>' + _.str.escapeHTML(value) + '</strong>'});
|
value: '<strong>' + _.str.escapeHTML(value) + '</strong>'});
|
||||||
return $.when([{
|
return $.when([{
|
||||||
|
|
|
@ -614,6 +614,59 @@ openerp.testing.section('search.completions', {
|
||||||
{relation: 'dummy.model'}, view);
|
{relation: 'dummy.model'}, view);
|
||||||
return f.complete("bob");
|
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', {
|
openerp.testing.section('search.serialization', {
|
||||||
dependencies: ['web.search'],
|
dependencies: ['web.search'],
|
||||||
|
|
Loading…
Reference in New Issue