diff --git a/public/javascripts/aspect-edit.js b/public/javascripts/aspect-edit.js index adcc7fbf9..8edaa1853 100644 --- a/public/javascripts/aspect-edit.js +++ b/public/javascripts/aspect-edit.js @@ -50,29 +50,35 @@ var AspectEdit = { type: "DELETE", url: "/requests/" + person.attr('data-guid'), data: {"accept" : true, "aspect_id" : dropzone.attr('data-aspect_id') }, - success: function(data) { - AspectEdit.decrementRequestsCounter(); - person.removeClass('request'); - } + success: function() { AspectEdit.onDeleteRequestSuccess(person); } }); } if (dropzone.attr('data-aspect_id') != person.attr('data-aspect_id')) { $.ajax({ url: "/aspects/move_friend/", - data: {"friend_id" : person.attr('data-guid'), + data: { + "friend_id" : person.attr('data-guid'), "from" : person.attr('data-aspect_id'), - "to" : { "to" : dropzone.attr('data-aspect_id') }}, - success: function(data) { - person.attr('data-aspect_id', dropzone.attr('data-aspect_id')); - }}); + "to" : { "to" : dropzone.attr('data-aspect_id') } + }, + success: function() { AspectEdit.onMovePersonSuccess(person, dropzone); } + }); } dropzone.closest("ul").append(person); }, + onDeleteRequestSuccess: function(person) { + AspectEdit.decrementRequestsCounter(); + person.removeClass('request'); + }, + + onMovePersonSuccess: function(person, dropzone) { + person.attr('data-aspect_id', dropzone.attr('data-aspect_id')); + }, + deletePersonFromAspect: function(person) { - var person_id = person.attr('data-guid'); if( $(".person[data-guid='"+ person_id +"']").length == 1) { diff --git a/spec/javascripts/aspect-edit-spec.js b/spec/javascripts/aspect-edit-spec.js index 9f0841b1d..d5eea139a 100644 --- a/spec/javascripts/aspect-edit-spec.js +++ b/spec/javascripts/aspect-edit-spec.js @@ -91,6 +91,30 @@ describe("AspectEdit", function() { }); }); + describe("onDropMove", function() { + beforeEach(function() { + $('#jasmine_content').html( + '
  • ' + + ' Alexander Hamiltom' + + '
  • ' + + '' + ); + }); + describe("when dragging a friend request", function() { + it("deletes the request object", function() { + spyOn($, "ajax"); + AspectEdit.initialize(); + $.proxy(AspectEdit.onDropMove, $('.dropzone.ui-droppable'))(null, {draggable: $('.person.ui-draggable')}); + expect($.ajax).toHaveBeenCalled(); + var args = $.ajax.calls[0].args[0]; + expect(args["type"]).toEqual("DELETE"); + expect(args["url"]).toEqual("/requests/4cae42d32367bca44e000003"); + expect(args["data"]).toEqual({"accept" : true, "aspect_id" : "4cdae5ed2367bc30aa000007" }); + }); + }); + }); + describe("decrementRequestsCounter", function() { describe("when there is one request", function() { it("removes the counter from the new requests div", function() {