Add interactive graph gestures and person insights drilldown
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:relationship_saver/core/config/app_theme.dart';
|
||||
import 'package:relationship_saver/features/dashboard/dashboard_view.dart';
|
||||
import 'package:relationship_saver/features/local/storage/local_data_store_in_memory.dart';
|
||||
import 'package:relationship_saver/features/local/storage/local_data_store_provider.dart';
|
||||
import 'package:relationship_saver/features/sync/storage/sync_state_store_in_memory.dart';
|
||||
import 'package:relationship_saver/features/sync/storage/sync_state_store_provider.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets(
|
||||
'graph supports pan/zoom shell and opens person insights on long press',
|
||||
(WidgetTester tester) async {
|
||||
await tester.binding.setSurfaceSize(const Size(390, 844));
|
||||
addTearDown(() => tester.binding.setSurfaceSize(null));
|
||||
|
||||
await tester.pumpWidget(
|
||||
ProviderScope(
|
||||
overrides: [
|
||||
localDataStoreProvider.overrideWithValue(InMemoryLocalDataStore()),
|
||||
syncStateStoreProvider.overrideWithValue(InMemorySyncStateStore()),
|
||||
],
|
||||
child: MaterialApp(
|
||||
theme: AppTheme.light(),
|
||||
home: const Scaffold(body: DashboardView()),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle(const Duration(milliseconds: 600));
|
||||
|
||||
expect(find.text('Relationship Graph'), findsOneWidget);
|
||||
expect(find.byType(InteractiveViewer), findsOneWidget);
|
||||
|
||||
final Finder avaNode = find.byKey(
|
||||
const ValueKey<String>('graph-node-p-ava'),
|
||||
);
|
||||
expect(avaNode, findsOneWidget);
|
||||
|
||||
await tester.longPress(avaNode);
|
||||
await tester.pumpAndSettle(const Duration(milliseconds: 700));
|
||||
|
||||
expect(find.text('Person Insights'), findsOneWidget);
|
||||
expect(find.text('Promotions & Signals'), findsOneWidget);
|
||||
expect(find.text('Ideas'), findsOneWidget);
|
||||
expect(find.text('Moments'), findsOneWidget);
|
||||
expect(find.text('Reminders'), findsOneWidget);
|
||||
|
||||
await tester.tap(find.byTooltip('Back'));
|
||||
await tester.pumpAndSettle(const Duration(milliseconds: 500));
|
||||
|
||||
expect(find.text('Relationship Graph'), findsOneWidget);
|
||||
},
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user