اللجنة العلمية_مستوى رابع
600 subscribers
195 photos
23 videos
362 files
198 links
القنوات العملية المركزية:
سنة اولى/ https://t.me/USF_Computer1
سنه ثانية/ https://t.me/USF_computer2
سنة ثالثة/ https://t.me/USF_Computer3
سنة رابعة/ https://t.me/USF_Computer4

تم ارشفة اغلب قنوات ومجموعات الدفع السابقة ، وهي مثبته
Download Telegram
Forwarded from اللجنة العلمية CS 22 (Osama Dammag)
public ProductController(IProductService productService)
{
_productService = productService;
}

[HttpGet]
public ActionResult<IEnumerable<Product>> GetProducts()
{
return Ok(_productService.GetAllProducts());
}

[HttpPost]
public ActionResult<Product> CreateProduct(Product product)
{
var createdProduct = _productService.CreateProduct(product);
return CreatedAtAction(nameof(GetProducts), new { id = createdProduct.Id }, createdProduct);
}

[HttpGet("{id}")]
public ActionResult<Product> GetProduct(int id)
{
var product = _productService.GetProductById(id);

if (product == null)
return NotFound();

return Ok(product);
}
}
}

الخطوة 3: إنشاء اختبار وحدات للـ ProductController

ProductControllerTests:

using Xunit;
using Moq;
using ECommerceApp.Controllers;
using ECommerceApp.Models;
using ECommerceApp.Services;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using Bogus;

namespace ECommerceApp.Tests
{
public class ProductControllerTests
{
private readonly Mock<IProductService> _mockProductService;
private readonly ProductController _controller;
private readonly Faker<Product> _faker;

public ProductControllerTests()
{
_mockProductService = new Mock<IProductService>();
_controller = new ProductController(_mockProductService.Object);

// Using Bogus to generate fake data
_faker = new Faker<Product>()
.RuleFor(p => p.Id, f => f.IndexFaker + 1)
.RuleFor(p => p.Name, f => f.Commerce.ProductName())
.RuleFor(p => p.Price, f => f.Random.Decimal(1, 100));
}

[Fact]
public void GetProducts_ReturnsOkResult_WithAListOfProducts()
{
// Arrange
var fakeProducts = _faker.Generate(3);
_mockProductService.Setup(service => service.GetAllProducts()).Returns(fakeProducts);

// Act
var result = _controller.GetProducts();

// Assert
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var returnProducts = Assert.IsType<List<Product>>(okResult.Value);
Assert.Equal(3, returnProducts.Count);
}

[Fact]
public void CreateProduct_ReturnsCreatedAtActionResult_WithTheCreatedProduct()
{
// Arrange
var fakeProduct = _faker.Generate();
_mockProductService.Setup(service => service.CreateProduct(It.IsAny<Product>())).Returns(fakeProduct);

// Act
var result = _controller.CreateProduct(fakeProduct);

// Assert
var createdAtActionResult = Assert.IsType<CreatedAtActionResult>(result.Result);
var returnProduct = Assert.IsType<Product>(createdAtActionResult.Value);
Assert.Equal(fakeProduct.Name, returnProduct.Name);
}

[Fact]
public void GetProduct_ReturnsOkResult_WithAProduct()
{
// Arrange
var fakeProduct = _faker.Generate();
_mockProductService.Setup(service => service.GetProductById(fakeProduct.Id)).Returns(fakeProduct);

// Act
var result = _controller.GetProduct(fakeProduct.Id);

// Assert
var okResult = Assert.IsType<OkObjectResult>(result.Result);
var returnProduct = Assert.IsType<Product>(okResult.Value);
Assert.Equal(fakeProduct.Name, returnProduct.Name);
}

[Fact]
public void GetProduct_ReturnsNotFound_WhenProductDoesNotExist()
{
// Arrange
_mockProductService.Setup(service => service.GetProductById(It.IsAny<int>())).Returns((Product)null);

// Act
var result = _controller.GetProduct(1);

// Assert
Assert.IsType<NotFoundResult>(result.Result);
}
}
}
Forwarded from اللجنة العلمية CS 22 (Osama Dammag)
الخطوة 4 و الاخيرة : ننفذ الامر هذا :
dotnet test


طبعا ال code coverage في ال dot net اذا نسخت ال visual studio من نوع ال professional ف بتكون معاك اما اذا في ال community ف للاسف مافيش :
ال code coverage معناته ان حقك ال test كم غطى من الكود الذي كتبته 👍

#مساعد
#برمجة_متقدمة
#lab
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
اللجنة العلمية CS 22
الخطوة 4 و الاخيرة : ننفذ الامر هذا : dotnet test طبعا ال code coverage في ال dot net اذا نسخت ال visual studio من نوع ال professional ف بتكون معاك اما اذا في ال community ف للاسف مافيش : ال code coverage معناته ان حقك ال test كم غطى من الكود الذي كتبته…
جميل جداً...

ونقطه اخيره أحب أقولها... لا تنسو ما تفعلو Database خاصة ل test ، فهذا هو ال best practice في اي عملية test ان db الخاصة ب test تكون منفصله عن الdb الرئيسية 👍🏻

