add two views
This commit is contained in:
+107
-20
@@ -1,30 +1,117 @@
|
||||
// This is a basic Flutter widget test.
|
||||
//
|
||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||
// utility in the flutter_test package. For example, you can send tap and scroll
|
||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||
// tree, read text, and verify that the values of widget properties are correct.
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'package:ertl_filament_verwaltung/main.dart';
|
||||
import 'package:ertl_filament_verwaltung/controller/home_controller.dart';
|
||||
import 'package:ertl_filament_verwaltung/models/kauf_filament_model.dart';
|
||||
import 'package:ertl_filament_verwaltung/pages/home_view.dart';
|
||||
import 'package:ertl_filament_verwaltung/services/get_storage_services.dart';
|
||||
import 'package:ertl_filament_verwaltung/theme/app_theme.dart';
|
||||
import 'package:ertl_filament_verwaltung/widgets/filament_card.dart';
|
||||
import 'package:ertl_filament_verwaltung/widgets/filament_form.dart';
|
||||
|
||||
import 'helpers/memory_storage_service.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||
// Build our app and trigger a frame.
|
||||
await tester.pumpWidget(const MyApp());
|
||||
late HomeController controller;
|
||||
|
||||
// Verify that our counter starts at 0.
|
||||
expect(find.text('0'), findsOneWidget);
|
||||
expect(find.text('1'), findsNothing);
|
||||
setUp(() {
|
||||
Get.testMode = true;
|
||||
Get.put<GetStorageService>(MemoryStorageService());
|
||||
controller = Get.put(HomeController());
|
||||
});
|
||||
|
||||
// Tap the '+' icon and trigger a frame.
|
||||
await tester.tap(find.byIcon(Icons.add));
|
||||
await tester.pump();
|
||||
tearDown(() => Get.reset());
|
||||
|
||||
// Verify that our counter has incremented.
|
||||
expect(find.text('0'), findsNothing);
|
||||
expect(find.text('1'), findsOneWidget);
|
||||
Future<void> showHome(WidgetTester tester, Size size) async {
|
||||
tester.view.physicalSize = size;
|
||||
tester.view.devicePixelRatio = 1;
|
||||
addTearDown(tester.view.resetPhysicalSize);
|
||||
addTearDown(tester.view.resetDevicePixelRatio);
|
||||
await tester.pumpWidget(
|
||||
GetMaterialApp(theme: AppTheme.light, home: const HomeView()),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
}
|
||||
|
||||
KaufFilamentModel sample() => KaufFilamentModel(
|
||||
filamentId: 'sample',
|
||||
kaufdatum: DateTime(2026, 10, 27),
|
||||
haendler: 'Filament Shop',
|
||||
marke: 'Testmarke',
|
||||
material: 'PLA+',
|
||||
preis: 24.90,
|
||||
farbe: 'Ozeanblau',
|
||||
gewicht: '1000',
|
||||
);
|
||||
|
||||
testWidgets('Desktop shows both panes and edits PLA+', (tester) async {
|
||||
controller.filamente.add(sample());
|
||||
await showHome(tester, const Size(1280, 900));
|
||||
|
||||
expect(
|
||||
tester.getTopLeft(find.byType(FilamentCard)).dx,
|
||||
greaterThan(tester.getTopRight(find.byType(FilamentForm)).dx),
|
||||
);
|
||||
expect(find.text('1000 g'), findsOneWidget);
|
||||
expect(find.text('Testmarke'), findsOneWidget);
|
||||
|
||||
await tester.tap(find.byTooltip('Filament verwalten'));
|
||||
await tester.pumpAndSettle();
|
||||
await tester.tap(find.text('Bearbeiten'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(find.text('Filament bearbeiten'), findsOneWidget);
|
||||
expect(controller.markeController.text, 'Testmarke');
|
||||
expect(controller.material.value, 'PLA+');
|
||||
expect(tester.takeException(), isNull);
|
||||
});
|
||||
|
||||
testWidgets('Small phone scrolls to save and shows the purchase', (
|
||||
tester,
|
||||
) async {
|
||||
await showHome(tester, const Size(320, 640));
|
||||
controller.haendlerController.text = 'Filament Shop';
|
||||
controller.markeController.text = 'Testmarke';
|
||||
controller.farbeController.text = 'Ozeanblau';
|
||||
controller.preisController.text = '24,90';
|
||||
controller.gewichtController.text = '1000';
|
||||
|
||||
await tester.scrollUntilVisible(
|
||||
find.text('Filament speichern'),
|
||||
200,
|
||||
scrollable: find.byType(Scrollable).first,
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
await tester.tap(find.text('Filament speichern'));
|
||||
await tester.pumpAndSettle();
|
||||
expect(controller.filamente, hasLength(1));
|
||||
|
||||
await tester.scrollUntilVisible(
|
||||
find.byType(FilamentCard),
|
||||
200,
|
||||
scrollable: find.byType(Scrollable).first,
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.text('Testmarke'), findsOneWidget);
|
||||
expect(find.text('1000 g'), findsOneWidget);
|
||||
expect(tester.takeException(), isNull);
|
||||
});
|
||||
|
||||
testWidgets('Empty inventory is accessible on a narrow screen', (
|
||||
tester,
|
||||
) async {
|
||||
await showHome(tester, const Size(320, 640));
|
||||
await tester.scrollUntilVisible(
|
||||
find.text('Hier beginnt dein Bestand'),
|
||||
200,
|
||||
scrollable: find.byType(Scrollable).first,
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
expect(
|
||||
find.text('Hier beginnt dein Bestand').hitTestable(),
|
||||
findsOneWidget,
|
||||
);
|
||||
expect(tester.takeException(), isNull);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user