Files
tripz-llc/apps/driver/packages/get/test/navigation/parse_route_test.dart
T
Hamza-AyedandClaude Opus 5 ecbe245b77 fix(driver): ضمّ حزم get و get_storage داخل المستودع
apps/driver كان يشير إلى `../../Intaleq/packages/get` خارج المستودع — وهو
مسار يُحل من apps/driver إلى Tripz/Intaleq/ غير الموجود، فلا يمرّ
`flutter pub get` إطلاقاً. (فجوة docs/30 §2.6.)

ضُمّت نسخة **انطلق** تحديداً (App/Intaleq/packages) لا فرع apps/rider:
الفرعان يختلفان فعلاً — snackbar_controller.dart و get_queue.dart وغيرهما
مختلفة بين النسختين، فاستعارة فرع rider كانت ستغيّر سلوك السائق صامتة.

  apps/driver/packages/get         (3.5 م.ب، 202 ملف dart مع get_storage)
  apps/driver/packages/get_storage
  pubspec: ../../Intaleq/packages/* → ./packages/*  (3 مواضع، منها
  dependency_overrides سطر 142)

المستودع صار مكتفياً ذاتياً: لا تبعية مسار خارج شجرته. لم يُمسّ App/Intaleq.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 05:16:10 +03:00

193 lines
5.4 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:get/get.dart';
import 'package:get/get_navigation/src/root/parse_route.dart';
void main() {
test('Parse Page with children', () {
final testParams = {'hi': 'value'};
final pageTree = GetPage(
name: '/city',
page: Container.new,
children: [
GetPage(
name: '/home',
page: Container.new,
transition: Transition.rightToLeftWithFade,
children: [
GetPage(
name: '/bed-room',
transition: Transition.size,
page: Container.new,
),
GetPage(
name: '/living-room',
transition: Transition.topLevel,
page: Container.new,
),
],
),
GetPage(
name: '/work',
transition: Transition.upToDown,
page: Container.new,
children: [
GetPage(
name: '/office',
transition: Transition.zoom,
page: Container.new,
children: [
GetPage(
name: '/pen',
transition: Transition.cupertino,
page: Container.new,
parameters: testParams,
),
GetPage(
name: '/paper',
page: Container.new,
transition: Transition.downToUp,
),
],
),
GetPage(
name: '/meeting-room',
transition: Transition.fade,
page: Container.new,
),
],
),
],
);
final tree = ParseRouteTree(routes: <GetPage>[]);
tree.addRoute(pageTree);
// tree.addRoute(pageTree);
const searchRoute = '/city/work/office/pen';
final match = tree.matchRoute(searchRoute);
expect(match, isNotNull);
expect(match.route!.name, searchRoute);
final testRouteParam = match.route!.parameters!;
for (final tParam in testParams.entries) {
expect(testRouteParam[tParam.key], tParam.value);
}
});
test('Parse Page without children', () {
final pageTree = [
GetPage(
name: '/city', page: Container.new, transition: Transition.cupertino),
GetPage(
name: '/city/home',
page: Container.new,
transition: Transition.downToUp),
GetPage(
name: '/city/home/bed-room',
page: Container.new,
transition: Transition.fade),
GetPage(
name: '/city/home/living-room',
page: Container.new,
transition: Transition.fadeIn),
GetPage(
name: '/city/work',
page: Container.new,
transition: Transition.leftToRight),
GetPage(
name: '/city/work/office',
page: Container.new,
transition: Transition.leftToRightWithFade),
GetPage(
name: '/city/work/office/pen',
page: Container.new,
transition: Transition.native),
GetPage(
name: '/city/work/office/paper',
page: Container.new,
transition: Transition.noTransition),
GetPage(
name: '/city/work/meeting-room',
page: Container.new,
transition: Transition.rightToLeft),
];
final tree = ParseRouteTree(routes: pageTree);
// for (var p in pageTree) {
// tree.addRoute(p);
// }
const searchRoute = '/city/work/office/pen';
final match = tree.matchRoute(searchRoute);
expect(match, isNotNull);
expect(match.route!.name, searchRoute);
});
testWidgets(
'test params from dynamic route',
(tester) async {
await tester.pumpWidget(GetMaterialApp(
initialRoute: '/first/juan',
getPages: [
GetPage(page: Container.new, name: '/first/:name'),
GetPage(page: Container.new, name: '/second/:id'),
GetPage(page: Container.new, name: '/third'),
GetPage(page: Container.new, name: '/last/:id/:name/profile')
],
));
expect(Get.parameters['name'], 'juan');
Get.toNamed('/second/1234');
await tester.pumpAndSettle();
expect(Get.parameters['id'], '1234');
Get.toNamed('/third?name=jonny&job=dev');
await tester.pumpAndSettle();
expect(Get.parameters['name'], 'jonny');
expect(Get.parameters['job'], 'dev');
Get.toNamed('/last/1234/ana/profile');
await tester.pumpAndSettle();
expect(Get.parameters['id'], '1234');
expect(Get.parameters['name'], 'ana');
},
);
testWidgets(
'params in url by parameters',
(tester) async {
await tester.pumpWidget(GetMaterialApp(
initialRoute: '/first/juan',
getPages: [
GetPage(page: Container.new, name: '/first/:name'),
GetPage(page: Container.new, name: '/italy'),
],
));
// Get.parameters = ({"varginias": "varginia", "vinis": "viniiss"});
var parameters = <String, String>{
"varginias": "varginia",
"vinis": "viniiss"
};
// print("Get.parameters: ${Get.parameters}");
parameters.addAll({"a": "b", "c": "d"});
Get.toNamed("/italy", parameters: parameters);
await tester.pumpAndSettle();
expect(Get.parameters['varginias'], 'varginia');
expect(Get.parameters['vinis'], 'viniiss');
expect(Get.parameters['a'], 'b');
expect(Get.parameters['c'], 'd');
},
);
}