移除 Core 层 OTG 相机实现,保留旅拍有线传图 UI 与本地照片上传能力。
将本地存储与上传编排下沉到 Features/TravelAlbum,删除 USB/PTP 相关代码与测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
76
suixinkanTests/TravelAlbum/CameraDownloadStorageTests.swift
Normal file
76
suixinkanTests/TravelAlbum/CameraDownloadStorageTests.swift
Normal file
@ -0,0 +1,76 @@
|
||||
//
|
||||
// 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://"))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user