import 'package:askiineverdie/src/app.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  // SharedPreferences 모킹
  setUpAll(() {
    TestWidgetsFlutterBinding.ensureInitialized();
    const MethodChannel('plugins.flutter.io/shared_preferences')
        .setMockMethodCallHandler((call) async {
      if (call.method == 'getAll') return <String, Object>{};
      return null;
    });
  });

  testWidgets('Front screen renders and navigates to new character', (
    tester,
  ) async {
    await tester.pumpWidget(const AskiiNeverDieApp());

    // 세이브 파일 확인이 완료될 때까지 대기 (스플래시 → 프론트)
    // runAsync로 비동기 파일 작업 완료 대기
    await tester.runAsync(
      () => Future<void>.delayed(const Duration(milliseconds: 100)),
    );
    await tester.pump(); // 상태 업데이트 반영

    // 프런트 화면이 렌더링되었는지 확인
    expect(find.text('ASCII NEVER DIE'), findsOneWidget);
    expect(find.text('New character'), findsOneWidget);

    // "New character" 버튼 탭
    await tester.tap(find.text('New character'));
    await tester.pumpAndSettle();

    // NewCharacterScreen으로 이동했는지 확인 (l10n 적용됨)
    expect(find.text('ASCII NEVER DIE - New Character'), findsOneWidget);
    expect(find.text('Race'), findsOneWidget);
    expect(find.text('Class'), findsOneWidget);
    expect(find.text('Sold!'), findsOneWidget);
  });
}
