# 이미지 관련 import
from django.test.client import MULTIPART_CONTENT, encode_multipart, BOUNDARY
from PIL import Image
import tempfile # 임시파일 만드는 것

# 파이썬 장고 실무 심화 5주차, 10강 - setUp 함수를 모든 클래스에 대해서 늘 새로 만들어 주는건 비효율적이기 때문에, 수정되지 않고 반복해서 써야하는 함수 같은 경우 "클래스 메소드"중 하나인 setUpTestData를 쓰는게 좋음. 11강때 클래스메소드, 12강때 스태틱 메소드에 대해서 배움

def get_temporary_image(temp_file):
    size = (200, 200)
    color = (255, 0, 0, 0)
    image = Image.new("RGBA", size, color)
    image.save(temp_file, 'png')
    return temp_file

class ArticleCreateTest(APITestCase):
		def test_create_article_with_image(self):
        # 임시 이미지 파일 생성
        temp_file = tempfile.NamedTemporaryFile()
        temp_file.name = "image.png"
        image_file = get_temporary_image(temp_file)
        image_file.seek(0)
        self.article_data["image"] = image_file

        #전송
        response = self.client.post(
            path=reverse("article_view"),
            data=encode_multipart(data= self.article_data, boundary=BOUNDARY),
            content_type=MULTIPART_CONTENT,
            HTTP_AUTHORIZATION=f"Bearer {self.access_token}"
        )
        self.assertEqual(response.status_code, 200)