Update Saqel Platform: 2026-09-13 16:31:17

This commit is contained in:
Hamza-Ayed
2026-09-13 16:31:18 +03:00
parent 81fa8c5dc8
commit 72c6575765
25 changed files with 6997 additions and 3852 deletions
@@ -5,6 +5,8 @@ import 'package:student_app/presentation/screens/virtual_labs/lab_identity.dart'
import 'package:student_app/presentation/screens/virtual_labs/labs_gallery_screen.dart';
import 'package:student_app/presentation/screens/virtual_labs/labs_registry.dart';
import 'package:student_app/presentation/screens/virtual_labs/subject_virtual_labs_view.dart';
import 'package:student_app/presentation/screens/curriculum/arabic_interactive_lab_view.dart';
import 'package:student_app/presentation/screens/curriculum/english_interactive_lab_view.dart';
void main() {
test('registry covers all Grade-10 labs (48 entries, 13 subjects)', () {
@@ -103,7 +105,7 @@ void main() {
// History lesson 2 must NEVER return physics vector lab
final historyLab = Grade10LabsRegistry.findForLesson(
subjectTitle: 'تاريخ الأردن (Jordan History 10)',
subjectTitle: 'التاريخ (History 10)',
lessonTitle: 'الدرس الثاني: الإمبراطورية الساسانية',
lessonId: 'lesson_02',
);
@@ -119,7 +121,7 @@ void main() {
// History lesson 1 MUST return Persian Empire lab, NOT physics!
final historyUnit1Lab = Grade10LabsRegistry.findForLesson(
subjectTitle: 'تاريخ الأردن (Jordan History 10)',
subjectTitle: 'التاريخ (History 10)',
lessonTitle: 'الدرس الأول: الإمبراطورية الفارسية: النشأة والتطور',
lessonId: 'lesson_01',
curriculumLessonId: 'history_10_semester_1_unit_01_lesson_01',
@@ -824,6 +826,89 @@ void main() {
await t.pump();
expect(checkpointTriggered, isTrue);
});
testWidgets('arabic interactive lab view renders and supports tab navigation',
(t) async {
await t.binding.setSurfaceSize(const Size(1200, 2400));
addTearDown(() => t.binding.setSurfaceSize(null));
await t.pumpWidget(const MaterialApp(
home: Scaffold(
body: ArabicInteractiveLabView(),
),
));
await t.pump();
// Default tab: الصرف والاشتقاق
expect(find.textContaining('مختبر الضاد اللغوي الذكي'), findsWidgets);
expect(find.text('ميزان الصرف والاشتقاق ⚖️'), findsWidgets);
expect(find.text('معمل البلاغة والبيان 💎'), findsWidgets);
expect(find.text('استوديو الإعراب والتراكيب 📜'), findsWidgets);
expect(find.text('العروض وموسيقى الشعر 🎵'), findsWidgets);
// Verify root selector
expect(find.text('ك - ت - ب'), findsWidgets);
expect(find.text('ع - ل - م'), findsWidgets);
await t.tap(find.text('ع - ل - م').first);
await t.pump();
// Switch to Rhetoric tab
await t.tap(find.text('معمل البلاغة والبيان 💎').first);
await t.pumpAndSettle();
expect(find.textContaining('الطباق'), findsWidgets);
// Switch to Syntax tab
await t.tap(find.text('استوديو الإعراب والتراكيب 📜').first);
await t.pumpAndSettle();
expect(find.textContaining('اختر الجملة لتحليل بنيتها الإعرابية'), findsWidgets);
// Switch to Prosody tab
await t.tap(find.text('العروض وموسيقى الشعر 🎵').first);
await t.pumpAndSettle();
expect(find.textContaining('بحر الكامل'), findsWidgets);
});
testWidgets('english interactive lab view renders and supports tab navigation',
(t) async {
await t.binding.setSurfaceSize(const Size(1200, 2400));
addTearDown(() => t.binding.setSurfaceSize(null));
await t.pumpWidget(const MaterialApp(
home: Scaffold(
body: EnglishInteractiveLabView(),
),
));
await t.pump();
// Default tab: Grammar Matrix
expect(find.textContaining('Action Pack 10'), findsWidgets);
expect(find.text('مصفوفة القواعد (Grammar) 📐'), findsWidgets);
expect(find.text('الصوتيات والنبر (Phonetics) 🎙️'), findsWidgets);
expect(find.text('المفردات والمتلازمات 📚'), findsWidgets);
expect(find.text('تحدي الاستماع (Listening) ⚡'), findsWidgets);
// Check grammar tense chips
expect(find.text('Present Simple'), findsWidgets);
expect(find.text('Present Perfect'), findsWidgets);
await t.tap(find.text('Present Perfect').first);
await t.pumpAndSettle();
// Switch to Phonetics tab
await t.tap(find.text('الصوتيات والنبر (Phonetics) 🎙️').first);
await t.pumpAndSettle();
expect(find.textContaining('Minimal Pairs'), findsWidgets);
expect(find.textContaining('Syllable Stress Shift'), findsWidgets);
// Switch to Vocab tab
await t.tap(find.text('المفردات والمتلازمات 📚').first);
await t.pumpAndSettle();
expect(find.textContaining('Thematic Keywords'), findsWidgets);
// Switch to Listening tab
await t.tap(find.text('تحدي الاستماع (Listening) ⚡').first);
await t.pumpAndSettle();
expect(find.textContaining('Gulf of Aqaba'), findsWidgets);
});
}