Untitled
unknown
python
8 months ago
2.4 kB
10
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