mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-11-22 07:20:39 +00:00
added film selection to e2e test
This commit is contained in:
parent
a7f85caff6
commit
4bf41167be
1 changed files with 34 additions and 26 deletions
|
@ -41,14 +41,11 @@ void main() {
|
||||||
testWidgets(
|
testWidgets(
|
||||||
'e2e',
|
'e2e',
|
||||||
(tester) async {
|
(tester) async {
|
||||||
await tester.pumpApplication(equipmentProfiles: [] /**, films: [] */);
|
await tester.pumpApplication(equipmentProfiles: [], films: []);
|
||||||
|
|
||||||
/** Create some equipment profiles */
|
|
||||||
|
|
||||||
await tester.openSettings();
|
|
||||||
await tester.tapDescendantTextOf<SettingsScreen>(S.current.equipmentProfiles);
|
|
||||||
|
|
||||||
/// Create Praktica + Zenitar profile from scratch
|
/// Create Praktica + Zenitar profile from scratch
|
||||||
|
await tester.openSettings();
|
||||||
|
await tester.tapDescendantTextOf<SettingsScreen>(S.current.equipmentProfiles);
|
||||||
await tester.tap(find.byIcon(Icons.add).first);
|
await tester.tap(find.byIcon(Icons.add).first);
|
||||||
await tester.pumpAndSettle();
|
await tester.pumpAndSettle();
|
||||||
await tester.setProfileName(mockEquipmentProfiles[0].name);
|
await tester.setProfileName(mockEquipmentProfiles[0].name);
|
||||||
|
@ -68,12 +65,16 @@ void main() {
|
||||||
await tester.setApertureValues(1, mockEquipmentProfiles[1].apertureValues);
|
await tester.setApertureValues(1, mockEquipmentProfiles[1].apertureValues);
|
||||||
expect(find.text('f/3.5 - f/22'), findsOneWidget);
|
expect(find.text('f/3.5 - f/22'), findsOneWidget);
|
||||||
expect(find.text('1/1000 - 16"'), findsNWidgets(2));
|
expect(find.text('1/1000 - 16"'), findsNWidgets(2));
|
||||||
|
|
||||||
await tester.navigatorPop();
|
await tester.navigatorPop();
|
||||||
|
|
||||||
|
/// Select some films
|
||||||
|
await tester.tap(find.text(S.current.filmsInUse));
|
||||||
|
await tester.pumpAndSettle();
|
||||||
|
await tester.setDialogFilterValues<Film>([mockFilms[0], mockFilms[1]], deselectAll: false);
|
||||||
await tester.navigatorPop();
|
await tester.navigatorPop();
|
||||||
|
|
||||||
/// Select some initial settings according to the selected gear and film
|
/// Select some initial settings according to the selected gear and film
|
||||||
/// Then tale a photo and verify, that exposure pairs range and EV matches the selected settings
|
/// Then take a photo and verify, that exposure pairs range and EV matches the selected settings
|
||||||
await tester.openPickerAndSelect<EquipmentProfilePicker, EquipmentProfile>(mockEquipmentProfiles[0].name);
|
await tester.openPickerAndSelect<EquipmentProfilePicker, EquipmentProfile>(mockEquipmentProfiles[0].name);
|
||||||
await tester.openPickerAndSelect<FilmPicker, Film>(mockFilms[0].name);
|
await tester.openPickerAndSelect<FilmPicker, Film>(mockFilms[0].name);
|
||||||
await tester.openPickerAndSelect<IsoValuePicker, IsoValue>('400');
|
await tester.openPickerAndSelect<IsoValuePicker, IsoValue>('400');
|
||||||
|
@ -92,8 +93,6 @@ void main() {
|
||||||
ev: mockPhotoEv100 + 2,
|
ev: mockPhotoEv100 + 2,
|
||||||
);
|
);
|
||||||
|
|
||||||
/** Changing some settings in the field */
|
|
||||||
|
|
||||||
/// Add ND to shoot another scene
|
/// Add ND to shoot another scene
|
||||||
await tester.openPickerAndSelect<NdValuePicker, NdValue>('2');
|
await tester.openPickerAndSelect<NdValuePicker, NdValue>('2');
|
||||||
await _expectMeteringStateAndMeasure(
|
await _expectMeteringStateAndMeasure(
|
||||||
|
@ -121,7 +120,7 @@ void main() {
|
||||||
ev: mockPhotoEv100 + 2,
|
ev: mockPhotoEv100 + 2,
|
||||||
);
|
);
|
||||||
|
|
||||||
/// Set another wilm and set the same ISO
|
/// Set another film and another ISO
|
||||||
await tester.openPickerAndSelect<IsoValuePicker, IsoValue>('200');
|
await tester.openPickerAndSelect<IsoValuePicker, IsoValue>('200');
|
||||||
await tester.openPickerAndSelect<FilmPicker, Film>(mockFilms[1].name);
|
await tester.openPickerAndSelect<FilmPicker, Film>(mockFilms[1].name);
|
||||||
await _expectMeteringStateAndMeasure(
|
await _expectMeteringStateAndMeasure(
|
||||||
|
@ -151,10 +150,10 @@ extension EquipmentProfileActions on WidgetTester {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> setIsoValues(int profileIndex, List<IsoValue> values) =>
|
Future<void> setIsoValues(int profileIndex, List<IsoValue> values) =>
|
||||||
_setDialogFilterValues<IsoValue>(profileIndex, S.current.isoValues, values);
|
_openAndSetDialogFilterValues<IsoValue>(profileIndex, S.current.isoValues, values);
|
||||||
Future<void> setNdValues(int profileIndex, List<NdValue> values) =>
|
Future<void> setNdValues(int profileIndex, List<NdValue> values) =>
|
||||||
_setDialogFilterValues<NdValue>(profileIndex, S.current.ndFilters, values);
|
_openAndSetDialogFilterValues<NdValue>(profileIndex, S.current.ndFilters, values);
|
||||||
Future<void> _setDialogFilterValues<T extends PhotographyValue>(
|
Future<void> _openAndSetDialogFilterValues<T extends PhotographyValue>(
|
||||||
int profileIndex,
|
int profileIndex,
|
||||||
String listTileTitle,
|
String listTileTitle,
|
||||||
List<T> valuesToSelect, {
|
List<T> valuesToSelect, {
|
||||||
|
@ -162,6 +161,27 @@ extension EquipmentProfileActions on WidgetTester {
|
||||||
}) async {
|
}) async {
|
||||||
await tap(find.text(listTileTitle).at(profileIndex));
|
await tap(find.text(listTileTitle).at(profileIndex));
|
||||||
await pumpAndSettle();
|
await pumpAndSettle();
|
||||||
|
await setDialogFilterValues(valuesToSelect, deselectAll: deselectAll);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> setApertureValues(int profileIndex, List<ApertureValue> values) =>
|
||||||
|
_setDialogRangePickerValues<ApertureValue>(profileIndex, S.current.apertureValues, values);
|
||||||
|
|
||||||
|
Future<void> setShutterSpeedValues(int profileIndex, List<ShutterSpeedValue> values) =>
|
||||||
|
_setDialogRangePickerValues<ShutterSpeedValue>(profileIndex, S.current.shutterSpeedValues, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
extension on WidgetTester {
|
||||||
|
Future<void> openPickerAndSelect<P extends Widget, V>(String valueToSelect) async {
|
||||||
|
await openAnimatedPicker<P>();
|
||||||
|
await tapDescendantTextOf<DialogPicker<V>>(valueToSelect);
|
||||||
|
await tapSelectButton();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> setDialogFilterValues<T>(
|
||||||
|
List<T> valuesToSelect, {
|
||||||
|
bool deselectAll = true,
|
||||||
|
}) async {
|
||||||
if (deselectAll) {
|
if (deselectAll) {
|
||||||
await tap(find.byIcon(Icons.deselect));
|
await tap(find.byIcon(Icons.deselect));
|
||||||
await pump();
|
await pump();
|
||||||
|
@ -179,10 +199,6 @@ extension EquipmentProfileActions on WidgetTester {
|
||||||
await tapSaveButton();
|
await tapSaveButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> setApertureValues(int profileIndex, List<ApertureValue> values) =>
|
|
||||||
_setDialogRangePickerValues<ApertureValue>(profileIndex, S.current.apertureValues, values);
|
|
||||||
Future<void> setShutterSpeedValues(int profileIndex, List<ShutterSpeedValue> values) =>
|
|
||||||
_setDialogRangePickerValues<ShutterSpeedValue>(profileIndex, S.current.shutterSpeedValues, values);
|
|
||||||
Future<void> _setDialogRangePickerValues<T extends PhotographyValue>(
|
Future<void> _setDialogRangePickerValues<T extends PhotographyValue>(
|
||||||
int profileIndex,
|
int profileIndex,
|
||||||
String listTileTitle,
|
String listTileTitle,
|
||||||
|
@ -219,14 +235,6 @@ extension EquipmentProfileActions on WidgetTester {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension on WidgetTester {
|
|
||||||
Future<void> openPickerAndSelect<P extends Widget, V>(String valueToSelect) async {
|
|
||||||
await openAnimatedPicker<P>();
|
|
||||||
await tapDescendantTextOf<DialogPicker<V>>(valueToSelect);
|
|
||||||
await tapSelectButton();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> _expectMeteringState(
|
Future<void> _expectMeteringState(
|
||||||
WidgetTester tester, {
|
WidgetTester tester, {
|
||||||
required EquipmentProfile equipmentProfile,
|
required EquipmentProfile equipmentProfile,
|
||||||
|
|
Loading…
Reference in a new issue