新增门店订单与核销管理列表,对齐 Android 订单能力并完善账号级缓存。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -76,7 +76,7 @@ final class HomeCommonMenuStoreTests: XCTestCase {
|
||||
XCTAssertEqual(uris, ["space_settings", "wallet", "cloud_management"])
|
||||
}
|
||||
|
||||
/// 测试已保存 URI 会按当前权限过滤并解析同义 URI。
|
||||
/// 测试已保存 URI 会按当前权限和 Android 白名单过滤并解析同义 URI。
|
||||
func testLoadFiltersSavedUrisByCurrentPermissions() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
defaults.set(["task_management", "unknown", "pm"], forKey: HomeCommonMenuStore.storageKeyPrefix + "photographer")
|
||||
@ -92,7 +92,41 @@ final class HomeCommonMenuStoreTests: XCTestCase {
|
||||
topLevelPermissionURIs: ["task_management_editor", "project_edit"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(uris, ["task_management_editor", "project_edit"])
|
||||
XCTAssertEqual(uris, ["task_management_editor"])
|
||||
}
|
||||
|
||||
/// 测试同一角色不同账号使用独立的常用应用缓存。
|
||||
func testLoadUsesAccountScopedStorageKeys() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
defaults.set(
|
||||
["wallet"],
|
||||
forKey: HomeCommonMenuStore.storageKey(roleCode: "photographer", accountScope: "scenic_user_101")
|
||||
)
|
||||
defaults.set(
|
||||
["cloud_management"],
|
||||
forKey: HomeCommonMenuStore.storageKey(roleCode: "photographer", accountScope: "store_user_101")
|
||||
)
|
||||
let store = HomeCommonMenuStore(defaults: defaults)
|
||||
let menus = [
|
||||
menu("wallet"),
|
||||
menu("cloud_management")
|
||||
]
|
||||
|
||||
let scenic = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "scenic_user_101",
|
||||
topLevelPermissionURIs: ["wallet", "cloud_management"]
|
||||
)
|
||||
let storeAccount = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "store_user_101",
|
||||
topLevelPermissionURIs: ["wallet", "cloud_management"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(scenic, ["wallet"])
|
||||
XCTAssertEqual(storeAccount, ["cloud_management"])
|
||||
}
|
||||
|
||||
/// 测试不同角色使用独立存储 key。
|
||||
@ -183,6 +217,94 @@ final class HomeCommonMenuStoreTests: XCTestCase {
|
||||
XCTAssertNil(defaults.stringArray(forKey: HomeCommonMenuStore.storageKeyPrefix + "46"))
|
||||
}
|
||||
|
||||
/// 测试旧 roleCode key 会迁移到账号作用域 key。
|
||||
func testLoadMigratesLegacyRoleCodeStorageKeyToAccountScopedKey() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
defaults.set(["wallet", "cloud_management"], forKey: HomeCommonMenuStore.storageKeyPrefix + "photographer")
|
||||
let store = HomeCommonMenuStore(defaults: defaults)
|
||||
let menus = [menu("wallet"), menu("cloud_management")]
|
||||
|
||||
let uris = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "scenic_user_101",
|
||||
topLevelPermissionURIs: ["wallet", "cloud_management"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(uris, ["wallet", "cloud_management"])
|
||||
XCTAssertEqual(
|
||||
defaults.stringArray(forKey: HomeCommonMenuStore.storageKey(roleCode: "photographer", accountScope: "scenic_user_101")),
|
||||
["wallet", "cloud_management"]
|
||||
)
|
||||
XCTAssertNil(defaults.stringArray(forKey: HomeCommonMenuStore.storageKeyPrefix + "photographer"))
|
||||
}
|
||||
|
||||
/// 测试 Android 白名单外的 URI 不会进入默认常用应用。
|
||||
func testDefaultCommonURIsExcludeMenusMissingFromAndroidCatalog() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
let store = HomeCommonMenuStore(defaults: defaults)
|
||||
let menus = [
|
||||
menu("wallet"),
|
||||
menu("album_list"),
|
||||
menu("cloud_storage_transit"),
|
||||
menu("message_center")
|
||||
]
|
||||
|
||||
let uris = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "scenic_user_101",
|
||||
topLevelPermissionURIs: ["wallet", "album_list", "cloud_storage_transit", "message_center"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(uris, ["wallet", "message_center"])
|
||||
}
|
||||
|
||||
/// 测试已保存常用应用超过 4 个时只过滤权限,不会被强制截断。
|
||||
func testSavedCommonURIsAreNotTruncatedToFour() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
defaults.set(
|
||||
["space_settings", "wallet", "cloud_management", "asset_management", "message_center"],
|
||||
forKey: HomeCommonMenuStore.storageKey(roleCode: "photographer", accountScope: "scenic_user_101")
|
||||
)
|
||||
let store = HomeCommonMenuStore(defaults: defaults)
|
||||
let menus = [
|
||||
menu("space_settings"),
|
||||
menu("wallet"),
|
||||
menu("cloud_management"),
|
||||
menu("asset_management"),
|
||||
menu("message_center")
|
||||
]
|
||||
|
||||
let uris = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "scenic_user_101",
|
||||
topLevelPermissionURIs: menus.map(\.uri)
|
||||
)
|
||||
|
||||
XCTAssertEqual(uris, ["space_settings", "wallet", "cloud_management", "asset_management", "message_center"])
|
||||
}
|
||||
|
||||
/// 测试默认常用只取顶层权限,不会用子权限补位。
|
||||
func testDefaultCommonURIsUseOnlyTopLevelPermissions() {
|
||||
let defaults = makeIsolatedDefaults()
|
||||
let store = HomeCommonMenuStore(defaults: defaults)
|
||||
let menus = [
|
||||
menu("task_management"),
|
||||
menu("message_center")
|
||||
]
|
||||
|
||||
let uris = store.load(
|
||||
menuItems: menus,
|
||||
roleCode: "photographer",
|
||||
accountScope: "scenic_user_101",
|
||||
topLevelPermissionURIs: ["task_management"]
|
||||
)
|
||||
|
||||
XCTAssertEqual(uris, ["task_management"])
|
||||
}
|
||||
|
||||
/// 创建测试菜单实体。
|
||||
private func menu(_ uri: String) -> HomeMenuItem {
|
||||
HomeMenuItem(title: HomeMenuRouter.title(for: uri), uri: uri, iconSrc: nil)
|
||||
|
||||
Reference in New Issue
Block a user