Files
kooltab/test/product_navigation_test.dart
T

70 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:go_router/go_router.dart';
import 'package:kooltab2/l10n/app_localizations.dart';
import 'package:kooltab2/models/product.dart';
import 'package:kooltab2/views/widgets/product_tile.dart';
void main() {
testWidgets('long-pressing a product tile returns to the bar after edit', (
tester,
) async {
final product = Product(
id: 'product-1',
name: 'Cola',
category: 'Drinks',
stockQuantity: 5,
lowStockThreshold: 1,
priceInCents: 250,
);
final router = GoRouter(
initialLocation: '/bar',
routes: [
GoRoute(
path: '/bar',
builder: (context, state) => Scaffold(
body: ProductTile(
product: product,
enabled: false,
onTap: () {},
onLongPress: () => context.push('/products/${product.id}/edit'),
),
),
),
GoRoute(
path: '/products',
builder: (context, state) => const Scaffold(body: Text('Products')),
routes: [
GoRoute(
path: ':id/edit',
builder: (context, state) =>
const Scaffold(body: Text('Edit product')),
),
],
),
],
);
await tester.pumpWidget(
MaterialApp.router(
routerConfig: router,
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
),
);
await tester.pumpAndSettle();
await tester.longPress(find.byType(ProductTile));
await tester.pumpAndSettle();
expect(find.text('Edit product'), findsOneWidget);
router.pop();
await tester.pumpAndSettle();
expect(find.byType(ProductTile), findsOneWidget);
expect(find.text('Edit product'), findsNothing);
});
}