// // 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) } /// 测试 scoped 目录路径。 func testScopeDirectoryPath() { let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603) defer { CameraDownloadStorage.removeScopeDirectory(for: scope) } let directory = CameraDownloadStorage.scopeDirectory(for: scope) XCTAssertTrue(directory.path.hasSuffix("CameraDownloads/user_101/6603")) } /// 测试唯一原图 URL 生成。 func testUniqueLocalURLUsesScopedOriginalsDirectory() { let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603) defer { CameraDownloadStorage.removeScopeDirectory(for: scope) } let url = CameraDownloadStorage.uniqueLocalURL(for: "DSC.JPG", scope: scope) XCTAssertTrue(url.path.contains("/CameraDownloads/user_101/6603/originals/")) XCTAssertTrue(url.lastPathComponent.hasSuffix("_DSC.JPG")) } /// 测试删除 scoped 目录。 func testRemoveScopeDirectory() throws { let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603) let fileURL = CameraDownloadStorage.uniqueLocalURL(for: "remove_test.JPG", scope: scope) try Data(repeating: 0xFF, count: 8).write(to: fileURL) let directory = CameraDownloadStorage.scopeDirectory(for: scope) XCTAssertTrue(FileManager.default.fileExists(atPath: directory.path)) CameraDownloadStorage.removeScopeDirectory(for: scope) XCTAssertFalse(FileManager.default.fileExists(atPath: directory.path)) } /// 测试预览 URL 字符串。 func testPreviewURLStringFromExistingFile() throws { let scope = CameraDownloadStorage.Scope(accountKey: "user_101", albumID: 6603) defer { CameraDownloadStorage.removeScopeDirectory(for: scope) } let fileURL = CameraDownloadStorage.uniqueLocalURL(for: "preview.JPG", scope: scope) try Data(repeating: 0xFF, count: 8).write(to: fileURL) let stored = CameraDownloadStorage.relativePath(for: fileURL) let preview = CameraDownloadStorage.previewURLString(from: stored) XCTAssertFalse(preview.isEmpty) XCTAssertTrue(preview.hasPrefix("file://")) } }