feat(app): новый визуальный язык, верхняя навигация, портфели, создание счетов и ручные события
Тема и общие виджеты (AssetIcon, ServiceMark, HelpTip, глоссарий), верхняя панель TopNav и вкладки Аналитики вместо NavSidebar, иконки PWA. Экраны: портфели, создание брокерского счёта, ручное событие, правка инструмента, Обзор карточками по скоупам и таблица активов, пересчёт метрик с опросом /metrics/status. design-system.md обновлён.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user