From 8e136251925c97eff85c47154f0de1cbdefd760a Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Tue, 18 Aug 2020 22:29:05 +0900 Subject: [PATCH] tests: search album --- lib/model/filters/filters.dart | 3 +++ lib/widgets/album/app_bar.dart | 1 + .../album/search/expandable_filter_row.dart | 1 + test_driver/app.dart | 4 ++-- test_driver/app_test.dart | 20 +++++++++++++++++++ test_driver/utils.dart | 4 ++-- 6 files changed, 29 insertions(+), 4 deletions(-) diff --git a/lib/model/filters/filters.dart b/lib/model/filters/filters.dart index 7e87b8a8a..2375c25e8 100644 --- a/lib/model/filters/filters.dart +++ b/lib/model/filters/filters.dart @@ -38,6 +38,9 @@ abstract class CollectionFilter implements Comparable { int get displayPriority => collectionFilterOrder.indexOf(typeKey); + // to be used as widget key + String get key => '$typeKey-$label'; + @override int compareTo(CollectionFilter other) { final c = displayPriority.compareTo(other.displayPriority); diff --git a/lib/widgets/album/app_bar.dart b/lib/widgets/album/app_bar.dart index 4def35827..af6226ebf 100644 --- a/lib/widgets/album/app_bar.dart +++ b/lib/widgets/album/app_bar.dart @@ -169,6 +169,7 @@ class _CollectionAppBarState extends State with SingleTickerPr return [ if (collection.isBrowsing) IconButton( + key: Key('search-button'), icon: Icon(AIcons.search), onPressed: _goToSearch, ), diff --git a/lib/widgets/album/search/expandable_filter_row.dart b/lib/widgets/album/search/expandable_filter_row.dart index fe57ffc53..f3239c1f1 100644 --- a/lib/widgets/album/search/expandable_filter_row.dart +++ b/lib/widgets/album/search/expandable_filter_row.dart @@ -104,6 +104,7 @@ class ExpandableFilterRow extends StatelessWidget { Widget _buildFilterChip(CollectionFilter filter) { return AvesFilterChip( + key: Key(filter.key), filter: filter, heroType: heroTypeBuilder?.call(filter) ?? HeroType.onTap, onPressed: onPressed, diff --git a/test_driver/app.dart b/test_driver/app.dart index f505976fc..bdcefcfd7 100644 --- a/test_driver/app.dart +++ b/test_driver/app.dart @@ -1,7 +1,7 @@ import 'package:aves/main.dart' as app; import 'package:aves/services/android_file_service.dart'; import 'package:flutter_driver/driver_extension.dart'; -import 'package:path/path.dart'; +import 'package:path/path.dart' as path; import 'package:pedantic/pedantic.dart'; import 'constants.dart'; @@ -12,7 +12,7 @@ void main() { // scan files copied from test assets // we do it via the app instead of broadcasting via ADB // because `MEDIA_SCANNER_SCAN_FILE` intent got deprecated in API 29 - unawaited(AndroidFileService.scanFile(join(targetPicturesDir, 'ipse.jpg'), 'image/jpeg')); + unawaited(AndroidFileService.scanFile(path.join(targetPicturesDir, 'ipse.jpg'), 'image/jpeg')); app.main(); } diff --git a/test_driver/app_test.dart b/test_driver/app_test.dart index 383850714..32945ebea 100644 --- a/test_driver/app_test.dart +++ b/test_driver/app_test.dart @@ -1,5 +1,8 @@ +import 'dart:io'; + import 'package:aves/model/source/enums.dart'; import 'package:flutter_driver/flutter_driver.dart'; +import 'package:path/path.dart' as path; import 'package:pedantic/pedantic.dart'; import 'package:test/test.dart'; @@ -63,5 +66,22 @@ void main() { await driver.tap(find.byValueKey(GroupFactor.album.toString())); await driver.tap(find.byValueKey('apply-button')); }); + + test('search album', () async { + await driver.tap(find.byValueKey('search-button')); + await driver.waitUntilNoTransientCallbacks(); + + final album = path.split(targetPicturesDir).last; + await driver.tap(find.byType('TextField')); + await driver.enterText(album); + + final albumChipFinder = find.byValueKey('album-$album'); + await driver.waitFor(albumChipFinder); + await driver.tap(albumChipFinder); + }); + + test('show fullscreen', () async { + sleep(Duration(seconds: 5)); + }); }, timeout: Timeout(Duration(seconds: 10))); } diff --git a/test_driver/utils.dart b/test_driver/utils.dart index c4792884c..38a33010b 100644 --- a/test_driver/utils.dart +++ b/test_driver/utils.dart @@ -1,12 +1,12 @@ import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart'; -import 'package:path/path.dart'; +import 'package:path/path.dart' as path; String get adb { final env = Platform.environment; final sdkDir = env['ANDROID_SDK_ROOT'] ?? env['ANDROID_SDK']; - return join(sdkDir, 'platform-tools', Platform.isWindows ? 'adb.exe' : 'adb'); + return path.join(sdkDir, 'platform-tools', Platform.isWindows ? 'adb.exe' : 'adb'); } Future createDirectory(String dir) async {