이 유닛테스트는 운이 좋게 여기저기에서 발취한 자료들을 토대로 만든
프랑켄슈타인코드이다. 멘토님에게도 별다른 코멘트 없이 통과가 되었고 지금 돌아보니 가장 기본적인 유닛테스트의 구조를 다 갖추고 있는것 같다. 하지만 아직 다루지 블로그에서 다루지 않은 patch와 mock이 등장한다.
class HostingViewTest(TransactionTestCase):
def setUp(self):
User.objects.create(
id = 1,
kakao_id = 1,
is_host = False,
is_adult = True,
email = 'plz8282@success.com',
nick_name = 'successboy',
birth_date = '2000-01-01'
)
StayType.objects.create(
id = 1,
name = '호텔'
)
Service.objects.create(
id = 1,
name = '조식'
)
Service.objects.create(
id = 2,
name = '일식'
)
Service.objects.create(
id = 3,
name = '양식'
)
Amenity.objects.create(
id = 1,
name = 'wifi'
)
Amenity.objects.create(
id = 2,
name = '드라이기'
)
Amenity.objects.create(
id = 3,
name = '커피포트'
)
Highlight.objects.create(
id = 1,
name = '스타일리쉬'
)
def tearDown(self):
User.objects.all().delete()
Stay.objects.all().delete()
StayType.objects.all().delete()
StayImage.objects.all().delete()
Service.objects.all().delete()
StayService.objects.all().delete()
Amenity.objects.all().delete()
StayAmenity.objects.all().delete()
Highlight.objects.all().delete()
StayHighlight.objects.all().delete()
@patch.object(HostingView, 'image_upload')
def test_hosting_success(self, mocked_image_upload):
mocked_image_upload.return_value = 'test uuid'
test_token = jwt.encode({'user_id' : 1}, settings.SECRET_KEY, settings.ALGORITHM)
test1 = SimpleUploadedFile(
name = 'test1.jpg',
content = b'file_content',
content_type= 'image/jpg'
)
test2 = SimpleUploadedFile(
name = 'test2.jpg',
content = b'file_content',
content_type= 'image/jpg'
)
test3 = SimpleUploadedFile(
name = 'test3.jpg',
content = b'file_content',
content_type= 'image/jpg'
)
headers = {'HTTP_Authorization': test_token, 'content-type' : 'multipart/form-data'}
body = {'title' : '테스트호텔',
'price' : '110000.00',
'bed' : 2,
'bedRoom' : 2,
'bathRoom' : 2,
'maxAdult' : 2,
'maxKid' : 2,
'maxPet' : 2,
'stayTypeID' : 1,
'description' : '세상에서 가장 따듯한 호텔',
'address' : '테스트 나라',
'latitude' : 11.0000011111222,
'longitude' : 11.0000011111222,
'services' : [1, 2, 3],
'amenties' : [1, 2, 3],
'highlights' : [1],
'image' : [test1, test2, test3]
}
response = client.post('/stays/hosting', body, **headers)
self.assertEqual(response.json(), {'message' : 'SUCCESS'})
self.assertEqual(response.status_code, 200)