新增门店订单与核销管理列表,对齐 Android 订单能力并完善账号级缓存。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 14:46:10 +08:00
parent c4de3d17d0
commit 08492df6ce
51 changed files with 3668 additions and 102 deletions

View File

@ -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)