اختبار شكل ونوع البيانات الي راجعه من الــ `API` باستخدام فلاتر 💙 مع مكتبة المخطوطه `blueprint` 👑

بسم الله، والصلاة والسلام على رسول الله  الحمد لله الذي عَلَّمَ بالقلم.. عَلَّمَ الإنسانَ ما لم يَعْلَم والصلاةُ والسلامُ على خيرِ مُعَلِّمي الناسِ الخير محمد..

أما بعد..

في البداية اسالكم الدعاء لاخونا احمد جمال عبد الملك رحمه الله وان يجعل صبره في ميزان حسناتة

في المقاله دي هتكلم عن ال 

- المتطلبات علشان تفهم المكتبة وتقدر تستخدمها 

- ليه المكتبه اتعملت

- ازاي المكتبة حلت المشكلة 

- ازاي تستخدم المكتبة بالامثلة

- ختام

توكلنا علي الله 

محتاج ايه علشان تفهم المكتبة ؟

0 - تكون فاهم يعني ايه `Null` وزاي تحل مشاكل باستخدام ال `Null Safety` مصدر لبداية التعلم

1- تكون فاهم يعني ايه واجهه برمجيه `API`  وتقدر تستخدمها مع دارت مصدر لبداية التعلم

2- تكون فاهم يعني ايه `JSON` وازاي بنحوله لـ dart class   او ما يطلق عليه `Model` مصدر لبداية التعلم

3- تكون فاهم اختبار الوحدات `unit testing` مصدر لبداية التعلم

ليه المكتبة اتعملت ؟

كثير من الاوقات او معظم الاوقات مبيبقاش في دليل `documentation` لاستخدام الـ `api` نظرا لان اطر العمل المستخدمه مش كلها بتدعم كدا 

-  هنا بتكلم علي open api او swagger الي وظيفتهم توضيح ال من مسارات وشكل البيانات ونوعها في الـ API -

* وكمان لو الاطار اتاح الميزه دي مبتكونش بالشكل الكويس والمطور بيكسل يستخدمها وده سبب مشاكل كبيره منها ان ال Data Type الباك اند بيغيره بالخطاء او بيرجع ب Null بالخطاء 

* وده طبعا كارثي نظرا لان دارت بتدعم ال Strong Types و معظمنا بنستخدمها بدل ال dynamic وده الصح 

      كارثي ليه ؟  علشان دارت هترمي Exception وهيعطل التطبيق لو انت مكنتش متوقعه واخطاء زي دي محدش بيتوقعها !

وده السبب او المشكله الي المكتبة بتحاول تخلصنا منهم !

ازاي المكتبة بتحل المشكلة دي ؟

- المكتبة بتوفرلك طريقه تحدد بيه شكل ونوع البيانات في ال JSON 

- المكتبة بتدعم كل انواع البيانات في الــ JSON والمقابل ليها في Dart

- المكتبة بتوفرلك دالتين لنفس الهدف وهو التاكد ان 

                        النوع والشكل الي انت حددته هو نفس النوع والشكل الي راجع من الـ API 

وبالتالي لو حصل فشل والنوع مش مطابق فاسبب واحد من اثنين 

* الاول الباك اند غير وانت تقدر تعرف انهي حقل الي غلط ولازم يتصلح

* الثاني انت عامل نوع البيانات بتاعك غلط عكس الصحيح في ال API 

 ازاي تستخدم المكتبة بالامثلة


رابط المكتبة github  pub.dev

اول حاجه محتاج تعمل مخطوطه للشكل الصحيح ونوع البيانات الصحيح 

ثاني حاجه محتاج ال JSON  الي هنطبق عليه المخطوطه دي ولو نجح يبقي تمام فشل يبقي في خطا

وده مثال للمكتبة مع ال unit test في فلاتر


unit testing


الخاتمه

المكتبة نفسها معمول ليها اختبارات tests كافية لتغيطة كل شي تقريبا فاستخدمها وانت مطئمن



المكتبة مش هدفها انك في فلاتر تختبر ال Api وبس

ولكن من الاستخدامات الاخري انك لو عملت Api بدارت تقدر تستخدم المكتبة علشان تختبر شغلك وتطلع ال api دايما مظبوطه 

لو انت مهتم ب Dart في ال Server وتقدر تساهم في المشروع تقدر تشارك معانا في "القصر" - Palace

 تم بفضل الله 


المشاركات الشائعة من هذه المدونة

اختبار الكود واجمالي نسبة تغطية الاختبارات - unit testing and test coverage in Arabic

تصحيح شكل الكود "linting" والتطبيق مع دارت "dart" 💡

يعني ايه api والتعامل معاها والمصطلحات ومثال بدارت للمبتدئين ( منين بيودي علي فين )