GardenPlanner/test/widgets/header_test.dart

129 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:garden_planner/constance.dart';
import 'package:garden_planner/widgets/header.dart';
void main() {
testWidgets('Header widget displays correctly', (WidgetTester tester) async {
//Arrange
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
appBar: Header(
onSidebarToggle: () {},
onSave: () {},
),
),
),
);
final sidebarToggleButton = find.byIcon(Icons.menu_open);
final saveButton = find.byIcon(Icons.save);
//Act
expect(find.text(Constance.apptitle), findsOneWidget,
reason: 'Title is missing');
expect(sidebarToggleButton, findsOneWidget,
reason: 'SidbarToggel is missing');
expect(saveButton, findsOneWidget, reason: 'Savebutton is missing');
});
testWidgets('Header widget save abort should work',
(WidgetTester tester) async {
bool savePressed = false;
//Arrange
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
appBar: Header(
onSidebarToggle: () {},
onSave: () {
savePressed = true;
},
),
),
),
);
final saveButton = find.byIcon(Icons.save);
//Act
await tester.tap(saveButton);
await tester.pumpAndSettle();
final saveDialog = find.byType(AlertDialog);
expect(saveDialog, findsOneWidget);
// Test false
final cancelButton = find.text('Abbrechen');
await tester.tap(cancelButton);
await tester.pumpAndSettle();
//Assert
expect(savePressed, false, reason: 'save was not confirmed but saved');
});
testWidgets('Header widget save ok should work', (WidgetTester tester) async {
bool savePressed = false;
//Arrange
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
appBar: Header(
onSidebarToggle: () {},
onSave: () {
savePressed = true;
},
),
),
),
);
final saveButton = find.byIcon(Icons.save);
//Act
await tester.tap(saveButton);
await tester.pumpAndSettle();
final saveDialog = find.byType(AlertDialog);
expect(saveDialog, findsOneWidget);
final saveOkButton = find.text('Ja');
await tester.tap(saveOkButton);
await tester.pumpAndSettle();
//Assert
expect(savePressed, true, reason: 'Save confirmed but not saved');
});
testWidgets('Header widget sidbar toggle should work',
(WidgetTester tester) async {
bool sidebarToggle = false;
//Arrange
await tester.pumpWidget(
MaterialApp(
home: Scaffold(
appBar: Header(
onSidebarToggle: () {
sidebarToggle = true;
},
onSave: () {},
),
),
),
);
final sidebarToggleButton = find.byIcon(Icons.menu_open);
//Act
await tester.tap(sidebarToggleButton);
await tester.pumpAndSettle();
//Assert
expect(sidebarToggle, true);
});
}