import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:werwolf/screens/settings.dart';
import 'package:werwolf/screens/flippingcards.dart';

void main() {
  group('GameSettings Tests', () {
    List<String> playerNames = ['Alice', 'Bob', 'Charlie', 'Dave', 'Eve', 'Frank'];

    testWidgets('Displays number of players', (WidgetTester tester) async {
      await tester.pumpWidget(MaterialApp(home: GameSettings(playernames: playerNames)));

      expect(find.text('Anzahl der Spieler   6'), findsOneWidget);
    });

    testWidgets('Displays number of wolves and increments/decrements correctly', (WidgetTester tester) async {
      await tester.pumpWidget(MaterialApp(home: GameSettings(playernames: playerNames)));

      expect(find.text('Anzahl der Werwölfe   1'), findsOneWidget);

      await tester.tap(find.byIcon(Icons.add));
      await tester.pumpAndSettle();
      expect(find.text('Anzahl der Werwölfe   2'), findsOneWidget);

      await tester.tap(find.byIcon(Icons.remove));
      await tester.pumpAndSettle();
      expect(find.text('Anzahl der Werwölfe   1'), findsOneWidget);
    });

    testWidgets('Displays special roles and toggles switches', (WidgetTester tester) async {
      await tester.pumpWidget(MaterialApp(home: GameSettings(playernames: playerNames)));

      expect(find.text('Spezielle Rollen'), findsOneWidget);

      await tester.tap(find.byType(Switch).first);
      await tester.pumpAndSettle();

      expect((tester.widget(find.byType(Switch).first) as Switch).value, true);
    });

    testWidgets('Navigates to FlipingCard screen on start', (WidgetTester tester) async {
      await tester.pumpWidget(MaterialApp(home: GameSettings(playernames: playerNames)));

      await tester.tap(find.text('Spiel starten!'));
      await tester.pumpAndSettle();

      expect(find.byType(FlipingCard), findsOneWidget);
    });
  });
}
