1cc8349502ad1442df2f77452ad813fc41433415Dav GlassYUI.add('sortable-tests', function(Y) {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var sort, sort2,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert = Y.Assert;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var template = {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass name: 'Sortable Test',
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass setUp : function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass tearDown : function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: loading': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isFunction(Y.Sortable);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: instantiate': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort = new Y.Sortable({
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass container: '#cont1',
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass nodes: 'li',
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass handles: ['a']
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass });
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort2 = new Y.Sortable({
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass container: '#cont2',
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass nodes: 'li',
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass handles: ['a']
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass });
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isInstanceOf(Y.Base, sort, 'Sortable not an instance of Base');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isInstanceOf(Y.Sortable, sort, 'Sortable not an instance of Sortable');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: getSortable': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var s = Y.Sortable.getSortable('#cont1');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areSame(sort, s, 'Failed to get Sortable instance');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var n = Y.Sortable.getSortable(Y.one('#cont1'));
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areSame(sort, n, 'Failed to get Sortable instance from Node instance');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: full join': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2); //Testing no second argument
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len2 = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len2 = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual((_1len + 1), _1len2, 'Failed to add full join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual((_2len + 1), _2len2, 'Failed to add full join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2, 'none');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: outer join': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2, 'outer');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len2 = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len2 = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual((_1len + 1), _1len2, 'Failed to add outer join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual(_2len, _2len2, 'Failed to add outer join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2, 'none');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: inner join': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2, 'inner');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var _1len2 = sort.delegate.dd.get('groups').length,
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass _2len2 = sort2.delegate.dd.get('groups').length;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual(_1len, _1len2, 'Failed to add inner join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual((_2len + 1), _2len2, 'Failed to add inner join to sort');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort2, 'none');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: no join': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var groups = sort.delegate.dd.get('groups');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.join(sort, 'none');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var groups = sort.delegate.dd.get('groups');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual(0, groups, 'Group removal failed');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: ordering': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var order = sort.getOrdering();
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var items = [];
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Y.all('#cont1 li').each(function(n) {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass items.push(n);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass });
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areEqual(items.length, order.length, 'Failed to find nodes');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: dragging start': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.set('currentNode', Y.one('#cont1 li'));
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: startDrag': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var oNode = sort.delegate.get(sort.get('opacityNode'));
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort._onDragStart();
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: onDrag': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var i = 0;
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass for (i = 100; i <=200; i++) {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort._onDrag({
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass pageY: i
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass });
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isFalse(sort._up);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass }
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass for (i = 0; i <=200; i++) {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort._onDrag({
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass pageY: i*-1
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass });
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isTrue(sort._up);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass }
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: dragEnd event': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var oNode = sort.delegate.get(sort.get('opacityNode')),
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass opacity = oNode.getStyle('opacity');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort._onDragEnd();
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var opacity2 = oNode.getStyle('opacity');
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areSame('0.75', opacity);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.areSame('1', opacity2);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: DD passthru for errors': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.sync();
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.plug(Y.Plugin.SortableScroll);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass },
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass 'test: destroy': function() {
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass sort.destroy();
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Assert.isTrue(sort.get('destroyed'), 'Failed to destroy the sortable instance');
591a6f42838c230cfb3b9ae90cb9b668e9e02ec6Dav Glass },
591a6f42838c230cfb3b9ae90cb9b668e9e02ec6Dav Glass _should: {
591a6f42838c230cfb3b9ae90cb9b668e9e02ec6Dav Glass fail: {
cc9f14b1b41ebf57ae98861fc8d68037ae6ff574Dav Glass 'test: dragEnd event': (Y.UA.ie && Y.UA.ie < 9)
591a6f42838c230cfb3b9ae90cb9b668e9e02ec6Dav Glass }
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass }
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass };
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass var suite = new Y.Test.Suite("Sortable");
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass suite.add(new Y.Test.Case(template));
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass Y.Test.Runner.add(suite);
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass});
1cc8349502ad1442df2f77452ad813fc41433415Dav Glass