mirror of
https://github.com/h3pdesign/Neon-Vision-Editor
synced 2026-04-21 21:37:17 +00:00
70 lines
2.5 KiB
Swift
70 lines
2.5 KiB
Swift
import XCTest
|
|
@testable import Neon_Vision_Editor
|
|
|
|
final class RecentFilesStoreTests: XCTestCase {
|
|
private var temporaryDirectoryURL: URL!
|
|
|
|
override func setUpWithError() throws {
|
|
temporaryDirectoryURL = FileManager.default.temporaryDirectory
|
|
.appendingPathComponent(UUID().uuidString, isDirectory: true)
|
|
try FileManager.default.createDirectory(at: temporaryDirectoryURL, withIntermediateDirectories: true)
|
|
clearStore()
|
|
}
|
|
|
|
override func tearDownWithError() throws {
|
|
clearStore()
|
|
if let temporaryDirectoryURL {
|
|
try? FileManager.default.removeItem(at: temporaryDirectoryURL)
|
|
}
|
|
temporaryDirectoryURL = nil
|
|
}
|
|
|
|
func testRememberOrdersMostRecentFirst() throws {
|
|
let first = try makeFile(named: "first.txt")
|
|
let second = try makeFile(named: "second.txt")
|
|
|
|
RecentFilesStore.remember(first)
|
|
RecentFilesStore.remember(second)
|
|
|
|
XCTAssertEqual(RecentFilesStore.items(limit: 10).map(\.title), ["second.txt", "first.txt"])
|
|
}
|
|
|
|
func testPinnedItemsStayAtTop() throws {
|
|
let first = try makeFile(named: "first.txt")
|
|
let second = try makeFile(named: "second.txt")
|
|
let third = try makeFile(named: "third.txt")
|
|
|
|
RecentFilesStore.remember(first)
|
|
RecentFilesStore.remember(second)
|
|
RecentFilesStore.remember(third)
|
|
RecentFilesStore.togglePinned(first)
|
|
|
|
let items = RecentFilesStore.items(limit: 10)
|
|
XCTAssertEqual(items.map(\.title), ["first.txt", "third.txt", "second.txt"])
|
|
XCTAssertEqual(items.first?.isPinned, true)
|
|
}
|
|
|
|
func testClearUnpinnedRetainsPinnedItems() throws {
|
|
let pinned = try makeFile(named: "pinned.txt")
|
|
let unpinned = try makeFile(named: "unpinned.txt")
|
|
|
|
RecentFilesStore.remember(pinned)
|
|
RecentFilesStore.remember(unpinned)
|
|
RecentFilesStore.togglePinned(pinned)
|
|
RecentFilesStore.clearUnpinned()
|
|
|
|
XCTAssertEqual(RecentFilesStore.items(limit: 10).map(\.title), ["pinned.txt"])
|
|
}
|
|
|
|
private func makeFile(named name: String) throws -> URL {
|
|
let url = temporaryDirectoryURL.appendingPathComponent(name)
|
|
try "sample".write(to: url, atomically: true, encoding: .utf8)
|
|
return url
|
|
}
|
|
|
|
private func clearStore() {
|
|
let defaults = UserDefaults.standard
|
|
defaults.removeObject(forKey: "RecentFilesPathsV1")
|
|
defaults.removeObject(forKey: "PinnedRecentFilesPathsV1")
|
|
}
|
|
}
|