Files
suixinkan_ios_new/suixinkanTests/CameraTethering/CameraDownloadStorageTests.swift

85 lines
3.8 KiB
Swift

//
// CameraDownloadStorageTests.swift
// suixinkanTests
//
import XCTest
@testable import suixinkan
/// CameraDownloadStorage
final class CameraDownloadStorageTests: XCTestCase {
/// scoped
func testRelativePathUsesScopedOriginalsPrefix() {
let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603)
defer { CameraDownloadStorage.removeScopeDirectory(for: scope) }
let fileURL = CameraDownloadStorage.originalsDirectory(for: scope).appendingPathComponent("1730_test.JPG")
XCTAssertEqual(
CameraDownloadStorage.relativePath(for: fileURL),
"CameraDownloads/user_101/6603/originals/1730_test.JPG"
)
}
///
func testResolveLocalURLFromRelativePath() {
let stored = "CameraDownloads/user_101/6603/originals/1730_test.JPG"
let resolved = CameraDownloadStorage.resolveLocalURL(from: stored)
let expected = CameraDownloadStorage.documentsDirectory.appendingPathComponent(stored)
XCTAssertEqual(resolved, expected)
}
///
func testScopedDirectoriesDoNotCollideAcrossAccountOrAlbum() {
let accountScope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603)
let otherAccountScope = CameraDownloadStorage.Scope(accountKey: "user_102", albumID: 6603)
let otherAlbumScope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6604)
defer {
CameraDownloadStorage.removeScopeDirectory(for: accountScope)
CameraDownloadStorage.removeScopeDirectory(for: otherAccountScope)
CameraDownloadStorage.removeScopeDirectory(for: otherAlbumScope)
}
XCTAssertNotEqual(
CameraDownloadStorage.originalsDirectory(for: accountScope).path,
CameraDownloadStorage.originalsDirectory(for: otherAccountScope).path
)
XCTAssertNotEqual(
CameraDownloadStorage.originalsDirectory(for: accountScope).path,
CameraDownloadStorage.originalsDirectory(for: otherAlbumScope).path
)
}
/// scoped
func testRemoveScopeDirectoryOnlyDeletesTargetScope() throws {
let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603)
let otherScope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6604)
defer {
CameraDownloadStorage.removeScopeDirectory(for: scope)
CameraDownloadStorage.removeScopeDirectory(for: otherScope)
}
let fileURL = CameraDownloadStorage.uniqueLocalURL(for: "target.jpg", scope: scope)
let otherFileURL = CameraDownloadStorage.uniqueLocalURL(for: "other.jpg", scope: otherScope)
try Data("target".utf8).write(to: fileURL)
try Data("other".utf8).write(to: otherFileURL)
CameraDownloadStorage.removeScopeDirectory(for: scope)
XCTAssertFalse(FileManager.default.fileExists(atPath: fileURL.path))
XCTAssertTrue(FileManager.default.fileExists(atPath: otherFileURL.path))
}
/// URL
func testPreviewURLStringFromRelativePath() throws {
let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603)
let fileURL = CameraDownloadStorage.uniqueLocalURL(for: "preview.jpg", scope: scope)
try Data("jpeg".utf8).write(to: fileURL)
defer { CameraDownloadStorage.removeScopeDirectory(for: scope) }
let stored = CameraDownloadStorage.relativePath(for: fileURL)
let preview = CameraDownloadStorage.previewURLString(from: stored)
XCTAssertFalse(preview.isEmpty)
XCTAssertTrue(preview.hasPrefix("file://"))
}
}