import 'package:fintracker_api/fintracker_api.dart'; import 'package:fintracker_app/features/accounts/account_create_dialog.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; Widget _host({Broker? broker, String? sourceId, String? name}) => ProviderScope( child: MaterialApp( home: Builder( builder: (context) => Scaffold( body: TextButton( onPressed: () => showAccountCreateDialog( context, broker: broker, sourceId: sourceId, name: name, ), child: const Text('open'), ), ), ), ), ); void main() { testWidgets('the dialog starts from what the report says', (tester) async { await tester.pumpWidget( _host(broker: Broker.vtb, sourceId: 'BR-42', name: 'ВТБ BR-42'), ); await tester.tap(find.text('open')); await tester.pumpAndSettle(); expect(find.text('Новый брокерский счёт'), findsOneWidget); expect(find.text('BR-42'), findsOneWidget); expect(find.text('ВТБ BR-42'), findsOneWidget); expect(find.text('ВТБ'), findsOneWidget); // the selected broker }); testWidgets('name and agreement number are required', (tester) async { await tester.pumpWidget(_host()); await tester.tap(find.text('open')); await tester.pumpAndSettle(); await tester.tap(find.text('Создать')); await tester.pumpAndSettle(); expect(find.text('Обязательное поле'), findsNWidgets(2)); }); test('import broker keys map onto creatable brokers', () { expect(brokerFromImportKey('sber'), Broker.sber); expect(brokerFromImportKey('vtb'), Broker.vtb); expect(brokerFromImportKey('csv'), Broker.other); expect(brokerFromImportKey('tinvest'), isNull); }); }