[FIX] get_* methods on FilterGroup

bzr revid: xmo@openerp.com-20120503192645-8x63l5rnwz2vg2yp
This commit is contained in:
Xavier Morel 2012-05-03 21:26:45 +02:00
parent 64538c181e
commit 94624b74b0
2 changed files with 39 additions and 3 deletions

View File

@ -905,7 +905,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in
* @return {*} combined contexts of the enabled filters in this group
*/
get_context: function (facet) {
var contexts = _(facet.values).chain()
var contexts = facet.values.chain()
.map(function (f) { return f.get('value').attrs.context; })
.reject(_.isEmpty)
.value();
@ -923,7 +923,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in
* @return {Array} enabled filters in this group
*/
get_groupby: function (facet) {
return _(facet.values).chain()
return facet.values.chain()
.map(function (f) { return f.get('value').attrs.context; })
.reject(_.isEmpty)
.value();
@ -935,7 +935,7 @@ instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends in
* @return {*} combined domains of the enabled filters in this group
*/
get_domain: function (facet) {
var domains = _(facet.values).chain()
var domains = facet.values.chain()
.map(function (f) { return f.get('value').attrs.domain; })
.reject(_.isEmpty)
.value();

View File

@ -881,6 +881,42 @@ $(document).ready(function () {
}, "custom context's self should be label");
});
asyncTest('FilterGroup', 6, function () {
var view = {inputs: []};
var filter_a = new instance.web.search.Filter(
{attrs: {name: 'a', context: 'c1', domain: 'd1'}}, view);
var filter_b = new instance.web.search.Filter(
{attrs: {name: 'b', context: 'c2', domain: 'd2'}}, view);
var filter_c = new instance.web.search.Filter(
{attrs: {name: 'c', context: 'c3', domain: 'd3'}}, view);
var group = new instance.web.search.FilterGroup(
[filter_a, filter_b, filter_c], view);
group.facet_for_defaults({a: true, c: true})
.always(start)
.fail(function (error) { ok(false, error && error.message); })
.done(function (facet) {
var model = facet;
if (!(model instanceof instance.web.search.Facet)) {
model = new instance.web.search.Facet(facet);
}
var domain = group.get_domain(model);
equal(domain.__ref, 'compound_domain',
"domain should be compound");
deepEqual(domain.__domains, [
['|'], 'd1', 'd3'
], "domain should OR filter domains");
ok(!domain.get_eval_context(), "domain should have no evaluation context");
var context = group.get_context(model);
equal(context.__ref, 'compound_context',
"context should be compound");
deepEqual(context.__contexts, [
'c1', 'c3'
], "context should merge all filter contexts");
ok(!context.get_eval_context(), "context should have no evaluation context");
});
});
module('drawer', {
setup: function () {
instance = window.openerp.init([]);