diff --git a/map/define/define_test.js b/map/define/define_test.js index f09c1767f73..a064fa5d33c 100644 --- a/map/define/define_test.js +++ b/map/define/define_test.js @@ -462,4 +462,76 @@ steal("can/map/define", "can/test", function () { }); + test("serialize context", function(){ + var context, serializeContext; + var MyMap = can.Map.extend({ + define: { + name: { + serialize: function(obj){ + context = this; + return obj; + } + } + }, + serialize: function(){ + serializeContext = this; + can.Map.prototype.serialize.apply(this, arguments); + + } + }); + + var map = new MyMap(); + map.serialize(); + equal(context, map); + equal(serializeContext, map); + }); + + test("methods contexts", function(){ + var contexts = {}; + var MyMap = can.Map.extend({ + define: { + name: { + value: 'John Galt', + + get: function(obj){ + contexts.get = this; + return obj; + }, + + remove: function(obj){ + contexts.remove = this; + return obj; + }, + + set: function(obj){ + contexts.set = this; + return obj; + }, + + serialize: function(obj){ + contexts.serialize = this; + return obj; + }, + + type: function(val){ + contexts.type = this; + return val; + } + } + + } + }); + + var map = new MyMap(); + map.serialize(); + map.removeAttr('name'); + + equal(contexts.get, map); + equal(contexts.remove, map); + equal(contexts.set, map); + equal(contexts.serialize, map); + equal(contexts.type, map); + }); + + }); \ No newline at end of file