From eb989f68a80640bef55a74bee9e64f3bf013d0ea Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 26 Apr 2012 14:12:10 +0200 Subject: [PATCH] [TEST] behavior when selecting a given completion, fix handler bzr revid: xmo@openerp.com-20120426121210-012l0doboktnic8s --- addons/web/static/src/js/search.js | 3 +- addons/web/static/test/search.js | 67 ++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 6f02a8d9934..f94cad0dc10 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -381,8 +381,7 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea select_completion: function (e, ui) { e.preventDefault(); - // FIXME: could have multiple values, shitty API - this.query.add_value(ui.item.category, ui.item.values[0]); + this.query.add(ui.item.facet); }, renderFacets: function () { var self = this; diff --git a/addons/web/static/test/search.js b/addons/web/static/test/search.js index 57ec2bd51f1..40496c7d7eb 100644 --- a/addons/web/static/test/search.js +++ b/addons/web/static/test/search.js @@ -146,7 +146,7 @@ $(document).ready(function () { ]) }); - module('defaults', { + module('inputs', { setup: function () { instance = window.openerp.init([]); window.openerp.web.corelib(instance); @@ -170,7 +170,7 @@ $(document).ready(function () { } }); - function makeSearchView(dummy_widget_attributes) { + function makeSearchView(dummy_widget_attributes, defaults) { instance.web.search.fields.add( 'dummy', 'instance.dummy.DummyWidget'); instance.dummy = {}; @@ -206,7 +206,7 @@ $(document).ready(function () { }; var dataset = {model: 'dummy.model', get_context: function () { return {}; }}; - return new instance.web.SearchView(null, dataset, false, {dummy: 42}); + return new instance.web.SearchView(null, dataset, false, defaults); } asyncTest('defaults calling', 2, function () { var defaults_called = false; @@ -220,7 +220,7 @@ $(document).ready(function () { values: [{label: 'dummy', value: defaults.dummy}] }); } - }); + }, {dummy: 42}); view.appendTo($('#qunit-fixture')) .always(start) .fail(function (error) { ok(false, error.message); }) @@ -265,4 +265,63 @@ $(document).ready(function () { }); }); }); + // TODO: test completions for various built-in widgets? + asyncTest('completion facet selection', 2, function () { + var completion = { + label: "Dummy", + facet: { + field: {}, + category: 'Dummy', + values: [{label: 'dummy', value: 42}] + } + }; + + var view = makeSearchView({}); + view.appendTo($('#qunit-fixture')) + .always(start) + .fail(function (error) { ok(false, error.message); }) + .done(function () { + view.select_completion( + {preventDefault: function () {}}, + {item: completion}); + equal(view.query.length, 1, "should have one facet in the query"); + deepEqual( + view.query.at(0).toJSON(), + {category: 'Dummy', values: [{label: 'dummy', value: 42}]}, + "should have the right facet in the query"); + }); + }); + asyncTest('completion facet selection: new value existing facet', 3, function () { + var field = {}; + var completion = { + label: "Dummy", + facet: { + field: field, + category: 'Dummy', + values: [{label: 'dummy', value: 42}] + } + }; + + var view = makeSearchView({}); + view.appendTo($('#qunit-fixture')) + .always(start) + .fail(function (error) { ok(false, error.message); }) + .done(function () { + view.query.add({field: field, category: 'Dummy', + values: [{label: 'previous', value: 41}]}); + equal(view.query.length, 1, 'should have newly added facet'); + view.select_completion( + {preventDefault: function () {}}, + {item: completion}); + equal(view.query.length, 1, "should still have only one facet"); + var facet = view.query.at(0); + deepEqual( + facet.get('values'), + [{label: 'previous', value: 41}, {label: 'dummy', value: 42}], + "should have added selected value to old one"); + }); + }); + + // TODO: test drawer rendering + // TODO: UI tests? });