Add Lottie global loading overlay and fix stuck loading states.
Replace per-VC activity indicators with a ref-counted GlobalLoadingManager, and resolve duplicate show/hide calls on Profile, Statistics, and Home tabs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
54
suixinkanTests/GlobalLoadingManagerTests.swift
Normal file
54
suixinkanTests/GlobalLoadingManagerTests.swift
Normal file
@ -0,0 +1,54 @@
|
||||
//
|
||||
// GlobalLoadingManagerTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
@MainActor
|
||||
/// 全局 Loading 管理器测试。
|
||||
final class GlobalLoadingManagerTests: XCTestCase {
|
||||
|
||||
override func tearDown() {
|
||||
GlobalLoadingManager.shared.hideAll()
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
func testShowAndHideToggleVisibilityState() {
|
||||
let manager = GlobalLoadingManager.shared
|
||||
XCTAssertFalse(manager.isShowing)
|
||||
|
||||
manager.show()
|
||||
XCTAssertTrue(manager.isShowing)
|
||||
|
||||
manager.hide()
|
||||
XCTAssertFalse(manager.isShowing)
|
||||
}
|
||||
|
||||
func testNestedShowRequiresMatchingHideCount() {
|
||||
let manager = GlobalLoadingManager.shared
|
||||
|
||||
manager.show()
|
||||
manager.show()
|
||||
XCTAssertTrue(manager.isShowing)
|
||||
|
||||
manager.hide()
|
||||
XCTAssertTrue(manager.isShowing)
|
||||
|
||||
manager.hide()
|
||||
XCTAssertFalse(manager.isShowing)
|
||||
}
|
||||
|
||||
func testHideAllResetsNestedCount() {
|
||||
let manager = GlobalLoadingManager.shared
|
||||
|
||||
manager.show()
|
||||
manager.show()
|
||||
manager.hideAll()
|
||||
XCTAssertFalse(manager.isShowing)
|
||||
|
||||
manager.hide()
|
||||
XCTAssertFalse(manager.isShowing)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user