view-node-map-test.js revision 57ae29e469a05555e94fa1801b4a2aa13e9ad366
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan GroveYUI.add('view-node-map-test', function (Y) {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grovevar ArrayAssert = Y.ArrayAssert,
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert = Y.Assert,
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove ObjectAssert = Y.ObjectAssert,
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove suite,
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove nodeMapSuite,
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove MappedView;
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grovesuite = Y.AppTestSuite || (Y.AppTestSuite = new Y.Test.Suite('App Framework'));
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan GrovenodeMapSuite = new Y.Test.Suite('View.NodeMap');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan GroveMappedView = Y.Base.create('mappedView', Y.View, [Y.View.NodeMap]);
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan GrovenodeMapSuite.add(new Y.Test.Case({
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove name: 'General',
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove setUp: function () {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove this.container = Y.Node.create('<div id="node-map-container"><div id="node-map-child"></div></div>');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Y.one('#test').append(this.container);
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove this.view = new MappedView({container: this.container});
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove },
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove tearDown: function () {
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove this.view && this.view.destroy();
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove },
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove 'getByNode() should return a View instance associated with the given Node': function () {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.areSame(this.view, MappedView.getByNode(this.container), 'Node ref to the container should work.');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.areSame(this.view, MappedView.getByNode('#node-map-container'), 'Id selector for the container should work.');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.areSame(this.view, MappedView.getByNode('#node-map-child'), 'Id selector for a child of the container should work.');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove },
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove 'getByNode() should return the nearest View instance': function () {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove var subView = new MappedView({container: '#node-map-child'});
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.areSame(subView, MappedView.getByNode('#node-map-child'));
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.areSame(this.view, MappedView.getByNode('#node-map-container'));
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove subView.destroy();
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove },
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove 'getByNode() should return null when no View is found': function () {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove var div = Y.Node.create('<div/>');
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Y.one('#test').append(div);
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove Assert.isNull(MappedView.getByNode(div));
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove div.remove(true);
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove },
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove 'View should be removed from the instances map when destroy() is called': function () {
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove var key = Y.stamp(this.container, true);
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove ObjectAssert.ownsKey(key, Y.View.NodeMap._instances, 'Node stamp should exist in the instances map.');
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove this.view.destroy();
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove Assert.isFalse(key in Y.View.NodeMap._instances, 'Node stamp should not exist in the instances map after the instance is destroyed.');
57ae29e469a05555e94fa1801b4a2aa13e9ad366Ryan Grove this.view = null;
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove }
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove}));
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grovesuite.add(nodeMapSuite);
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove}, '@VERSION@', {
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove requires: ['view-node-map', 'test']
76bf9d78d0779795bbf4cf41abec4ff0300706b2Ryan Grove});