في لارافل مثلا... تفعلو ملف
.env.testing

ويكون فيبه نفس محتوى
.env

ولكن اسم ال db بتختلف... ولما تفعلو migration :
php artisan migrate --env=testing


اما بالنسبة ل ASP او اي فريمورك ثانيه فتقدرو تنسخو الكلام هذا و تسألو GPT 👍🏻
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
مشروع الدعيس طلب مننا Docs للمشاريع ، معنا 3 طرق عشان نعملها ، وهذا نتيجه البحث الي سويتها اول:
1 - نتعب ونكتب كل شي في markdown
2 - نستخدم مكاتب تفعل لنا docs بشكل رهيب (مثل VuePress) ولكن برضو لازم تكتبو markdown وهو بيفعل الباقي

3 - اذا معك لارافل فعندك مكتبة scramble ، تثبتها في المشروع وتضيف سطرين فقط في boot وخلاص وبيكون عندك هذا الرابط
http://127.0.0.1:8000/docs/api/

وهذا شكل الdocs الي يتم عمله من المكتبه من نفسه بدون ما تكتب ولا شيء غير كود المشروع
ملاحظة: لكي يفتح لكم docs يحتاج الى الاتصال بالانترنت
رابط المكتبة:
https://scramble.dedoc.co/installation

طبعا لا تنسو ما تركزو على بقية المتطلبات ، فهي شبه مبهمة 💔🙂👍🏻

#مساعد
Forwarded from اللجنة العلمية CS 22 (Ayham Al-Akhali)
أطلقت OpenAI سلسلة جديدة من نماذج الذكاء الاصطناعي تحت اسم "openai o1". تم تصميم هذه النماذج لتستغرق وقتًا أطول في التفكير قبل الاستجابة، مما يعني دقة أكبر وجودة أفضل في الإجابات


رابط لتفاصيل اكثر


https://openai.com/o1/?fbclid=PAZXh0bgNhZW0CMTEAAaYS7qZR0Tlqqtnfe80eRiTSrNzqCywAXu_38XWnME8J-OE9hny038ZrbFc_aem_ue6SM5GCjyVy6WQy9eadZg
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
مكتبة رهيبه في تيلويند تلغي عمل clamp (الي اشتغل فرونت بيعرف حجم وصعوبة فهم الـ clamp)
وطريقه استخدامها بسيطه جداً. الشرح في موقعهم الرسمي:

https://fluid.tw/

تعديل: المكتبه ليست رسميه ، وتم عملها من المطور المحنك Maxwell Barvian
#مساعد #ويب
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
لقيت موقع رهيب بالنت ، موسوعة التطوير: "ويكيبيديا"، ولكن للمطورين فقط.

فيبه اغلب الاشياء البرمجية ومصدر عنها للتعلم ، والجميل في الموقع انه يجيب لك اللب في البدايه ، ويترك لك رابط مقال تكلم عن الموضوع بتفاصيل كثيرة جداً 👌🏻


كذلك الموقع open source بمعنى لو في موضوع برمجي غير موجود تقدر تضيفه وتوصي بمقال ممتاز له :

الريبو: https://github.com/Buzzpy/Dev-Encyclopedia

رابط الموقع: https://devpedia.dev/

#مساعد
Forwarded from اللجنة العلمية CS 22 (OND)
صباح الخير 👋،
ولو متأخر بس الذي فاعل تطبيق e-commerce معاكم fake api مثل هذا

https://fakestoreapi.com/

با ينفعكم كثير إن شاء الله 🙏🏻

#مساعد
#api
Forwarded from Mosab Soft
السلام عليكم ورحمه الله وبركاته طبعا
كلنا نستخدم مكتبة Shimmer لما نحمل بيانات من API، بس كانت المشكلة انو نعيد تصميم شكل card بما يناسب مع الشكل الحقيقي 😩

في مكتبة رائعة جداً أسمها skeletonizer
كل اللي عليك تسوي wrap للـ widget اللي بتستخدمها بالـ skeletonizer وهي تكمل الباقي 😍

مثال:
Skeletonizer(
enabled: _loading,
child: ListView.builder(
itemCount: 7,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text('Item number $index as title'),
subtitle: const Text('Subtitle here'),
trailing: const Icon(Icons.ac_unit),
),
);
},
),
)


رابط المكتبة:
https://pub.dev/packages/skeletonizer
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
مجموعه كُتيبات صغيرة لمواضيع هامه للبعض...

المصدر: من حسابات مختلفة في linkedin (يوزر كل شخص في ملفه الخاص)

#مساعد
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
قائمة بجميع Request Header و Response Header الخاصة ب Cache

لتفاصيل اكثر عن cache في header:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

وهنا تفاصيل عن req & res headers :
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

#مساعد #ويب #مشروع_الدعيس
Forwarded from بنك المواد المختارة
عملية إطلاق نار قوية تهز يافا المحتلة "تل أبيب"..

القتلى في الشوارع..

فدائيان ينفذان واحدة من أقوى العمليات بل ربما الأقوى منذ سنوات والحديث يدور عن مقتل وإصابة العشرات من الجنود والمستوطنين الصهاينة.

🔹  t.me/MediaBank21