- 删除分组实体:分组视图/编辑器/仓储与 groupId 全部移除,升级首启清理 instance-groups.json 与 fleet.groupMode - 新增批量标签表:三态覆盖度(未贴 / N/M / 全部),整批加减与新建标签 - 配色重构,全应用零蓝色:石墨墨色承担主操作与选中态,颜色只留给状态语义; 浅色改中性冷灰,深色改低明度石墨三层 - 选中态改实心主色 + onPrimary,替换不可读的低透明度色雾(主题块、图例胶囊) - 应用图标重做为扁平石墨底 + 黄铜 SIM 面板,参数化光栅化脚本与参考稿 - 运行概览:检测进度并入副标题,读数栅格固定八格两行并保留不可用占位 - 实例详情:仪表改两列发丝线栅格,缺数据留轨道,修掉头部高度回弹; 补齐设备名称/存储总量/可用存储/使用率四个字段名 - 版本号显示去掉括号,设置页只显示 0.2.2 - 文档:新增 docs/ios-native-0.2.2.md,同步 ios-native.md 与两处 README
45 lines
1.4 KiB
Swift
45 lines
1.4 KiB
Swift
import XCTest
|
|
|
|
@testable import MultiSimAdmin
|
|
|
|
final class ConnectionProbeTests: XCTestCase {
|
|
func testProbeMapsUpstreamResults() async {
|
|
let unauthorized = ConnectionProbe(client: MockClient(status: 401))
|
|
let online = ConnectionProbe(client: MockClient(status: 200))
|
|
let unavailable = ConnectionProbe(client: MockClient(status: 0))
|
|
let instance = Self.instance()
|
|
|
|
let auth = try? await unauthorized.test(instance)
|
|
let reachable = try? await online.test(instance)
|
|
let offline = try? await unavailable.test(instance)
|
|
|
|
XCTAssertEqual(auth?.status, .authRequired)
|
|
XCTAssertEqual(reachable?.status, .online)
|
|
XCTAssertEqual(offline?.status, .offline)
|
|
}
|
|
|
|
private static func instance() -> Instance {
|
|
Instance(
|
|
id: UUID(),
|
|
name: "Probe",
|
|
origin: URL(string: "http://192.168.1.20:3000")!,
|
|
tags: [],
|
|
credentialConfigured: false,
|
|
configRevision: 1,
|
|
createdAt: Date(),
|
|
updatedAt: Date()
|
|
)
|
|
}
|
|
|
|
private struct MockClient: SimAdminClientProtocol {
|
|
let status: Int
|
|
|
|
func send(_: UpstreamRoute, baseURL: URL, cookie: String?) async throws -> UpstreamResponse {
|
|
if status == 0 {
|
|
throw UpstreamError.timeout
|
|
}
|
|
return UpstreamResponse(status: status, data: Data("{}".utf8))
|
|
}
|
|
}
|
|
}
|