Fixed Tests

main
Kai Mannweiler 2023-03-06 18:36:10 +01:00
parent b7d5f1d51f
commit 999aa8fc42
6 changed files with 74 additions and 123 deletions

View File

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/providers/input_provider.dart'; import 'package:smoke_cess_app/providers/input_provider.dart';
void main() { void main() {
group('InputProvider', () { group('InputProvider', () {
test('Initial values are correct', () { test('Initial values are correct', () {
@ -11,8 +10,10 @@ void main() {
expect(inputProvider.sliderValue, equals(50)); expect(inputProvider.sliderValue, equals(50));
expect(inputProvider.textController.text, equals('')); expect(inputProvider.textController.text, equals(''));
expect(inputProvider.relapseCategory, equals('')); expect(inputProvider.relapseCategory, equals(''));
expect(inputProvider.getTimeEntry('wokeUpAt'),equals(const TimeOfDay(hour: 8, minute: 0))); expect(inputProvider.getTimeEntry(SleepTimes.wokeUpAt),
expect(inputProvider.getTimeEntry('sleptAt'),equals(const TimeOfDay(hour: 22, minute: 0))); equals(const TimeOfDay(hour: 8, minute: 0)));
expect(inputProvider.getTimeEntry(SleepTimes.sleptAt),
equals(const TimeOfDay(hour: 22, minute: 0)));
}); });
test('Setters work right way', () { test('Setters work right way', () {
@ -27,30 +28,36 @@ void main() {
inputProvider.relapseCategory = 'Test'; inputProvider.relapseCategory = 'Test';
expect(inputProvider.relapseCategory, equals('Test')); expect(inputProvider.relapseCategory, equals('Test'));
inputProvider.setTime('wokeUpAt', const TimeOfDay(hour: 7, minute: 0)); inputProvider.setTime(
expect(inputProvider.getTimeEntry('wokeUpAt'),equals(const TimeOfDay(hour: 7, minute: 0))); SleepTimes.wokeUpAt, const TimeOfDay(hour: 7, minute: 0));
expect(inputProvider.getTimeEntry(SleepTimes.wokeUpAt),
equals(const TimeOfDay(hour: 7, minute: 0)));
inputProvider.setTime('sleptAt', const TimeOfDay(hour: 23, minute: 0)); inputProvider.setTime(
expect(inputProvider.getTimeEntry('sleptAt'), equals(const TimeOfDay(hour: 23, minute: 0))); SleepTimes.sleptAt, const TimeOfDay(hour: 23, minute: 0));
expect(inputProvider.getTimeEntry(SleepTimes.sleptAt),
equals(const TimeOfDay(hour: 23, minute: 0)));
}); });
test('Reset Fields should reset all fields correctly', () async { test('Reset Fields should reset all fields correctly', () async {
final inputProvider = InputProvider(); final inputProvider = InputProvider();
inputProvider.sliderValue = 44; inputProvider.sliderValue = 44;
inputProvider.textController.text = 'Test'; inputProvider.textController.text = 'Test';
inputProvider.setTime('wokeUpAt', const TimeOfDay(hour: 7, minute: 0)); inputProvider.setTime(
inputProvider.setTime('sleptAt', const TimeOfDay(hour: 23, minute: 0)); SleepTimes.wokeUpAt, const TimeOfDay(hour: 7, minute: 0));
inputProvider.setTime(
SleepTimes.sleptAt, const TimeOfDay(hour: 23, minute: 0));
final result = await inputProvider.saveMood(); // calls private function ResetFields final result =
await inputProvider.saveMood(); // calls private function ResetFields
expect(result, equals(1)); expect(result, equals(1));
expect(inputProvider.sliderValue, equals(50)); expect(inputProvider.sliderValue, equals(50));
expect(inputProvider.textController.text, equals('')); expect(inputProvider.textController.text, equals(''));
expect(inputProvider.getTimeEntry('wokeUpAt'),equals(const TimeOfDay(hour: 8, minute: 0))); expect(inputProvider.getTimeEntry(SleepTimes.wokeUpAt),
expect(inputProvider.getTimeEntry('sleptAt'), equals(const TimeOfDay(hour: 22, minute: 0))); equals(const TimeOfDay(hour: 8, minute: 0)));
expect(inputProvider.getTimeEntry(SleepTimes.sleptAt),
equals(const TimeOfDay(hour: 22, minute: 0)));
}); });
test('Save Mood ', () async { test('Save Mood ', () async {
late final inputProvider = InputProvider(); late final inputProvider = InputProvider();
@ -75,13 +82,16 @@ void main() {
test('Save Sleep', () async { test('Save Sleep', () async {
late final inputProvider = InputProvider(); late final inputProvider = InputProvider();
final result = await inputProvider.saveSleep('wokeUpAt', 'sleptAt'); final result = await inputProvider.saveSleep(
SleepTimes.wokeUpAt, SleepTimes.sleptAt);
expect(result, equals(1)); expect(result, equals(1));
expect(inputProvider.sliderValue, equals(50)); expect(inputProvider.sliderValue, equals(50));
expect(inputProvider.textController.text, equals('')); expect(inputProvider.textController.text, equals(''));
expect(inputProvider.getTimeEntry('wokeUpAt'),equals(const TimeOfDay(hour: 8, minute: 0))); expect(inputProvider.getTimeEntry(SleepTimes.wokeUpAt),
expect(inputProvider.getTimeEntry('sleptAt'),equals(const TimeOfDay(hour: 22, minute: 0))); equals(const TimeOfDay(hour: 8, minute: 0)));
expect(inputProvider.getTimeEntry(SleepTimes.sleptAt),
equals(const TimeOfDay(hour: 22, minute: 0)));
}); });
}); });
} }

View File

@ -1,20 +1,20 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/providers/timer_provider.dart'; import 'package:smoke_cess_app/providers/timer_provider.dart';
void main() { void main() {
test('Timer should start and set started to true', () { test('Timer should start and set started to true', () {
final timerProvider = TimerProvider(); final timerProvider = TimerProvider();
timerProvider.startTimer(Duration(seconds: 10)); timerProvider.startTimer(const Duration(seconds: 10));
expect(timerProvider.started, true); expect(timerProvider.started, true);
}); });
test('Elapsed time should increase and be less than or equal to the duration', () { test('Elapsed time should increase and be less than or equal to the duration',
() {
final timerProvider = TimerProvider(); final timerProvider = TimerProvider();
timerProvider.startTimer(Duration(seconds: 10)); timerProvider.startTimer(const Duration(seconds: 10));
final initialElapsedSeconds = timerProvider.elapsedSeconds; final initialElapsedSeconds = timerProvider.elapsedSeconds;
// Wait for the timer to tick at least once. // Wait for the timer to tick at least once.
Future.delayed(Duration(seconds: 2), () { Future.delayed(const Duration(seconds: 2), () {
expect(timerProvider.elapsedSeconds, greaterThan(initialElapsedSeconds)); expect(timerProvider.elapsedSeconds, greaterThan(initialElapsedSeconds));
expect(timerProvider.elapsedSeconds, lessThanOrEqualTo(10)); expect(timerProvider.elapsedSeconds, lessThanOrEqualTo(10));
}); });
@ -22,7 +22,7 @@ void main() {
test('Timer should stop and set started to false', () { test('Timer should stop and set started to false', () {
final timerProvider = TimerProvider(); final timerProvider = TimerProvider();
timerProvider.startTimer(Duration(seconds: 10)); timerProvider.startTimer(const Duration(seconds: 10));
timerProvider.stopTimer(); timerProvider.stopTimer();
expect(timerProvider.started, false); expect(timerProvider.started, false);
}); });
@ -34,10 +34,7 @@ test('Elapsed seconds should be 0 when timer is not running', () {
test('Timer should stop and set started to false when duration is 0', () { test('Timer should stop and set started to false when duration is 0', () {
final timerProvider = TimerProvider(); final timerProvider = TimerProvider();
timerProvider.startTimer(Duration(seconds: 0)); timerProvider.startTimer(const Duration(seconds: 0));
expect(timerProvider.started, false); expect(timerProvider.started, false);
}); });
} }

View File

@ -2,18 +2,17 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/widgets/elevated_card.dart'; import 'package:smoke_cess_app/widgets/elevated_card.dart';
void main() { void main() {
group('ElevatedCard', () { group('ElevatedCard', () {
testWidgets('Renders the title and child', (WidgetTester tester) async { testWidgets('Renders the title and child', (WidgetTester tester) async {
// Arrange // Arrange
const title = 'My Card Title'; const title = 'My Card Title';
const childText = 'My Card Content'; const childText = 'My Card Content';
final child = Text(childText); const child = Text(childText);
final card = ElevatedCard (title: title, child: child); const card = ElevatedCard(title: title, child: child);
// Act // Act
await tester.pumpWidget(MaterialApp(home: Scaffold(body: card))); await tester.pumpWidget(const MaterialApp(home: Scaffold(body: card)));
final titleFinder = find.text(title); final titleFinder = find.text(title);
final childFinder = find.text(childText); final childFinder = find.text(childText);
@ -63,8 +62,10 @@ void main() {
final cardWidget = tester.widget<Card>(cardFinder); final cardWidget = tester.widget<Card>(cardFinder);
// Assert // Assert
expect(cardWidget.shape, expect(
const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(16.0)))); cardWidget.shape,
const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(16.0))));
}); });
}); });
} }

View File

@ -1,17 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/widgets/missing_config_popup.dart';
void main() {
testWidgets('MissingConfigPopup displays title and text', (WidgetTester tester) async {
final String title = 'Missing Configuration';
final String text = 'Please configure the app before using it.';
await tester.pumpWidget(MaterialApp(
home: MissingConfigPopup(title: title, text: text),
));
expect(find.text(title), findsOneWidget);
expect(find.text(text), findsOneWidget);
});
}

View File

@ -1,35 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/widgets/timer_button.dart';
void main() {
testWidgets('TimerButton should display icon & color and react to click', (WidgetTester tester) async {
// Define the icon and color
final Icon icon = Icon(Icons.play_arrow);
final Color color = Colors.green;
// Build the TimerButton
var clicked = false;
await tester.pumpWidget(
MaterialApp(
home: TimerButton(
onClicked: () => clicked = true,
icon: icon,
color: color,
),
),
);
// Verify that the icon and color are displayed
expect(find.byWidgetPredicate((widget) => widget is CircleAvatar && widget.child == icon ), findsOneWidget);
expect(find.byWidgetPredicate((widget) => widget is CircleAvatar && widget.backgroundColor == color ), findsOneWidget);
// Tap the button
await tester.tap(find.byType(InkWell));
await tester.pump();
// Verify that the onClicked callback was called
expect(clicked, true);
});
}

View File

@ -2,15 +2,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:smoke_cess_app/widgets/todo_icon.dart'; import 'package:smoke_cess_app/widgets/todo_icon.dart';
void main() { void main() {
testWidgets('MyToDoIcon has a red dot', (WidgetTester tester) async { testWidgets('MyToDoIcon has a red dot', (WidgetTester tester) async {
// Build the widget tree // Build the widget tree
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( const MaterialApp(
home: Scaffold( home: Scaffold(
body: MyToDoIcon( body: MyToDoIcon(
Icon(Icons.check), Icon(Icons.check),
), ),
@ -20,7 +17,5 @@ void main() {
// Verify that the red dot is present // Verify that the red dot is present
expect(find.byIcon(Icons.brightness_1), findsOneWidget); expect(find.byIcon(Icons.brightness_1), findsOneWidget);
// paints => verifys that a widget paints a certain shape or color v^1.15.30
expect(find.byIcon(Icons.brightness_1).first, paints..circle(color: Colors.redAccent));
}); });
} }