Implement getting and deleting cached thumbnails
This commit is contained in:
parent
a3a59c5895
commit
7ac0be62db
|
@ -187,6 +187,14 @@ public extension WebDAV {
|
||||||
|
|
||||||
//MARK: Thumbnail Cache
|
//MARK: Thumbnail Cache
|
||||||
|
|
||||||
|
func getAllCachedThumbnails<A: WebDAVAccount>(forItemAtPath path: String, account: A) -> [ThumbnailProperties: UIImage]? {
|
||||||
|
getCachedValue(cache: thumbnailCache, forItemAtPath: path, account: account)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCachedThumbnail<A: WebDAVAccount>(forItemAtPath path: String, account: A, with properties: ThumbnailProperties) -> UIImage? {
|
||||||
|
getAllCachedThumbnails(forItemAtPath: path, account: account)?[properties]
|
||||||
|
}
|
||||||
|
|
||||||
func deleteCachedThumbnail<A: WebDAVAccount>(forItemAtPath path: String, account: A, with properties: ThumbnailProperties) throws {
|
func deleteCachedThumbnail<A: WebDAVAccount>(forItemAtPath path: String, account: A, with properties: ThumbnailProperties) throws {
|
||||||
let accountPath = AccountPath(account: account, path: path)
|
let accountPath = AccountPath(account: account, path: path)
|
||||||
if var cachedThumbnails = thumbnailCache[accountPath] {
|
if var cachedThumbnails = thumbnailCache[accountPath] {
|
||||||
|
@ -199,6 +207,11 @@ public extension WebDAV {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func deleteAllCachedThumbnails<A: WebDAVAccount>(forItemAtPath path: String, account: A) throws {
|
||||||
|
let accountPath = AccountPath(account: account, path: path)
|
||||||
|
thumbnailCache.removeValue(forKey: accountPath)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: Internal
|
//MARK: Internal
|
||||||
|
|
|
@ -353,6 +353,9 @@ final class WebDAVTests: XCTestCase {
|
||||||
|
|
||||||
//MARK: Image Cache
|
//MARK: Image Cache
|
||||||
|
|
||||||
|
// Commented out lines are lines that existed to test image cache in v2.x versions.
|
||||||
|
// They will be added again when disk cache is reimplemented in v3.0.
|
||||||
|
|
||||||
func testDownloadImage() {
|
func testDownloadImage() {
|
||||||
guard let (account, password) = getAccount() else { return XCTFail() }
|
guard let (account, password) = getAccount() else { return XCTFail() }
|
||||||
guard let imagePath = ProcessInfo.processInfo.environment["image_path"] else {
|
guard let imagePath = ProcessInfo.processInfo.environment["image_path"] else {
|
||||||
|
@ -375,7 +378,9 @@ final class WebDAVTests: XCTestCase {
|
||||||
// let cachedImageURL = try webDAV.getCachedDataURL(forItemAtPath: imagePath, account: account)!
|
// let cachedImageURL = try webDAV.getCachedDataURL(forItemAtPath: imagePath, account: account)!
|
||||||
// XCTAssert(FileManager.default.fileExists(atPath: cachedImageURL.path))
|
// XCTAssert(FileManager.default.fileExists(atPath: cachedImageURL.path))
|
||||||
XCTAssertNotNil(webDAV.getCachedImage(forItemAtPath: imagePath, account: account))
|
XCTAssertNotNil(webDAV.getCachedImage(forItemAtPath: imagePath, account: account))
|
||||||
|
|
||||||
try webDAV.deleteCachedData(forItemAtPath: imagePath, account: account)
|
try webDAV.deleteCachedData(forItemAtPath: imagePath, account: account)
|
||||||
|
XCTAssertNil(webDAV.getCachedImage(forItemAtPath: imagePath, account: account))
|
||||||
// XCTAssertFalse(FileManager.default.fileExists(atPath: cachedImageURL.path))
|
// XCTAssertFalse(FileManager.default.fileExists(atPath: cachedImageURL.path))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,20 +415,21 @@ final class WebDAVTests: XCTestCase {
|
||||||
XCTAssertNoThrow(try webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill))
|
XCTAssertNoThrow(try webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill))
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func testSpecificThumbnailCache() throws {
|
func testSpecificThumbnailCache() throws {
|
||||||
guard let (account, password) = getAccount() else { return XCTFail() }
|
guard let (account, password) = getAccount() else { return XCTFail() }
|
||||||
guard let imagePath = ProcessInfo.processInfo.environment["image_path"] else {
|
guard let imagePath = ProcessInfo.processInfo.environment["image_path"] else {
|
||||||
return XCTFail("You need to set the image_path in the environment.")
|
return XCTFail("You need to set the image_path in the environment.")
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadThumbnail(imagePath: imagePath, account: account, password: password)
|
downloadThumbnail(imagePath: imagePath, account: account, password: password, with: .fill)
|
||||||
|
|
||||||
let cachedThumbnailURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false)!
|
// let cachedThumbnailURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false)!
|
||||||
XCTAssertTrue(FileManager.default.fileExists(atPath: cachedThumbnailURL.path))
|
// XCTAssertTrue(FileManager.default.fileExists(atPath: cachedThumbnailURL.path))
|
||||||
XCTAssertNotNil(webDAV.getCachedThumbnail(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false))
|
XCTAssertNotNil(webDAV.getCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill))
|
||||||
try webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false)
|
|
||||||
XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailURL.path))
|
try webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill)
|
||||||
|
XCTAssertNil(webDAV.getCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill))
|
||||||
|
// XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailURL.path))
|
||||||
}
|
}
|
||||||
|
|
||||||
func testGeneralThumbnailCache() throws {
|
func testGeneralThumbnailCache() throws {
|
||||||
|
@ -432,22 +438,22 @@ final class WebDAVTests: XCTestCase {
|
||||||
return XCTFail("You need to set the image_path in the environment.")
|
return XCTFail("You need to set the image_path in the environment.")
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadThumbnail(imagePath: imagePath, account: account, password: password, with: nil, aspectFill: true)
|
downloadThumbnail(imagePath: imagePath, account: account, password: password, with: .fill)
|
||||||
downloadThumbnail(imagePath: imagePath, account: account, password: password, with: nil, aspectFill: false)
|
downloadThumbnail(imagePath: imagePath, account: account, password: password, with: .fit)
|
||||||
|
|
||||||
let cachedThumbnailFillURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: true)!
|
// let cachedThumbnailFillURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: true)!
|
||||||
let cachedThumbnailFitURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false)!
|
// let cachedThumbnailFitURL = try webDAV.getCachedThumbnailURL(forItemAtPath: imagePath, account: account, with: nil, aspectFill: false)!
|
||||||
|
|
||||||
XCTAssert(FileManager.default.fileExists(atPath: cachedThumbnailFillURL.path))
|
// XCTAssert(FileManager.default.fileExists(atPath: cachedThumbnailFillURL.path))
|
||||||
XCTAssert(FileManager.default.fileExists(atPath: cachedThumbnailFitURL.path))
|
// XCTAssert(FileManager.default.fileExists(atPath: cachedThumbnailFitURL.path))
|
||||||
XCTAssertEqual(try webDAV.getAllCachedThumbnails(forItemAtPath: imagePath, account: account).count, 2)
|
XCTAssertEqual(webDAV.getAllCachedThumbnails(forItemAtPath: imagePath, account: account)?.count, 2)
|
||||||
|
|
||||||
// Delete all cached thumbnails and check that they're both gone
|
// Delete all cached thumbnails and check that they're both gone
|
||||||
try webDAV.deleteAllCachedThumbnails(forItemAtPath: imagePath, account: account)
|
try webDAV.deleteAllCachedThumbnails(forItemAtPath: imagePath, account: account)
|
||||||
XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailFillURL.path))
|
XCTAssertNil(webDAV.getAllCachedThumbnails(forItemAtPath: imagePath, account: account))
|
||||||
XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailFitURL.path))
|
// XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailFillURL.path))
|
||||||
|
// XCTAssertFalse(FileManager.default.fileExists(atPath: cachedThumbnailFitURL.path))
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
//MARK: OCS
|
//MARK: OCS
|
||||||
|
|
||||||
|
@ -571,12 +577,12 @@ final class WebDAVTests: XCTestCase {
|
||||||
wait(for: [expectation], timeout: 10.0)
|
wait(for: [expectation], timeout: 10.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func downloadThumbnail(imagePath: String, account: SimpleAccount, password: String, with dimensions: CGSize? = nil, aspectFill: Bool = false) {
|
private func downloadThumbnail(imagePath: String, account: SimpleAccount, password: String, with properties: ThumbnailProperties = .fill) {
|
||||||
let expectation = XCTestExpectation(description: "Download thumbnail from WebDAV")
|
let expectation = XCTestExpectation(description: "Download thumbnail from WebDAV")
|
||||||
|
|
||||||
try? webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: .fill)
|
try? webDAV.deleteCachedThumbnail(forItemAtPath: imagePath, account: account, with: properties)
|
||||||
|
|
||||||
webDAV.downloadThumbnail(path: imagePath, account: account, password: password, with: .fill) { image, error in
|
webDAV.downloadThumbnail(path: imagePath, account: account, password: password, with: properties) { image, error in
|
||||||
XCTAssertNil(error)
|
XCTAssertNil(error)
|
||||||
XCTAssertNotNil(image)
|
XCTAssertNotNil(image)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue