import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart';

import 'mocks.dart';

void main() {
  testWidgets(
    'control test',
    (WidgetTester tester) async {
      final client = MockClient();
      final clientState = MockClientState();

      when(() => client.state).thenReturn(clientState);
      when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));

      await tester.pumpWidget(MaterialApp(
        home: StreamChat(
          client: client,
          child: const Scaffold(
            body: Portal(
              child: SizedBox(
                child: InfoTile(
                  showMessage: true,
                  message: 'message',
                  child: Text('test'),
                ),
              ),
            ),
          ),
        ),
      ));

      expect(find.text('message'), findsOneWidget);
    },
  );

  testWidgets(
    'it should hide when passing showMessage: false',
    (WidgetTester tester) async {
      final client = MockClient();
      final clientState = MockClientState();

      when(() => client.state).thenReturn(clientState);
      when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));

      await tester.pumpWidget(MaterialApp(
        home: StreamChat(
          client: client,
          child: const Scaffold(
            body: Portal(
              child: SizedBox(
                child: InfoTile(
                  showMessage: false,
                  message: 'message',
                  child: Text('test'),
                ),
              ),
            ),
          ),
        ),
      ));

      expect(find.text('message'), findsNothing);
    },
  );
}
