UNPKG

linagora-rse

Version:
160 lines (128 loc) 4.65 kB
'use strict'; /* global chai, sinon: false */ var expect = chai.expect; describe('The esnFileBrowserController', function() { var $controller, $rootScope, $scope, $log; var folderData = [ { name: 'folder1', icon: 'mdi-folder' }, { name: 'file1', icon: 'mdi-file' } ]; beforeEach(function() { module('esn.file-browser'); inject(function(_$controller_, _$rootScope_, _$log_) { $controller = _$controller_; $rootScope = _$rootScope_; $log = _$log_; }); }); function initController(bindings) { $scope = $rootScope.$new(); var controller = $controller('esnFileBrowserController', { $scope: $scope }, bindings); $scope.$digest(); return controller; } describe('The open fn', function() { it('should set currentNode then load it', function() { var bindings = { loadNode: function() { return $q.when(folderData); }, options: { rootName: 'root' } }; var filesBrowser = initController(bindings); var node = { name: 'example' }; filesBrowser.$onInit(); filesBrowser.open(node); $scope.$digest(); expect(filesBrowser.childNodes).to.deep.equal(folderData); expect(filesBrowser.currentNode).to.equal(node); expect(filesBrowser.status).to.equal('loaded'); }); it('should push a new node to breadcrumbs', function() { var bindings = { loadNode: function() { return $q.when(folderData); } }; var filesBrowser = initController(bindings); var newNode = { name: 'new node' }; filesBrowser.$onInit(); filesBrowser.open(newNode); $scope.$digest(); expect(filesBrowser.breadcrumbs).to.deep.equal([newNode]); }); it('should change status and reset childNodes list in case of error', function() { var bindings = { loadNode: function() { return $q.reject(new Error('Something happened')); } }; var filesBrowser = initController(bindings); $log.error = sinon.spy(); filesBrowser.$onInit(); $scope.$digest(); expect(filesBrowser.status).to.equal('error'); expect(filesBrowser.selectedNodes).to.be.empty; expect(filesBrowser.childNodes).to.be.empty; expect($log.error).to.have.been.calledWith('Error while loading nodes', new Error('Something happened')); }); }); describe('The back fn', function() { it('should pop out the last breadcrumb then load the its parent node', function() { var bindings = { loadNode: sinon.spy(function(node) { return $q.when(node); }) }; var filesBrowser = initController(bindings); var oldBreadcrumbs = [ { name: 'folder1' }, { name: 'folder2' } ]; filesBrowser.$onInit(); $scope.$digest(); filesBrowser.breadcrumbs = oldBreadcrumbs; filesBrowser.back(); $scope.$digest(); expect(filesBrowser.breadcrumbs).to.have.lengthOf(1); expect(filesBrowser.breadcrumbs).to.include(oldBreadcrumbs[0]); }); }); describe('The onSelectionChangeOf fn', function() { it('should update selected nodes in case of multiple selection is enabled', function() { var bindings = { loadNode: function() { return $q.when(folderData); }, options: { multipleSelect: true } }; var filesBrowser = initController(bindings); filesBrowser.$onInit(); $scope.$digest(); filesBrowser.childNodes[0].selected = true; filesBrowser.childNodes[1].selected = true; filesBrowser.onSelectionChangeOf(filesBrowser.childNodes[1]); expect(filesBrowser.selectedNodes).to.have.lengthOf(2); expect(filesBrowser.selectedNodes).to.include(folderData[0]); expect(filesBrowser.selectedNodes).to.include(folderData[1]); }); it('should unselect previous selected nodes and update selcted nodes list in case of multiple select is disabled', function() { var bindings = { loadNode: function() { return $q.when(folderData); }, options: { multipleSelect: false } }; var filesBrowser = initController(bindings); filesBrowser.$onInit(); $scope.$digest(); filesBrowser.childNodes[0].selected = true; filesBrowser.childNodes[1].selected = true; filesBrowser.onSelectionChangeOf(filesBrowser.childNodes[1]); expect(filesBrowser.childNodes[0].selected).to.equal(false); expect(filesBrowser.selectedNodes).to.have.lengthOf(1); expect(filesBrowser.selectedNodes).to.include(folderData[1]); }); }); });