@ -51,19 +51,13 @@ describe('OCA.Files.FileList tests', function() {
}
beforeEach ( function ( ) {
// init horrible parameters
var $body = $ ( 'body' ) ;
$body . append ( '<input type="hidden" id="dir" value="/subdir"></input>' ) ;
$body . append ( '<input type="hidden" id="permissions" value="31"></input>' ) ;
// dummy files table
$body . append ( '<table id="filestable"></table>' ) ;
alertStub = sinon . stub ( OC . dialogs , 'alert' ) ;
notificationStub = sinon . stub ( OC . Notification , 'show' ) ;
// init parameters and test table elements
$ ( '#testArea' ) . append (
'<div id="app-content-files">' +
// init horrible parameters
'<input type="hidden" id="dir" value="/subdir"></input>' +
'<input type="hidden" id="permissions" value="31"></input>' +
// dummy controls
@ -76,7 +70,7 @@ describe('OCA.Files.FileList tests', function() {
'<table id="filestable">' +
'<thead><tr>' +
'<th id="headerName" class="hidden column-name">' +
'<input type="checkbox" id="select_all ">' +
'<input type="checkbox" id="select_all _files" class="select-all ">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'<span class="selectedActions hidden">' +
'<a href class="download">Download</a>' +
@ -85,7 +79,7 @@ describe('OCA.Files.FileList tests', function() {
'<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' +
'<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' +
'</tr></thead>' +
'<tbody id="fileList"></tbody>' +
'<tbody id="fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
'<div id="emptycontent">Empty content message</div>' +
@ -123,6 +117,7 @@ describe('OCA.Files.FileList tests', function() {
} ] ;
fileList = new OCA . Files . FileList ( $ ( '#app-content-files' ) ) ;
FileActions . clear ( ) ;
FileActions . registerDefaultActions ( fileList ) ;
fileList . setFileActions ( FileActions ) ;
} ) ;
@ -131,7 +126,6 @@ describe('OCA.Files.FileList tests', function() {
fileList = undefined ;
FileActions . clear ( ) ;
$ ( '#dir, #permissions, #filestable' ) . remove ( ) ;
notificationStub . restore ( ) ;
alertStub . restore ( ) ;
} ) ;
@ -160,7 +154,7 @@ describe('OCA.Files.FileList tests', function() {
id : 18 ,
type : 'file' ,
name : 'testName.txt' ,
mimetype : ' plain/text ',
mimetype : ' text/ plain',
size : '1234' ,
etag : 'a01234c' ,
mtime : '123456'
@ -175,9 +169,11 @@ describe('OCA.Files.FileList tests', function() {
expect ( $tr . attr ( 'data-size' ) ) . toEqual ( '1234' ) ;
expect ( $tr . attr ( 'data-etag' ) ) . toEqual ( 'a01234c' ) ;
expect ( $tr . attr ( 'data-permissions' ) ) . toEqual ( '31' ) ;
expect ( $tr . attr ( 'data-mime' ) ) . toEqual ( ' plain/text ') ;
expect ( $tr . attr ( 'data-mime' ) ) . toEqual ( ' text/ plain') ;
expect ( $tr . attr ( 'data-mtime' ) ) . toEqual ( '123456' ) ;
expect ( $tr . find ( 'a.name' ) . attr ( 'href' ) ) . toEqual ( OC . webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt' ) ;
expect ( $tr . find ( 'a.name' ) . attr ( 'href' ) )
. toEqual ( OC . webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt' ) ;
expect ( $tr . find ( '.nametext' ) . text ( ) . trim ( ) ) . toEqual ( 'testName.txt' ) ;
expect ( $tr . find ( '.filesize' ) . text ( ) ) . toEqual ( '1 kB' ) ;
expect ( fileList . findFileEl ( 'testName.txt' ) [ 0 ] ) . toEqual ( $tr [ 0 ] ) ;
@ -482,7 +478,9 @@ describe('OCA.Files.FileList tests', function() {
// trigger rename prompt
fileList . rename ( 'One.txt' ) ;
$input = fileList . $fileList . find ( 'input.filename' ) ;
$input . val ( 'Tu_after_three.txt' ) . blur ( ) ;
$input . val ( 'Tu_after_three.txt' ) ;
// trigger submit because triggering blur doesn't work in all browsers
$input . closest ( 'form' ) . trigger ( 'submit' ) ;
expect ( fakeServer . requests . length ) . toEqual ( 1 ) ;
request = fakeServer . requests [ 0 ] ;
@ -926,6 +924,18 @@ describe('OCA.Files.FileList tests', function() {
expect ( $ ( '.actions' ) . hasClass ( 'hidden' ) ) . toEqual ( true ) ;
expect ( $ ( '.notCreatable' ) . hasClass ( 'hidden' ) ) . toEqual ( false ) ;
} ) ;
it ( 'toggling viewer mode triggers event' , function ( ) {
var handler = sinon . stub ( ) ;
fileList . $el . on ( 'changeViewerMode' , handler ) ;
fileList . setViewerMode ( true ) ;
expect ( handler . calledOnce ) . toEqual ( true ) ;
expect ( handler . getCall ( 0 ) . args [ 0 ] . viewerModeEnabled ) . toEqual ( true ) ;
handler . reset ( ) ;
fileList . setViewerMode ( false ) ;
expect ( handler . calledOnce ) . toEqual ( true ) ;
expect ( handler . getCall ( 0 ) . args [ 0 ] . viewerModeEnabled ) . toEqual ( false ) ;
} ) ;
} ) ;
describe ( 'loading file list' , function ( ) {
beforeEach ( function ( ) {
@ -1198,27 +1208,27 @@ describe('OCA.Files.FileList tests', function() {
expect ( selection ) . toContain ( 'Three.pdf' ) ;
} ) ;
it ( 'Selecting all files will automatically check "select all" checkbox' , function ( ) {
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
$ ( '#fileList tr td.filename input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
} ) ;
it ( 'Selecting all files on the first visible page will not automatically check "select all" checkbox' , function ( ) {
fileList . setFiles ( generateFiles ( 0 , 41 ) ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
$ ( '#fileList tr td.filename input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
} ) ;
it ( 'Clicking "select all" will select/deselect all files' , function ( ) {
fileList . setFiles ( generateFiles ( 0 , 41 ) ) ;
$ ( ' #select_ all') . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
$ ( ' .select- all') . click ( ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
$ ( '#fileList tr input:checkbox' ) . each ( function ( ) {
expect ( $ ( this ) . prop ( 'checked' ) ) . toEqual ( true ) ;
} ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 42 ) ;
$ ( ' #select_ all') . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
$ ( ' .select- all') . click ( ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
$ ( '#fileList tr input:checkbox' ) . each ( function ( ) {
expect ( $ ( this ) . prop ( 'checked' ) ) . toEqual ( false ) ;
@ -1226,44 +1236,44 @@ describe('OCA.Files.FileList tests', function() {
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 0 ) ;
} ) ;
it ( 'Clicking "select all" then deselecting a file will uncheck "select all"' , function ( ) {
$ ( ' #select_ all') . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
$ ( ' .select- all') . click ( ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
var $tr = fileList . findFileEl ( 'One.txt' ) ;
$tr . find ( 'input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 3 ) ;
} ) ;
it ( 'Updates the selection summary when doing a few manipulations with "Select all"' , function ( ) {
$ ( ' #select_ all') . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
$ ( ' .select- all') . click ( ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
var $tr = fileList . findFileEl ( 'One.txt' ) ;
// unselect one
$tr . find ( 'input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 3 ) ;
// select all
$ ( ' #select_ all') . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
$ ( ' .select- all') . click ( ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 4 ) ;
// unselect one
$tr . find ( 'input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 3 ) ;
// re-select it
$tr . find ( 'input:checkbox' ) . click ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( true ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( true ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) . length ) . toEqual ( 4 ) ;
} ) ;
it ( 'Auto-selects files on next page when "select all" is checked' , function ( ) {
fileList . setFiles ( generateFiles ( 0 , 41 ) ) ;
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
expect ( fileList . $fileList . find ( 'tr input:checkbox:checked' ) . length ) . toEqual ( 20 ) ;
fileList . _nextPage ( true ) ;
@ -1295,7 +1305,7 @@ describe('OCA.Files.FileList tests', function() {
expect ( $actions . hasClass ( 'hidden' ) ) . toEqual ( true ) ;
} ) ;
it ( 'Selection is cleared when switching dirs' , function ( ) {
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
var data = {
status : 'success' ,
data : {
@ -1311,13 +1321,13 @@ describe('OCA.Files.FileList tests', function() {
] ) ;
fileList . changeDirectory ( '/' ) ;
fakeServer . respond ( ) ;
expect ( $ ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( $ ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( _ . pluck ( fileList . getSelectedFiles ( ) , 'name' ) ) . toEqual ( [ ] ) ;
} ) ;
it ( 'getSelectedFiles returns the selected files even when they are on the next page' , function ( ) {
var selectedFiles ;
fileList . setFiles ( generateFiles ( 0 , 41 ) ) ;
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
// unselect one to not have the "allFiles" case
fileList . $fileList . find ( 'tr input:checkbox:first' ) . click ( ) ;
@ -1326,6 +1336,18 @@ describe('OCA.Files.FileList tests', function() {
expect ( selectedFiles . length ) . toEqual ( 41 ) ;
} ) ;
describe ( 'Selection overlay' , function ( ) {
it ( 'show delete action according to directory permissions' , function ( ) {
fileList . setFiles ( testFiles ) ;
$ ( '#permissions' ) . val ( OC . PERMISSION _READ | OC . PERMISSION _DELETE ) ;
$ ( '.select-all' ) . click ( ) ;
expect ( fileList . $el . find ( '.delete-selected' ) . hasClass ( 'hidden' ) ) . toEqual ( false ) ;
$ ( '.select-all' ) . click ( ) ;
$ ( '#permissions' ) . val ( OC . PERMISSION _READ ) ;
$ ( '.select-all' ) . click ( ) ;
expect ( fileList . $el . find ( '.delete-selected' ) . hasClass ( 'hidden' ) ) . toEqual ( true ) ;
} ) ;
} ) ;
describe ( 'Actions' , function ( ) {
beforeEach ( function ( ) {
fileList . findFileEl ( 'One.txt' ) . find ( 'input:checkbox' ) . click ( ) ;
@ -1391,7 +1413,7 @@ describe('OCA.Files.FileList tests', function() {
} ) ;
it ( 'Downloads root folder when all selected in root folder' , function ( ) {
$ ( '#dir' ) . val ( '/' ) ;
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
var redirectStub = sinon . stub ( OC , 'redirect' ) ;
$ ( '.selectedActions .download' ) . click ( ) ;
expect ( redirectStub . calledOnce ) . toEqual ( true ) ;
@ -1399,7 +1421,7 @@ describe('OCA.Files.FileList tests', function() {
redirectStub . restore ( ) ;
} ) ;
it ( 'Downloads parent folder when all selected in subfolder' , function ( ) {
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
var redirectStub = sinon . stub ( OC , 'redirect' ) ;
$ ( '.selectedActions .download' ) . click ( ) ;
expect ( redirectStub . calledOnce ) . toEqual ( true ) ;
@ -1428,7 +1450,7 @@ describe('OCA.Files.FileList tests', function() {
} ) ;
it ( 'Deletes all files when all selected when "Delete" clicked' , function ( ) {
var request ;
$ ( ' #select_ all') . click ( ) ;
$ ( ' .select- all') . click ( ) ;
$ ( '.selectedActions .delete-selected' ) . click ( ) ;
expect ( fakeServer . requests . length ) . toEqual ( 1 ) ;
request = fakeServer . requests [ 0 ] ;
@ -1445,9 +1467,9 @@ describe('OCA.Files.FileList tests', function() {
} ) ;
} ) ;
it ( 'resets the file selection on reload' , function ( ) {
fileList . $el . find ( ' #select_ all') . click ( ) ;
fileList . $el . find ( ' .select- all') . click ( ) ;
fileList . reload ( ) ;
expect ( fileList . $el . find ( ' #select_ all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( fileList . $el . find ( ' .select- all') . prop ( 'checked' ) ) . toEqual ( false ) ;
expect ( fileList . getSelectedFiles ( ) ) . toEqual ( [ ] ) ;
} ) ;
} ) ;