Untitled

 avatar
unknown
python
10 days ago
2.4 kB
7
Indexable
from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase

from .models import Drug

class DrugSearchByImageViewTests(APITestCase):
    def setUp(self):
        # إنشاء دواء بصورته (صورة حمراء)
        red_image = create_test_image((255, 0, 0))
        self.drug = Drug.objects.create(
            name='أسبرين',
            description='مسكن ألم',
            image=red_image
        )
        # تأكد أن هذا الاسم هو نفسه الموجود في urls.py
        self.url = reverse('drug-search-by-image')

    def test_عدم_وجود_صورة(self):
        """
        اختبار في حال لم يتم إرسال صورة، يجب أن يرجع خطأ.
        """
        response = self.client.post(self.url)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertIn('error', response.data)

    def test_صورة_مشابهة_تُرجع_الدواء_الصحيح(self):
        """
        رفع صورة مشابهة لصورة الدواء ويجب أن يُرجع نفس الدواء.
        """
        similar_image = create_test_image((254, 0, 0))  # مشابهة جدًا للأحمر
        response = self.client.post(self.url, {'image': similar_image}, format='multipart')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['name'], self.drug.name)

    def test_صورة_غير_صالحة(self):
        """
        اختبار رفع ملف غير صالح كصورة.
        """
        bad_image = SimpleUploadedFile("bad.jpg", b"هذا ليس صورة", content_type="image/jpeg")
        response = self.client.post(self.url, {'image': bad_image}, format='multipart')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertIn('error', response.data)

    def test_عدم_وجود_أي_دواء(self):
        """
        اختبار في حال لم يكن هناك أدوية في قاعدة البيانات.
        """
        Drug.objects.all().delete()
        test_image = create_test_image((255, 255, 0))
        response = self.client.post(self.url, {'image': test_image}, format='multipart')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertIn('error', response.data)
Editor is loading...
Leave a Comment