diff --git a/test/sortable.e2e.multi.spec.js b/test/sortable.e2e.multi.spec.js
index a9cebae..7966f98 100644
--- a/test/sortable.e2e.multi.spec.js
+++ b/test/sortable.e2e.multi.spec.js
@@ -610,6 +610,82 @@ describe('uiSortable', function() {
});
});
+ it('should properly set ui.item.sortable.droptargetModel when using data-ng-model', function() {
+ inject(function($compile, $rootScope) {
+ var elementTop, elementBottom, updateCallbackExpectations;
+ elementTop = $compile('
')($rootScope);
+ elementBottom = $compile('')($rootScope);
+ $rootScope.$apply(function() {
+ $rootScope.itemsTop = ['Top One', 'Top Two', 'Top Three'];
+ $rootScope.itemsBottom = ['Bottom One', 'Bottom Two', 'Bottom Three'];
+ $rootScope.opts = {
+ connectWith: '.cross-sortable',
+ update: function(e, ui) {
+ if (ui.item.scope() &&
+ (typeof ui.item.scope().item === 'string') &&
+ ui.item.scope().item.indexOf('Two') >= 0) {
+ ui.item.sortable.cancel();
+ }
+ updateCallbackExpectations(ui.item.sortable);
+ }
+ };
+ });
+
+ host.append(elementTop).append(elementBottom).append('');
+
+ var li1 = elementTop.find(':eq(1)');
+ var li2 = elementBottom.find(':eq(0)');
+ updateCallbackExpectations = function(uiItemSortable) {
+ expect(uiItemSortable.droptargetModel).toBe($rootScope.itemsBottom);
+ };
+ simulateElementDrag(li1, li2, { place: 'below', extradx: -20, extrady: -10 });
+ expect($rootScope.itemsTop).toEqual(['Top One', 'Top Two', 'Top Three']);
+ expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
+ expect($rootScope.itemsTop).toEqual(listContent(elementTop));
+ expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
+ updateCallbackExpectations = undefined;
+
+ li1 = elementBottom.find(':eq(1)');
+ li2 = elementTop.find(':eq(1)');
+ updateCallbackExpectations = function(uiItemSortable) {
+ expect(uiItemSortable.droptargetModel).toBe($rootScope.itemsTop);
+ };
+ simulateElementDrag(li1, li2, { place: 'above', extradx: -20, extrady: -10 });
+ expect($rootScope.itemsTop).toEqual(['Top One', 'Top Two', 'Top Three']);
+ expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
+ expect($rootScope.itemsTop).toEqual(listContent(elementTop));
+ expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
+ updateCallbackExpectations = undefined;
+
+ li1 = elementTop.find(':eq(0)');
+ li2 = elementBottom.find(':eq(0)');
+ updateCallbackExpectations = function(uiItemSortable) {
+ expect(uiItemSortable.droptargetModel).toBe($rootScope.itemsBottom);
+ };
+ simulateElementDrag(li1, li2, 'below');
+ expect($rootScope.itemsTop).toEqual(['Top Two', 'Top Three']);
+ expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Top One', 'Bottom Two', 'Bottom Three']);
+ expect($rootScope.itemsTop).toEqual(listContent(elementTop));
+ expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
+ updateCallbackExpectations = undefined;
+
+ li1 = elementBottom.find(':eq(1)');
+ li2 = elementTop.find(':eq(1)');
+ updateCallbackExpectations = function(uiItemSortable) {
+ expect(uiItemSortable.droptargetModel).toBe($rootScope.itemsTop);
+ };
+ simulateElementDrag(li1, li2, { place: 'above', extradx: -20, extrady: -10 });
+ expect($rootScope.itemsTop).toEqual(['Top Two', 'Top One', 'Top Three']);
+ expect($rootScope.itemsBottom).toEqual(['Bottom One', 'Bottom Two', 'Bottom Three']);
+ expect($rootScope.itemsTop).toEqual(listContent(elementTop));
+ expect($rootScope.itemsBottom).toEqual(listContent(elementBottom));
+ updateCallbackExpectations = undefined;
+
+ $(elementTop).remove();
+ $(elementBottom).remove();
+ });
+ });
+
it('should properly free ui.item.sortable object', function() {
inject(function($compile, $rootScope) {
var elementTop, elementBottom, uiItem, uiItemSortable_Destroy;