feat(app): новый визуальный язык, верхняя навигация, портфели, создание счетов и ручные события
Тема и общие виджеты (AssetIcon, ServiceMark, HelpTip, глоссарий), верхняя панель TopNav и вкладки Аналитики вместо NavSidebar, иконки PWA. Экраны: портфели, создание брокерского счёта, ручное событие, правка инструмента, Обзор карточками по скоупам и таблица активов, пересчёт метрик с опросом /metrics/status. design-system.md обновлён.
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
import 'package:fintracker_api/fintracker_api.dart';
|
||||
import 'package:fintracker_app/features/home/providers.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
MetricsStatusOut _status({required bool refreshing, bool consistent = true}) =>
|
||||
MetricsStatusOut(
|
||||
lastRefresh: null,
|
||||
consistent: consistent,
|
||||
refreshing: refreshing,
|
||||
);
|
||||
|
||||
void main() {
|
||||
const fast = Duration(milliseconds: 1);
|
||||
|
||||
test('polls until the server stops reporting a rebuild', () async {
|
||||
final answers = [
|
||||
_status(refreshing: true),
|
||||
_status(refreshing: true),
|
||||
_status(refreshing: false),
|
||||
];
|
||||
var calls = 0;
|
||||
|
||||
final done = await waitForMetricsRefresh(
|
||||
() async => answers[calls++],
|
||||
interval: fast,
|
||||
);
|
||||
|
||||
expect(calls, 3);
|
||||
expect(done?.refreshing, isFalse);
|
||||
});
|
||||
|
||||
test('returns straight away when nothing is queued', () async {
|
||||
var calls = 0;
|
||||
final done = await waitForMetricsRefresh(() async {
|
||||
calls++;
|
||||
return _status(refreshing: false);
|
||||
}, interval: fast);
|
||||
|
||||
expect(calls, 1);
|
||||
expect(done, isNotNull);
|
||||
});
|
||||
|
||||
test('a failed rebuild is handed back so the caller can say so', () async {
|
||||
final done = await waitForMetricsRefresh(
|
||||
() async => _status(refreshing: false, consistent: false),
|
||||
interval: fast,
|
||||
);
|
||||
|
||||
expect(done?.consistent, isFalse);
|
||||
});
|
||||
|
||||
test('gives up with null when the rebuild never finishes', () async {
|
||||
final done = await waitForMetricsRefresh(
|
||||
() async => _status(refreshing: true),
|
||||
interval: fast,
|
||||
timeout: const Duration(milliseconds: 20),
|
||||
);
|
||||
|
||||
expect(done, isNull);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user