Skip to content

Commit

Permalink
Add integration test example
Browse files Browse the repository at this point in the history
  • Loading branch information
Joaquin Torres committed Oct 18, 2023
1 parent f0680bc commit f3b1107
Show file tree
Hide file tree
Showing 6 changed files with 223 additions and 13 deletions.
39 changes: 39 additions & 0 deletions example/integration_test/questionnaire_item_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import 'package:faiadashu_example/main.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

testWidgets('check every questionnaire type is available', (tester) async {
await tester.pumpWidget(const MyApp());

expect(find.text('SDC Demo Scroller'), findsOneWidget);

final item = find.byKey(const Key('SDC Demo Scroller'));
await tester.tap(item);
await tester.pumpAndSettle();

expect(find.text('SDC Demo Survey'), findsOneWidget);

final questions = find.byKey(const Key('questionnaire-response-item'));
expect(questions.evaluate().length, 5); // 28

final displayFind = find.text('We hope this will only take you a minute!');
expect(displayFind, findsOneWidget);

final textFind = find.text('Enter your First Name');
expect(textFind, findsOneWidget);
final stringFiller = find.byKey(const Key('string-answer-filler'));
expect(
tester.firstWidget(stringFiller).key,
const Key('string-answer-filler'),
);
await tester.enterText(stringFiller.first, 'Test');
final textFormField =
stringFiller.first.evaluate().single.widget as TextFormField;
expect(textFormField.controller!.text, 'Test');
await tester.pumpAndSettle();
});
}
1 change: 1 addition & 0 deletions example/lib/questionnaire_launch_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ class _QuestionnaireLaunchTileState extends State<QuestionnaireLaunchTile> {
@override
Widget build(BuildContext context) {
return ListTile(
key: Key(widget.title),
title: Text(widget.title),
subtitle: FutureBuilder<QuestionnaireResponseModel>(
future: _modelFuture,
Expand Down
190 changes: 177 additions & 13 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,18 @@ packages:
dependency: transitive
description:
name: async
sha256: "271b8899fc99f9df4f4ed419fa14e2fff392c7b2c162fbb87b222e2e963ddc73"
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
characters:
dependency: transitive
description:
Expand Down Expand Up @@ -49,6 +57,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.17.1"
cross_file:
dependency: transitive
description:
name: cross_file
sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c"
url: "https://pub.dev"
source: hosted
version: "0.3.3+6"
crypto:
dependency: transitive
description:
Expand All @@ -71,6 +87,14 @@ packages:
relative: true
source: path
version: "0.8.0"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
Expand Down Expand Up @@ -127,16 +151,98 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.1.4"
file_selector:
dependency: transitive
description:
name: file_selector
sha256: "1d2fde93dddf634a9c3c0faa748169d7ac0d83757135555707e52f02c017ad4f"
url: "https://pub.dev"
source: hosted
version: "0.9.5"
file_selector_android:
dependency: transitive
description:
name: file_selector_android
sha256: d41e165d6f798ca941d536e5dc93494d50e78c571c28ad60cfe0b0fefeb9f1e7
url: "https://pub.dev"
source: hosted
version: "0.5.0+3"
file_selector_ios:
dependency: transitive
description:
name: file_selector_ios
sha256: b3fbdda64aa2e335df6e111f6b0f1bb968402ed81d2dd1fa4274267999aa32c2
url: "https://pub.dev"
source: hosted
version: "0.5.1+6"
file_selector_linux:
dependency: transitive
description:
name: file_selector_linux
sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492"
url: "https://pub.dev"
source: hosted
version: "0.9.2+1"
file_selector_macos:
dependency: transitive
description:
name: file_selector_macos
sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6
url: "https://pub.dev"
source: hosted
version: "0.9.3+3"
file_selector_platform_interface:
dependency: transitive
description:
name: file_selector_platform_interface
sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262"
url: "https://pub.dev"
source: hosted
version: "2.6.1"
file_selector_web:
dependency: transitive
description:
name: file_selector_web
sha256: dc6622c4d66cb1bee623ddcc029036603c6cc45c85e4a775bb06008d61c809c1
url: "https://pub.dev"
source: hosted
version: "0.9.2+1"
file_selector_windows:
dependency: transitive
description:
name: file_selector_windows
sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0
url: "https://pub.dev"
source: hosted
version: "0.9.3+1"
filesize:
dependency: transitive
description:
name: filesize
sha256: f53df1f27ff60e466eefcd9df239e02d4722d5e2debee92a87dfd99ac66de2af
url: "https://pub.dev"
source: hosted
version: "2.0.1"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_driver:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
flutter_localizations:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_auth:
dependency: transitive
description:
Expand All @@ -158,6 +264,11 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.3"
fuchsia_remote_debug_protocol:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
google_fonts:
dependency: "direct main"
description:
Expand Down Expand Up @@ -230,6 +341,11 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.1"
integration_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
intl:
dependency: "direct main"
description:
Expand Down Expand Up @@ -282,10 +398,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: "2e2c34e631f93410daa3ee3410250eadc77ac6befc02a040eda8a123f34e6f5a"
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
url: "https://pub.dev"
source: hosted
version: "0.12.11"
version: "0.12.15"
material_color_utilities:
dependency: transitive
description:
Expand All @@ -302,6 +418,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
mime:
dependency: transitive
description:
name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
url: "https://pub.dev"
source: hosted
version: "1.0.4"
oauth2:
dependency: transitive
description:
Expand Down Expand Up @@ -439,34 +563,58 @@ packages:
dependency: transitive
description:
name: source_span
sha256: e3320978e3715725e62f04358fd249c1efe5999297b2c6acd626a817593281b0
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: f8d9f247e2f9f90e32d1495ff32dac7e4ae34ffa7194c5ff8fcc0fd0e52df774
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "862015c5db1f3f3c4ea3b94dc2490363a84262994b88902315ed74be1155612f"
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.2.0"
sync_http:
dependency: transitive
description:
name: sync_http
sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
url: "https://pub.dev"
source: hosted
version: "0.3.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a88162591b02c1f3a3db3af8ce1ea2b374bd75a7bb8d5e353bcfbdc79d719830
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
url: "https://pub.dev"
source: hosted
version: "0.5.1"
typed_data:
dependency: transitive
description:
Expand Down Expand Up @@ -555,6 +703,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe
url: "https://pub.dev"
source: hosted
version: "11.3.0"
webdriver:
dependency: transitive
description:
name: webdriver
sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
webview_flutter:
dependency: transitive
description:
Expand Down Expand Up @@ -629,4 +793,4 @@ packages:
version: "3.1.1"
sdks:
dart: ">=3.0.0-0 <4.0.0"
flutter: ">=3.0.0"
flutter: ">=3.7.0"
4 changes: 4 additions & 0 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ dependencies:
simple_html_css: ^3.0.1+1

dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutter
lint: ^1.8.2


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ class _StringAnswerInputControl extends AnswerInputControl<StringAnswerModel> {
}[answerModel.keyboard]!;

return TextFormField(
key: const Key('string-answer-filler'),
focusNode: focusNode,
enabled: answerModel.isControlEnabled,
keyboardType: keyboardType,
Expand Down
1 change: 1 addition & 0 deletions lib/questionnaires/view/src/questionnaire_theme.dart
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ class QuestionnaireThemeData {
Widget? questionSkipperWidget,
}) {
return Column(
key: const Key('questionnaire-response-item'),
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expand Down

0 comments on commit f3b1107

Please sign in to comment.