@ -20,32 +20,37 @@
* /
describe ( 'OCA.Files.MainFileInfoDetailView tests' , function ( ) {
var view , tooltipStub , previewStub , fncLazyLoadPreview , fileListMock ;
var view , tooltipStub , fileListMock , fileActions , fileList , testFileInfo ;
beforeEach ( function ( ) {
tooltipStub = sinon . stub ( $ . fn , 'tooltip' ) ;
fileListMock = sinon . mock ( OCA . Files . FileList . prototype ) ;
view = new OCA . Files . MainFileInfoDetailView ( ) ;
fileActions = new OCA . Files . FileActions ( ) ;
fileList = new OCA . Files . FileList ( $ ( '<table></table>' ) , {
fileActions : fileActions
} ) ;
view = new OCA . Files . MainFileInfoDetailView ( {
fileList : fileList ,
fileActions : fileActions
} ) ;
testFileInfo = new OCA . Files . FileInfoModel ( {
id : 5 ,
name : 'One.txt' ,
mimetype : 'text/plain' ,
permissions : 31 ,
path : '/subdir' ,
size : 123456789 ,
mtime : Date . UTC ( 2015 , 6 , 17 , 1 , 2 , 0 , 0 )
} ) ;
} ) ;
afterEach ( function ( ) {
view . destroy ( ) ;
view . remove ( ) ;
view = undefined ;
tooltipStub . restore ( ) ;
fileListMock . restore ( ) ;
} ) ;
describe ( 'rendering' , function ( ) {
var testFileInfo ;
beforeEach ( function ( ) {
view = new OCA . Files . MainFileInfoDetailView ( ) ;
testFileInfo = {
id : 5 ,
name : 'One.txt' ,
path : '/subdir' ,
size : 123456789 ,
mtime : Date . UTC ( 2015 , 6 , 17 , 1 , 2 , 0 , 0 )
} ;
} ) ;
it ( 'displays basic info' , function ( ) {
var clock = sinon . useFakeTimers ( Date . UTC ( 2015 , 6 , 17 , 1 , 2 , 0 , 3 ) ) ;
var dateExpected = OC . Util . formatDate ( Date ( Date . UTC ( 2015 , 6 , 17 , 1 , 2 , 0 , 0 ) ) ) ;
@ -59,39 +64,34 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() {
clock . restore ( ) ;
} ) ;
it ( 'displays favorite icon' , function ( ) {
view . setFileInfo ( _ . extend ( testFileInfo , {
tags : [ OC . TAG _FAVORITE ]
} ) ) ;
testFileInfo . set ( 'tags' , [ OC . TAG _FAVORITE ] ) ;
view . setFileInfo ( testFileInfo ) ;
expect ( view . $el . find ( '.favorite img' ) . attr ( 'src' ) )
. toEqual ( OC . imagePath ( 'core' , 'actions/starred' ) ) ;
view . setFileInfo ( _ . extend ( testFileInfo , {
tags : [ ]
} ) ) ;
testFileInfo . set ( 'tags' , [ ] ) ;
view . setFileInfo ( testFileInfo ) ;
expect ( view . $el . find ( '.favorite img' ) . attr ( 'src' ) )
. toEqual ( OC . imagePath ( 'core' , 'actions/star' ) ) ;
} ) ;
it ( 'displays mime icon' , function ( ) {
// File
view . setFileInfo ( _ . extend ( testFileInfo , {
mimetype : 'text/calendar'
} ) ) ;
testFileInfo . set ( 'mimetype' , 'text/calendar' ) ;
view . setFileInfo ( testFileInfo ) ;
expect ( view . $el . find ( '.thumbnail' ) . css ( 'background-image' ) )
. toContain ( 'filetypes/text-calendar.svg' ) ;
// Folder
view . setFileInfo ( _ . extend ( testFileInfo , {
mimetype : 'httpd/unix-directory'
} ) ) ;
testFileInfo . set ( 'mimetype' , 'httpd/unix-directory' ) ;
view . setFileInfo ( testFileInfo ) ;
expect ( view . $el . find ( '.thumbnail' ) . css ( 'background-image' ) )
. toContain ( 'filetypes/folder.svg' ) ;
} ) ;
it ( 'displays thumbnail' , function ( ) {
view . setFileInfo ( _ . extend ( testFileInfo , {
mimetype : 'text/plain'
} ) ) ;
testFileInfo . set ( 'mimetype' , 'test/plain' ) ;
view . setFileInfo ( testFileInfo ) ;
var expectation = fileListMock . expects ( 'lazyLoadPreview' ) ;
expectation . once ( ) ;
@ -100,5 +100,76 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() {
fileListMock . verify ( ) ;
} ) ;
it ( 'rerenders when changes are made on the model' , function ( ) {
view . setFileInfo ( testFileInfo ) ;
testFileInfo . set ( 'tags' , [ OC . TAG _FAVORITE ] ) ;
expect ( view . $el . find ( '.favorite img' ) . attr ( 'src' ) )
. toEqual ( OC . imagePath ( 'core' , 'actions/starred' ) ) ;
testFileInfo . set ( 'tags' , [ ] ) ;
expect ( view . $el . find ( '.favorite img' ) . attr ( 'src' ) )
. toEqual ( OC . imagePath ( 'core' , 'actions/star' ) ) ;
} ) ;
it ( 'unbinds change listener from model' , function ( ) {
view . setFileInfo ( testFileInfo ) ;
view . setFileInfo ( new OCA . Files . FileInfoModel ( {
id : 999 ,
name : 'test.txt' ,
path : '/'
} ) ) ;
// set value on old model
testFileInfo . set ( 'tags' , [ OC . TAG _FAVORITE ] ) ;
// no change
expect ( view . $el . find ( '.favorite img' ) . attr ( 'src' ) )
. toEqual ( OC . imagePath ( 'core' , 'actions/star' ) ) ;
} ) ;
} ) ;
describe ( 'events' , function ( ) {
it ( 'triggers default action when clicking on the thumbnail' , function ( ) {
var actionHandler = sinon . stub ( ) ;
fileActions . registerAction ( {
name : 'Something' ,
mime : 'all' ,
permissions : OC . PERMISSION _READ ,
actionHandler : actionHandler
} ) ;
fileActions . setDefault ( 'text/plain' , 'Something' ) ;
view . setFileInfo ( testFileInfo ) ;
view . $el . find ( '.thumbnail' ) . click ( ) ;
expect ( actionHandler . calledOnce ) . toEqual ( true ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 0 ] ) . toEqual ( 'One.txt' ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileList ) . toEqual ( fileList ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileActions ) . toEqual ( fileActions ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileInfoModel ) . toEqual ( testFileInfo ) ;
} ) ;
it ( 'triggers "Favorite" action when clicking on the star' , function ( ) {
var actionHandler = sinon . stub ( ) ;
fileActions . registerAction ( {
name : 'Favorite' ,
mime : 'all' ,
permissions : OC . PERMISSION _READ ,
actionHandler : actionHandler
} ) ;
view . setFileInfo ( testFileInfo ) ;
view . $el . find ( '.action-favorite' ) . click ( ) ;
expect ( actionHandler . calledOnce ) . toEqual ( true ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 0 ] ) . toEqual ( 'One.txt' ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileList ) . toEqual ( fileList ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileActions ) . toEqual ( fileActions ) ;
expect ( actionHandler . getCall ( 0 ) . args [ 1 ] . fileInfoModel ) . toEqual ( testFileInfo ) ;
} ) ;
} ) ;
} ) ;