[FIX] get_any with inheritance
bzr revid: xmo@openerp.com-20120208130651-7mdv7p1qcfgxczon
This commit is contained in:
parent
f5ee468ca5
commit
f70b73f244
|
@ -290,6 +290,21 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry
|
|||
}
|
||||
return object_match;
|
||||
},
|
||||
/**
|
||||
* Checks if the registry contains an object mapping for this key.
|
||||
*
|
||||
* @param {String} key key to look for
|
||||
*/
|
||||
contains: function (key) {
|
||||
if (key === undefined) { return false; }
|
||||
if (key in this.map) {
|
||||
return true
|
||||
}
|
||||
if (this.parent) {
|
||||
return this.parent.contains(key);
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* Tries a number of keys, and returns the first object matching one of
|
||||
* the keys.
|
||||
|
@ -303,7 +318,7 @@ openerp.web.Registry = openerp.web.Class.extend( /** @lends openerp.web.Registry
|
|||
get_any: function (keys) {
|
||||
for (var i=0; i<keys.length; ++i) {
|
||||
var key = keys[i];
|
||||
if (key === undefined || !(key in this.map)) {
|
||||
if (!this.contains(key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,4 +52,22 @@ $(document).ready(function () {
|
|||
strictEqual(reg.get_object('foo2'), openerp.web.Foo2);
|
||||
strictEqual(reg2.get_object('foo2'), openerp.web.Foo2);
|
||||
});
|
||||
test('multiget', function () {
|
||||
var reg = new openerp.web.Registry({
|
||||
foo: 'openerp.web.Foo',
|
||||
bar: 'openerp.web.Bar'
|
||||
});
|
||||
|
||||
strictEqual(reg.get_any(['qux', 'grault', 'bar', 'foo']),
|
||||
openerp.web.Bar);
|
||||
});
|
||||
test('extended-multiget', function () {
|
||||
var reg = new openerp.web.Registry({
|
||||
foo: 'openerp.web.Foo',
|
||||
bar: 'openerp.web.Bar'
|
||||
});
|
||||
var reg2 = reg.extend();
|
||||
strictEqual(reg2.get_any(['qux', 'grault', 'bar', 'foo']),
|
||||
openerp.web.Bar);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue