import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:jiu_client/core/auth/auth_state.dart'; import 'package:jiu_client/core/config/store_compliance.dart'; import 'package:jiu_client/core/theme/themes.dart'; import 'package:jiu_client/providers/license_provider.dart'; import 'package:jiu_client/screens/license/license_screen.dart'; /// 授权管理独立一级屏(2026-07-10 三 tab 化)tab 可见性回归: /// - 「在线购买续费」iOS App Store 合规态(3.1.1)整 tab 隐藏; /// - 「订单管理」GET /license/purchases 仅管理员可用,非管理员隐藏该 tab。 class _FakeAuth extends AuthNotifier { _FakeAuth(String role) { state = AuthState( user: AuthUser( accessToken: 't', refreshToken: 'r', id: 1, username: 'wang', realName: '王经理', shopNo: 'S001', shopId: 1, role: role), ); } } class _FakeLicense extends LicenseNotifier { @override Future build() async => LicenseInfo( id: 1, type: 'annual', isActive: true, maxDevices: 2, phase: 'normal', expiresAt: DateTime.now().add(const Duration(days: 100)), ); } Widget _screen({required String role}) => ProviderScope( overrides: [ authStateProvider.overrideWith((ref) => _FakeAuth(role)), licenseProvider.overrideWith(() => _FakeLicense()), ], child: MaterialApp( theme: buildTheme('a'), home: const Scaffold(body: LicenseScreen()), ), ); void main() { tearDown(() => debugForceHideExternalPurchaseUi = null); testWidgets('管理员 + 非 iOS:三 tab 全部可见', (tester) async { debugForceHideExternalPurchaseUi = false; await tester.pumpWidget(_screen(role: 'admin')); await tester.pumpAndSettle(); expect(find.text('在线购买 / 续费'), findsOneWidget); expect(find.text('订单管理'), findsOneWidget); }); testWidgets('iOS 合规态:购买 tab 隐藏,订单 tab 仍在', (tester) async { debugForceHideExternalPurchaseUi = true; await tester.pumpWidget(_screen(role: 'admin')); await tester.pumpAndSettle(); expect(find.text('在线购买 / 续费'), findsNothing); expect(find.text('订单管理'), findsOneWidget); }); testWidgets('非管理员:订单管理 tab 隐藏,购买 tab 仍可见', (tester) async { debugForceHideExternalPurchaseUi = false; await tester.pumpWidget(_screen(role: 'operator')); await tester.pumpAndSettle(); expect(find.text('在线购买 / 续费'), findsOneWidget); expect(find.text('订单管理'), findsNothing); }); }