Unit tests for controller.Files are done!
This commit is contained in:
parent
3ed4145ed3
commit
b7e1b26d3b
|
@ -560,8 +560,8 @@ class Files( object ):
|
|||
|
||||
@type note: model.Note
|
||||
@param note: note to search for file links
|
||||
@type ignore_file_links: bool
|
||||
@param ignore_file_links: if True, delete all files that are/were linked from this note
|
||||
@type purge_all_links: bool
|
||||
@param purge_all_links: if True, delete all files that are/were linked from this note
|
||||
"""
|
||||
# load metadata for all files with the given note's note_id
|
||||
files = self.__database.select_many( File, File.sql_load_note_files( note.object_id ) )
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import time
|
||||
import types
|
||||
import cherrypy
|
||||
from threading import Thread
|
||||
from StringIO import StringIO
|
||||
from Test_controller import Test_controller
|
||||
|
@ -817,7 +818,150 @@ class Test_files( Test_controller ):
|
|||
assert u"access" in result[ u"error" ]
|
||||
|
||||
def test_purge_unused( self ):
|
||||
raise NotImplementedError()
|
||||
self.login()
|
||||
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % self.file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = self.filename,
|
||||
file_data = self.file_data,
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
# the file is not linked to from the note's contents, so this should delete it
|
||||
cherrypy.root.files.purge_unused( self.note )
|
||||
|
||||
db_file = self.database.load( File, self.file_id )
|
||||
assert db_file is None
|
||||
assert not Upload_file.exists( self.file_id )
|
||||
|
||||
def test_purge_unused_empty_link( self ):
|
||||
self.login()
|
||||
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % self.file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = self.filename,
|
||||
file_data = self.file_data,
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
self.note.contents = '<a href="/files/download?file_id=%s"></a>' % self.file_id
|
||||
self.database.save( self.note )
|
||||
|
||||
# the file is linked to from the note's contents but the link title is empty, so this should
|
||||
# delete it
|
||||
cherrypy.root.files.purge_unused( self.note )
|
||||
|
||||
db_file = self.database.load( File, self.file_id )
|
||||
assert db_file is None
|
||||
assert not Upload_file.exists( self.file_id )
|
||||
|
||||
def test_purge_unused_keep_file( self ):
|
||||
self.login()
|
||||
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % self.file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = self.filename,
|
||||
file_data = self.file_data,
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
self.note.contents = '<a href="/files/download?file_id=%s">file link</a>' % self.file_id
|
||||
self.database.save( self.note )
|
||||
|
||||
# the file is linked to from the note's contents, so this should not delete it
|
||||
cherrypy.root.files.purge_unused( self.note )
|
||||
|
||||
db_file = self.database.load( File, self.file_id )
|
||||
assert db_file
|
||||
assert db_file.object_id == self.file_id
|
||||
assert db_file.filename == self.filename
|
||||
assert Upload_file.exists( self.file_id )
|
||||
|
||||
def test_purge_unused_all_links( self ):
|
||||
self.login()
|
||||
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % self.file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = self.filename,
|
||||
file_data = self.file_data,
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
self.note.contents = '<a href="/files/download?file_id=%s">file link</a>' % self.file_id
|
||||
self.database.save( self.note )
|
||||
|
||||
# the file is linked to from the note's contents, but because of the purge_all_links flag, it
|
||||
# should be deleted anyway
|
||||
cherrypy.root.files.purge_unused( self.note, purge_all_links = True )
|
||||
|
||||
db_file = self.database.load( File, self.file_id )
|
||||
assert db_file is None
|
||||
assert not Upload_file.exists( self.file_id )
|
||||
|
||||
def test_purge_unused_multiple_files( self ):
|
||||
self.login()
|
||||
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % self.file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = self.filename,
|
||||
file_data = self.file_data,
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
self.note.contents = '<a href="/files/download?file_id=%s">file link</a>' % self.file_id
|
||||
self.database.save( self.note )
|
||||
|
||||
other_file_id = u"23"
|
||||
self.http_upload(
|
||||
"/files/upload?file_id=%s" % other_file_id,
|
||||
dict(
|
||||
notebook_id = self.notebook.object_id,
|
||||
note_id = self.note.object_id,
|
||||
),
|
||||
filename = u"otherfile.png",
|
||||
file_data = u"whee",
|
||||
content_type = self.content_type,
|
||||
session_id = self.session_id,
|
||||
)
|
||||
|
||||
# one file is linked from the note's contents but the other is not. the file that is not linked
|
||||
# should be deleted
|
||||
cherrypy.root.files.purge_unused( self.note )
|
||||
|
||||
db_file = self.database.load( File, self.file_id )
|
||||
assert db_file
|
||||
assert db_file.object_id == self.file_id
|
||||
assert db_file.filename == self.filename
|
||||
assert Upload_file.exists( self.file_id )
|
||||
|
||||
other_db_file = self.database.load( File, other_file_id )
|
||||
assert other_db_file is None
|
||||
assert not Upload_file.exists( other_file_id )
|
||||
|
||||
def login( self ):
|
||||
result = self.http_post( "/users/login", dict(
|
||||
|
|
Reference in New Issue