Fix foreground error assignment and test persistence recovery
This commit is contained in:
@@ -73,7 +73,7 @@ final class PlayerStore: ObservableObject {
|
||||
// Retry loading if Keychain was locked when the app was created.
|
||||
if connection == nil {
|
||||
do { connection = try storage.load() }
|
||||
catch { error = BridgeError.describe(error) }
|
||||
catch { self.error = BridgeError.describe(error) }
|
||||
}
|
||||
if discoveryEnabled { discovery.start() }
|
||||
resume()
|
||||
|
||||
@@ -49,6 +49,23 @@ final class ResilienceTests: XCTestCase {
|
||||
XCTAssertFalse(store.connected)
|
||||
}
|
||||
|
||||
func testRetriesStorageLoadWhenForegroundBecomesAvailable() async throws {
|
||||
let saved = try connection("storage-unlock")
|
||||
var loads = 0
|
||||
let storage = ConnectionStorage(load: {
|
||||
loads += 1
|
||||
if loads == 1 { throw BridgeError.message("Keychain locked") }
|
||||
return saved
|
||||
}, save: { _ in }, delete: {})
|
||||
let store = PlayerStore(storage: storage, discoveryEnabled: false)
|
||||
defer { store.setActive(false) }
|
||||
XCTAssertNil(store.connection)
|
||||
store.setActive(true)
|
||||
try await eventually { store.connected }
|
||||
XCTAssertEqual(loads, 2)
|
||||
XCTAssertNil(store.error)
|
||||
}
|
||||
|
||||
func testArtworkRetriesAfter404WithoutTrackChange() async throws {
|
||||
let store = try store("artwork")
|
||||
defer { store.setActive(false) }
|
||||
|
||||
Reference in New Issue
Block a user