sync from local backup
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
import io
|
||||
from django.test import TestCase
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from PIL import Image
|
||||
from rest_framework.test import APIClient
|
||||
|
||||
|
||||
class ImageCompressViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = APIClient()
|
||||
self.image = self.create_test_image()
|
||||
|
||||
def create_test_image(self):
|
||||
img = Image.new('RGB', (100, 100), color='red')
|
||||
output = io.BytesIO()
|
||||
img.save(output, format='JPEG')
|
||||
output.seek(0)
|
||||
return SimpleUploadedFile(
|
||||
'test.jpg',
|
||||
output.getvalue(),
|
||||
content_type='image/jpeg'
|
||||
)
|
||||
|
||||
def test_compress_lossy(self):
|
||||
response = self.client.post(
|
||||
'/tool/image-compress/',
|
||||
{
|
||||
'file': self.image,
|
||||
'mode': 'lossy',
|
||||
'quality': 80,
|
||||
'format': 'jpeg'
|
||||
},
|
||||
format='multipart'
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('X-Original-Size', response)
|
||||
self.assertIn('X-Compressed-Size', response)
|
||||
self.assertIn('X-Compression-Ratio', response)
|
||||
|
||||
def test_compress_lossless(self):
|
||||
response = self.client.post(
|
||||
'/tool/image-compress/',
|
||||
{
|
||||
'file': self.image,
|
||||
'mode': 'lossless',
|
||||
'format': 'jpeg'
|
||||
},
|
||||
format='multipart'
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_invalid_file(self):
|
||||
invalid_file = SimpleUploadedFile(
|
||||
'test.txt',
|
||||
b'not an image',
|
||||
content_type='text/plain'
|
||||
)
|
||||
response = self.client.post(
|
||||
'/tool/image-compress/',
|
||||
{'file': invalid_file, 'mode': 'lossy'},
|
||||
format='multipart'
|
||||
)
|
||||
self.assertEqual(response.status_code, 400)
|
||||
|
||||
|
||||
class EXIFExtractViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = APIClient()
|
||||
|
||||
def test_extract_exif(self):
|
||||
img = Image.new('RGB', (100, 100), color='red')
|
||||
output = io.BytesIO()
|
||||
img.save(output, format='JPEG')
|
||||
output.seek(0)
|
||||
|
||||
image_file = SimpleUploadedFile(
|
||||
'test.jpg',
|
||||
output.getvalue(),
|
||||
content_type='image/jpeg'
|
||||
)
|
||||
|
||||
response = self.client.post(
|
||||
'/tool/image-compress/exif/',
|
||||
{'file': image_file},
|
||||
format='multipart'
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn('exif', response.json())
|
||||
|
||||
|
||||
class CompressionHistoryViewTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = APIClient()
|
||||
|
||||
def test_list_history(self):
|
||||
response = self.client.get('/tool/image-compress/history/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.json()['data'], [])
|
||||
|
||||
def test_create_history(self):
|
||||
data = {
|
||||
'session_id': 'test_session',
|
||||
'original_filename': 'test.jpg',
|
||||
'original_size': 1000,
|
||||
'compressed_size': 500,
|
||||
'compression_ratio': 50.0,
|
||||
'original_format': 'jpeg',
|
||||
'output_format': 'jpeg',
|
||||
'compression_mode': 'lossy',
|
||||
'quality': 80,
|
||||
'file_path': '/tmp/test.jpg',
|
||||
}
|
||||
response = self.client.post(
|
||||
'/tool/image-compress/history/',
|
||||
data,
|
||||
format='json'
|
||||
)
|
||||
self.assertEqual(response.status_code, 201)
|
||||
Reference in New Issue
Block a user