diff --git a/das_client/app/integration_test/test/journey_search_overlay_test.dart b/das_client/app/integration_test/test/journey_search_overlay_test.dart index f0cb04c24..6a58ed088 100644 --- a/das_client/app/integration_test/test/journey_search_overlay_test.dart +++ b/das_client/app/integration_test/test/journey_search_overlay_test.dart @@ -92,7 +92,10 @@ void main() { await tapElement(tester, primaryButton); // wait until T2 opened - await waitUntilExists(tester, find.descendant(of: find.byType(Header), matching: find.text('T2 SBB'))); + await waitUntilExists( + tester, + find.descendant(of: find.byType(Header), matching: find.text('T2 ${l10n.c_ru_sbb_p}')), + ); await tester.pumpAndSettle(); // should not display navigation buttons (autoAdvancement is active) @@ -115,7 +118,10 @@ void main() { await tapElement(tester, previousButton); // wait until T1 opened - await waitUntilExists(tester, find.descendant(of: find.byType(Header), matching: find.text('T1 SBB'))); + await waitUntilExists( + tester, + find.descendant(of: find.byType(Header), matching: find.text('T1 ${l10n.c_ru_sbb_p}')), + ); await disconnect(tester); }); diff --git a/das_client/app/integration_test/test/train_search_test.dart b/das_client/app/integration_test/test/train_search_test.dart index 047e0579d..38d081ca0 100644 --- a/das_client/app/integration_test/test/train_search_test.dart +++ b/das_client/app/integration_test/test/train_search_test.dart @@ -38,12 +38,11 @@ void main() { expect(find.text(l10n.c_ru_sbb_c), findsOneWidget); expect(find.descendant(of: modal, matching: find.text(l10n.c_ru_bls_p)), findsOneWidget); expect(find.text(l10n.c_ru_bls_c), findsOneWidget); - expect(find.text(l10n.c_ru_sob), findsOneWidget); - - await tapElement(tester, find.text(l10n.c_ru_sob)); - - expect(find.text(l10n.c_ru_sob), findsOneWidget); - expect(find.text(l10n.c_ru_sbb_p), findsNothing); + final sobI = find.text(l10n.c_ru_sob_i); + await tester.dragUntilVisible(sobI, modal, const Offset(0, -50)); + expect(sobI, findsOneWidget); + await tapElement(tester, sobI, warnIfMissed: false); + expect(sobI, findsOneWidget); }); testWidgets('test filter ru values', (tester) async { @@ -68,7 +67,7 @@ void main() { // Verify results are filtered expect(find.descendant(of: modal, matching: find.text(l10n.c_ru_sbb_p)), findsNothing); expect(find.descendant(of: modal, matching: find.text(l10n.c_ru_bls_p)), findsNothing); - expect(find.text(l10n.c_ru_sob), findsOneWidget); + expect(find.text(l10n.c_ru_sob_i), findsOneWidget); }); testWidgets('test load button disabled when validation fails', (tester) async { diff --git a/das_client/app/l10n/strings_de.arb b/das_client/app/l10n/strings_de.arb index ac19f073c..dcbf093ef 100644 --- a/das_client/app/l10n/strings_de.arb +++ b/das_client/app/l10n/strings_de.arb @@ -104,11 +104,29 @@ "w_additional_speed_restriction_modal_table_label_from": "Von", "w_additional_speed_restriction_modal_table_label_until": "Bis", "w_additional_speed_restriction_modal_table_label_reason": "Grund", - "c_ru_sbb_p": "SBB", + "c_ru_sbb": "SBB AG", + "c_ru_sbb_p": "SBB Personenverkehr", + "c_ru_sbb_epa": "SBB Voyageur (EPA)", "c_ru_sbb_c": "SBB Cargo", - "c_ru_bls_p": "BLS", + "c_ru_sbbc_int": "SBB Cargo International", + "c_ru_sbb_d": "SBB GmbH Deutschland", + "c_ru_sbb_infra_baulog": "SBB Infrastruktur Baulogistik", + "c_ru_sbb_infra_path": "SBB Infrastruktur PathOrderTool", + "c_ru_bls_n": "BLS Netz AG", + "c_ru_bls_p": "BLS Personenverkehr", + "c_ru_bls_nevu": "BLS Netz AG EVU", "c_ru_bls_c": "BLS Cargo", - "c_ru_sob": "SOB", + "c_ru_sob_t": "SOB Transport EVU", + "c_ru_sob_i": "SOB Infrastruktur", + "c_ru_sob_iti": "SOB Infrastruktur TI", + "c_ru_thu": "Thurbo AG", + "c_ru_ra": "RegionAlps SA", + "c_ru_travys": "TRAVYS SA", + "c_ru_transn": "transN", + "c_ru_tpfinfra": "TPF Infra SA", + "c_ru_tpftrafic": "TPF Trafic SA", + "c_ru_tmr": "TMR SA", + "c_ru_mbc": "MBC SA", "c_unknown": "Unbekannt", "c_train_number": "Zugnummer", "c_today": "Heute", diff --git a/das_client/app/lib/extension/ru_extension.dart b/das_client/app/lib/extension/ru_extension.dart index 4d3698e0c..276110da0 100644 --- a/das_client/app/lib/extension/ru_extension.dart +++ b/das_client/app/lib/extension/ru_extension.dart @@ -4,18 +4,54 @@ import 'package:sfera/component.dart'; extension RuExtension on RailwayUndertaking { String displayText(BuildContext context) => switch (this) { - RailwayUndertaking.sbbP => context.l10n.c_ru_sbb_p, - RailwayUndertaking.sbbC => context.l10n.c_ru_sbb_c, + RailwayUndertaking.blsN => context.l10n.c_ru_bls_n, RailwayUndertaking.blsP => context.l10n.c_ru_bls_p, + RailwayUndertaking.blsNEvu => context.l10n.c_ru_bls_nevu, RailwayUndertaking.blsC => context.l10n.c_ru_bls_c, - RailwayUndertaking.sob => context.l10n.c_ru_sob, + RailwayUndertaking.sbb => context.l10n.c_ru_sbb, + RailwayUndertaking.sbbP => context.l10n.c_ru_sbb_p, + RailwayUndertaking.sbbEPA => context.l10n.c_ru_sbb_epa, + RailwayUndertaking.sbbC => context.l10n.c_ru_sbb_c, + RailwayUndertaking.sbbCInt => context.l10n.c_ru_sbbc_int, + RailwayUndertaking.sbbD => context.l10n.c_ru_sbb_d, + RailwayUndertaking.sbbInfraBuildLog => context.l10n.c_ru_sbb_infra_baulog, + RailwayUndertaking.sbbInfraPath => context.l10n.c_ru_sbb_infra_path, + RailwayUndertaking.sobT => context.l10n.c_ru_sob_t, + RailwayUndertaking.sobI => context.l10n.c_ru_sob_i, + RailwayUndertaking.sobITi => context.l10n.c_ru_sob_iti, + RailwayUndertaking.thu => context.l10n.c_ru_thu, + RailwayUndertaking.ra => context.l10n.c_ru_ra, + RailwayUndertaking.travys => context.l10n.c_ru_travys, + RailwayUndertaking.transN => context.l10n.c_ru_transn, + RailwayUndertaking.tpfInfra => context.l10n.c_ru_tpfinfra, + RailwayUndertaking.tpfTrafic => context.l10n.c_ru_tpftrafic, + RailwayUndertaking.tmr => context.l10n.c_ru_tmr, + RailwayUndertaking.mbc => context.l10n.c_ru_mbc, }; String localizedText(AppLocalizations localizations) => switch (this) { - RailwayUndertaking.sbbP => localizations.c_ru_sbb_p, - RailwayUndertaking.sbbC => localizations.c_ru_sbb_c, + RailwayUndertaking.blsN => localizations.c_ru_bls_n, RailwayUndertaking.blsP => localizations.c_ru_bls_p, + RailwayUndertaking.blsNEvu => localizations.c_ru_bls_nevu, RailwayUndertaking.blsC => localizations.c_ru_bls_c, - RailwayUndertaking.sob => localizations.c_ru_sob, + RailwayUndertaking.sbb => localizations.c_ru_sbb, + RailwayUndertaking.sbbP => localizations.c_ru_sbb_p, + RailwayUndertaking.sbbEPA => localizations.c_ru_sbb_epa, + RailwayUndertaking.sbbC => localizations.c_ru_sbb_c, + RailwayUndertaking.sbbCInt => localizations.c_ru_sbbc_int, + RailwayUndertaking.sbbD => localizations.c_ru_sbb_d, + RailwayUndertaking.sbbInfraBuildLog => localizations.c_ru_sbb_infra_baulog, + RailwayUndertaking.sbbInfraPath => localizations.c_ru_sbb_infra_path, + RailwayUndertaking.sobT => localizations.c_ru_sob_t, + RailwayUndertaking.sobI => localizations.c_ru_sob_i, + RailwayUndertaking.sobITi => localizations.c_ru_sob_iti, + RailwayUndertaking.thu => localizations.c_ru_thu, + RailwayUndertaking.ra => localizations.c_ru_ra, + RailwayUndertaking.travys => localizations.c_ru_travys, + RailwayUndertaking.transN => localizations.c_ru_transn, + RailwayUndertaking.tpfInfra => localizations.c_ru_tpfinfra, + RailwayUndertaking.tpfTrafic => localizations.c_ru_tpftrafic, + RailwayUndertaking.tmr => localizations.c_ru_tmr, + RailwayUndertaking.mbc => localizations.c_ru_mbc, }; } diff --git a/das_client/app/lib/pages/journey/selection/railway_undertaking/widgets/select_railway_undertaking_input.dart b/das_client/app/lib/pages/journey/selection/railway_undertaking/widgets/select_railway_undertaking_input.dart index 78f6a936f..6f37feffd 100644 --- a/das_client/app/lib/pages/journey/selection/railway_undertaking/widgets/select_railway_undertaking_input.dart +++ b/das_client/app/lib/pages/journey/selection/railway_undertaking/widgets/select_railway_undertaking_input.dart @@ -92,15 +92,27 @@ class _RailwayUndertakingTextFieldState extends State<_RailwayUndertakingTextFie hintText: widget.isModalVersion ? context.l10n.p_train_selection_ru_description : null, ), onTap: () { + final radius = Radius.circular(16); showModalBottomSheet( + context: context, isScrollControlled: true, backgroundColor: _modalBackgroundColor(context), shape: SelectRailwayUndertakingModal.shapeBorder, constraints: _modalConstraints, - context: context, - builder: (_) => Provider.value( - value: context.read(), - child: SelectRailwayUndertakingModal(selectedRailwayUndertaking: widget.selectedRailwayUndertaking), + builder: (_) => ClipRRect( + borderRadius: BorderRadius.only( + topLeft: radius, + topRight: radius, + ), + child: Material( + color: _modalBackgroundColor(context), + child: Provider.value( + value: context.read(), + child: SelectRailwayUndertakingModal( + selectedRailwayUndertaking: widget.selectedRailwayUndertaking, + ), + ), + ), ), ); }, diff --git a/das_client/app/test/pages/journey/selection/railway_undertaking/select_railway_undertaking_modal_controller_test.dart b/das_client/app/test/pages/journey/selection/railway_undertaking/select_railway_undertaking_modal_controller_test.dart index ffe189e0d..b1931673c 100644 --- a/das_client/app/test/pages/journey/selection/railway_undertaking/select_railway_undertaking_modal_controller_test.dart +++ b/das_client/app/test/pages/journey/selection/railway_undertaking/select_railway_undertaking_modal_controller_test.dart @@ -87,7 +87,16 @@ void main() { // EXPECT expect( emitRegister, - orderedEquals([RailwayUndertaking.sbbC, RailwayUndertaking.sbbP]), + orderedEquals([ + RailwayUndertaking.sbbC, + RailwayUndertaking.sbbP, + RailwayUndertaking.sbb, + RailwayUndertaking.sbbCInt, + RailwayUndertaking.sbbD, + RailwayUndertaking.sbbInfraBuildLog, + RailwayUndertaking.sbbInfraPath, + RailwayUndertaking.sbbEPA, + ]), ); }); @@ -139,7 +148,7 @@ void main() { test('updateIsSelectingRailwayUndertaking_whenSetSelectedRuCalled_thenIsCalled', () { // ARRANGE - final newRu = RailwayUndertaking.sob; + final newRu = RailwayUndertaking.sobT; reset(mockUpdateAvailableRuFunction); // ACT diff --git a/das_client/sfera/lib/src/model/ru.dart b/das_client/sfera/lib/src/model/ru.dart index 3ffa68c41..7fe46b1a6 100644 --- a/das_client/sfera/lib/src/model/ru.dart +++ b/das_client/sfera/lib/src/model/ru.dart @@ -1,9 +1,27 @@ enum RailwayUndertaking { - sbbP(companyCode: '1185'), - sbbC(companyCode: '2185'), + blsN(companyCode: '0063'), blsP(companyCode: '1163'), + blsNEvu(companyCode: '2263'), blsC(companyCode: '3356'), - sob(companyCode: '5458'); + sbb(companyCode: '1085'), + sbbP(companyCode: '1385'), + sbbEPA(companyCode: '1285'), + sbbC(companyCode: '2185'), + sbbCInt(companyCode: '2585'), + sbbD(companyCode: '5404'), + sbbInfraBuildLog(companyCode: '5184'), + sbbInfraPath(companyCode: '5186'), + sobT(companyCode: '5458'), + sobI(companyCode: '5459'), + sobITi(companyCode: '5460'), + thu(companyCode: '3917'), + ra(companyCode: '5680'), + travys(companyCode: '5227'), + transN(companyCode: '5244'), + tpfInfra(companyCode: '5234'), + tpfTrafic(companyCode: '5495'), + tmr(companyCode: '5429'), + mbc(companyCode: '5230'); const RailwayUndertaking({ required this.companyCode,