Skip to content
This repository was archived by the owner on Sep 8, 2020. It is now read-only.

Commit f3992af

Browse files
committed
test(sortable): reverting sortings on connected lists with helper
1 parent 8f7b5ae commit f3992af

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

test/sortable.e2e.extraElements.spec.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,46 @@ describe('uiSortable', function() {
734734

735735
var li1 = elementTop.find(':eq(1)');
736736
var li2 = elementBottom.find(':eq(1)');
737+
simulateElementDrag(li1, li2, 'below');
738+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top Three']);
739+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Top One', 'Bottom Two', 'Bottom Three']);
740+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
741+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
742+
743+
li1 = elementBottom.find(':eq(2)');
744+
li2 = elementTop.find(':eq(2)');
745+
simulateElementDrag(li1, li2, { place: 'above', extradx: -22, extrady: -12 });
746+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top One', 'Top Three']);
747+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
748+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
749+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
750+
751+
$(elementTop).remove();
752+
$(elementBottom).remove();
753+
});
754+
});
755+
756+
it('should work when "placeholder" and "helper: function" options are used and a drag is reverted', function() {
757+
inject(function($compile, $rootScope) {
758+
var elementTop, elementBottom;
759+
elementTop = $compile('<ul ui-sortable="opts" class="cross-sortable" ng-model="itemsTop"><li>extra element</li><li ng-repeat="item in itemsTop" id="s-top-{{$index}}" class="sortable-item">{{ item }}</li><li>extra element</li></ul>')($rootScope);
760+
elementBottom = $compile('<ul ui-sortable="opts" class="cross-sortable" ng-model="itemsBottom"><li>extra element</li><li ng-repeat="item in itemsBottom" id="s-bottom-{{$index}}" class="sortable-item">{{ item }}</li><li>extra element</li></ul>')($rootScope);
761+
$rootScope.$apply(function() {
762+
$rootScope.itemsTop = ['Top One', 'Top Two', 'Top Three'];
763+
$rootScope.itemsBottom = ['Bottom One', 'Bottom Two', 'Bottom Three'];
764+
$rootScope.opts = {
765+
helper: function (e, item) {
766+
return item.clone().text('helper');
767+
},
768+
placeholder: 'sortable-item-placeholder',
769+
connectWith: '.cross-sortable'
770+
};
771+
});
772+
773+
host.append(elementTop).append(elementBottom).append('<div class="clear"></div>');
774+
775+
var li1 = elementTop.find(':eq(3)');
776+
var li2 = elementBottom.find(':eq(2)');
737777
simulateElementDrag(li1, li2, { place: 'below', action: 'dragAndRevert' });
738778
expect($rootScope.itemsTop).toEqual(['Top One', 'Top Two', 'Top Three']);
739779
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
@@ -756,6 +796,14 @@ describe('uiSortable', function() {
756796
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
757797
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
758798

799+
li1 = elementTop.find(':eq(3)');
800+
li2 = elementBottom.find(':eq(2)');
801+
simulateElementDrag(li1, li2, { place: 'below', extradx: -22, extrady: -12 });
802+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top One']);
803+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Top Three', 'Bottom Three']);
804+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
805+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
806+
759807
$(elementTop).remove();
760808
$(elementBottom).remove();
761809
});

test/sortable.e2e.multi.spec.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,62 @@ describe('uiSortable', function() {
381381
});
382382
});
383383

384+
it('should work when "placeholder" and "helper: function" options are used and a drag is reverted', function() {
385+
inject(function($compile, $rootScope) {
386+
var elementTop, elementBottom;
387+
elementTop = $compile('<ul ui-sortable="opts" class="cross-sortable" ng-model="itemsTop"><li ng-repeat="item in itemsTop" id="s-top-{{$index}}" class="sortable-item">{{ item }}</li></ul>')($rootScope);
388+
elementBottom = $compile('<ul ui-sortable="opts" class="cross-sortable" ng-model="itemsBottom"><li ng-repeat="item in itemsBottom" id="s-bottom-{{$index}}" class="sortable-item">{{ item }}</li></ul>')($rootScope);
389+
$rootScope.$apply(function() {
390+
$rootScope.itemsTop = ['Top One', 'Top Two', 'Top Three'];
391+
$rootScope.itemsBottom = ['Bottom One', 'Bottom Two', 'Bottom Three'];
392+
$rootScope.opts = {
393+
helper: function (e, item) {
394+
return item.clone().text('helper');
395+
},
396+
placeholder: 'sortable-item-placeholder',
397+
connectWith: '.cross-sortable'
398+
};
399+
});
400+
401+
host.append(elementTop).append(elementBottom).append('<div class="clear"></div>');
402+
403+
var li1 = elementTop.find(':eq(2)');
404+
var li2 = elementBottom.find(':eq(1)');
405+
simulateElementDrag(li1, li2, { place: 'below', action: 'dragAndRevert' });
406+
expect($rootScope.itemsTop).toEqual(['Top One', 'Top Two', 'Top Three']);
407+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
408+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
409+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
410+
411+
li1 = elementTop.find(':eq(0)');
412+
li2 = elementBottom.find(':eq(0)');
413+
simulateElementDrag(li1, li2, 'below');
414+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top Three']);
415+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Top One', 'Bottom Two', 'Bottom Three']);
416+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
417+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
418+
419+
li1 = elementBottom.find(':eq(1)');
420+
li2 = elementTop.find(':eq(1)');
421+
simulateElementDrag(li1, li2, { place: 'above', extradx: -20, extrady: -10 });
422+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top One', 'Top Three']);
423+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
424+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
425+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
426+
427+
li1 = elementTop.find(':eq(2)');
428+
li2 = elementBottom.find(':eq(1)');
429+
simulateElementDrag(li1, li2, { place: 'below', extradx: -20, extrady: -10 });
430+
expect($rootScope.itemsTop).toEqual(['Top Two', 'Top One']);
431+
expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Top Three', 'Bottom Three']);
432+
expect($rootScope.itemsTop).toEqual(listContent(elementTop));
433+
expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
434+
435+
$(elementTop).remove();
436+
$(elementBottom).remove();
437+
});
438+
});
439+
384440
it('should work when "helper: function" that returns a list element is used', function() {
385441
inject(function($compile, $rootScope) {
386442
var elementTop, elementBottom;

0 commit comments

Comments
 (0)