Dynamic News Fetching:
يقوم التطبيق بجلب أهم العناوين والأخبار حسب الفئة ديناميكيًا باستخدام Retrofit لعمليات الشبكة.
Offline Support:
يعتمد على التخزين المؤقت المحلي باستخدام قاعدة بيانات Room لتخزين المقالات الإخبارية حسب الفئة، مما يتيح للمستخدمين الوصول إلى الأخبار حتى بدون اتصال بالإنترنت.
State Management:
يستخدم نمط معمارية Model-View-Intent (MVI) لتوحيد حالة التطبيق، مما يضمن سلوكًا قويًا وقابلًا للتنبؤ عبر الشاشات.
Dependency Injection:
يعتمد على Dagger Hilt لإدارة التبعيات بشكل نظيف، مما يعزز قابلية الاختبار وقابلية التوسع.
Optimized Data Flow:
يجلب المقالات الإخبارية من المصدر البعيد INewsRemoteDs.
يخزن ويسترجع المقالات المحلية باستخدام INewsLocalDs.
يحول البيانات باستخدام ArticleMapper لضمان تحويل سلس بين المجال وقاعدة البيانات وطبقة الـ DTO.
Testing Strategy:
Unit Testing:
يتحقق من منطق طرق المستودع مثل getTopHeadlines() وgetLocalTopHeadlinesByCategory().
يستخدم مصادر بيانات محاكية (Mocked) مثل INewsRemoteDs وINewsLocalDs لمحاكاة سيناريوهات مختلفة.
يعتمد على Turbine لاختبار تدفقات Kotlin Flows لضمان صحة وموثوقية البيانات المنبعثة.
UI Testing:
يتحقق من مكونات واجهة المستخدم، مثل قوائم الأخبار واختيارات الفئات، باستخدام أدوات اختبار Jetpack Compose.
يضمن العرض والسلوك الصحيح عبر تكوينات الأجهزة المختلفة.
End-to-End Testing:
يختبر تدفق التطبيق بالكامل، بما في ذلك جلب الأخبار والتخزين المؤقت والتنقل بين الشاشات، باستخدام أدوات مثل UI Automator.
يحاكي تفاعلات المستخدم الحقيقية لضمان تجربة سلسة.
Technologies and Tools Used:
Programming Language: Kotlin
Networking: Retrofit
Database: Room
Dependency Injection: Dagger Hilt
Architecture: MVI (Model-View-Intent)
Testing Tools:
Unit Testing: Turbine, JUnit
UI Testing: Jetpack Compose Testing
End-to-End Testing: UI Automator
اسم المستقل | Mohamed E. |
عدد الإعجابات | 0 |
عدد المشاهدات | 6 |
تاريخ الإضافة |