diff --git a/front/core/directives/specs/http-click.spec.js b/front/core/directives/specs/http-click.spec.js new file mode 100644 index 000000000..70a79bcff --- /dev/null +++ b/front/core/directives/specs/http-click.spec.js @@ -0,0 +1,66 @@ +describe('Directive http-click', () => { + let $scope; + let element; + let compile; + + beforeEach(ngModule('vnCore')); + + compile = (_element, _childElement) => { + inject(($compile, $rootScope) => { + $scope = $rootScope.$new(); + element = angular.element(_element); + $compile(element)($scope); + $scope.$digest(); + }); + }; + + it('should call click function on the element, disable it and then enable it again', () => { + let html = ``; + compile(html); + + const myPromise = new Promise(resolve => resolve()); + $scope.myEvent = () => { + return myPromise; + }; + + element[0].$ctrl = {disabled: false}; + element[0].click(); + + expect(element[0].$ctrl.disabled).toEqual(true); + + let finalValue; + myPromise.then(() => { + finalValue = 'called!'; + + expect(element[0].$ctrl.disabled).toEqual(false); + }).finally(() => { + expect(finalValue).toEqual('called!'); + }); + }); + + it('should call click function on the element and not disable it', () => { + let html = ``; + compile(html); + + const myPromise = new Promise(resolve => resolve()); + $scope.myEvent = () => { + return myPromise; + }; + + element[0].$ctrl = {disabled: true}; + element[0].click(); + + expect(element[0].$ctrl.disabled).toEqual(true); + + let finalValue; + myPromise.then(() => { + finalValue = 'called!'; + + expect(element[0].$ctrl.disabled).toEqual(true); + }).finally(() => { + expect(finalValue).toEqual('called!'); + }).catch(err => { + console.log(err); + }); + }); +});