/**
* @ngdoc fbDroppableSpec
* @name fasit.directiveTest.#fbDroppableSpec
* @fbDroppableSpec
*
* @description
* testning av fbDroppable directive.
*
*/
describe("fbDroppable", function () {
var element;
var $scope;
var link;
var innerScope: fb.IFbDroppableScope;
var dropValues;
beforeEach(angular.mock.module('fasit', 'fbMocks'));
afterEach(function () {
$scope.$destroy();
});
beforeEach(inject(function ($compile, $rootScope) {
$scope = $rootScope;
$scope.dropValues = '';
$scope.dropCallback = function (itemId, binId, left) {
$scope.dropValues = '' + itemId + '-' + binId + '-' + left;
};
var DOM = '
hej
';
element = angular.element(DOM);
link = $compile(element)($scope);
$scope.$digest();
innerScope = $scope.$$childHead;
}));
it('borde skapa elementet ', function () {
expect(element).not.toBe(null);
});
it('borde inte visa röda strecket vid dragleave eventet', function () {
element.addClass("right-drop");
var testEvent = {
clientX: 100
}
innerScope.dragleaveHandler(testEvent);
expect(element.hasClass("right-drop")).toBe(false);
expect(element.hasClass("left-drop")).toBe(false);
element.addClass("right-drop");
var testEvent2 = {
clientY: 100
}
innerScope.dragleaveHandler(testEvent2);
expect(element.hasClass("right-drop")).toBe(false);
expect(element.hasClass("left-drop")).toBe(false);
});
it('borde inte ta bort röda strecket vid dragleave-event när muspekaren fortfarande över elementet', function () {
element[0].getBoundingClientRect = function () {
return {
left: 100,
right: 200,
top: 100,
bottom: 200
}
}
element.addClass("right-drop");
var testEvent = {
clientX: 150,
clientY: 150
}
innerScope.dragleaveHandler(testEvent);
expect(element.hasClass("right-drop")).toBe(true);
});
it('borde hantera drop eventet korrekt...', function () {
element.addClass("right-drop");
var testEvent = {
clientX: 100,
dataTransfer: { getData: function (text) { return 'item-1'}}
}
innerScope.dropHandler(testEvent);
expect(element.hasClass("right-drop")).toBe(false);
expect(element.hasClass("left-drop")).toBe(false);
//expect($scope.dropValues).toBe('item-1-bin-1-false');
element.addClass("left-drop");
var testEvent2 = {
stopPropagation: function () { },
clientX: -100,
preventDefault: function () { },
dataTransfer: { getData: function (text) { return 'item-1' } }
}
$scope.$digest();
innerScope.dropHandler(testEvent2);
expect(element.hasClass("right-drop")).toBe(false);
expect(element.hasClass("left-drop")).toBe(false);
expect($scope.dropValues).toBe('item-1-bin-1-true');
element.addClass("left-drop");
$scope.dropValues = '';
$scope.dropCallback = undefined;
innerScope.dropHandler(testEvent2);
expect(element.hasClass("right-drop")).toBe(false);
expect(element.hasClass("left-drop")).toBe(false);
expect($scope.dropValues).toBe('');
});
});