from django.test import TestCase
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from user.models import User

class ArticleCreateTest(APITestCase):
    def setUp(self):
        # user_data 에는 로그인 시, access_token 과 refresh_token 을 받을 수 있음.
        # self.user_data).data['access'] 와 같은 방식으로 접근함.
        self.user_data = {'email':'[email protected]','account':'tester','username':'testuser','password':'popk1214',}
        # user.models.py 에 있는 create_user 함수로 유저를 생성함.
        self.user = User.objects.create_user('[email protected]','tester', 'testuser','popk1214')
        # title과 content로 게시글 데이터를 생성
        self.article_data = {'title':'some title', 'content':'some content'}
        # access_token 을 user_data 를 통해서 받아옴. 
        self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']

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

여기서 시작

from django.test import TestCase
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
from user.models import User

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

class ArticleCreateTest(APITestCase):
    @classmethod
    def setUpTestData(cls):
        cls.user_data = {'email':'[email protected]','account':'tester','username':'testuser','password':'popk1214',}
        cls.article_data = {'title':'some title', 'content':'some content'}
        cls.user = User.objects.create_user('[email protected]','tester', 'testuser','popk1214')
    
    """
    self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
    에서 access_token을 만들때 self.client 는 cls.client로 쓰면, 에러가 발생함. cls는 client라는 함수가 없기때문임.
    그래서 access_token은 따로 setUp 함수안에 작성해줘야 함
    """
    def setUp(self):
        self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']

    """
    def setUp(self):
        # user_data 에는 로그인 시, access_token 과 refresh_token 을 받을 수 있음.
        # self.user_data).data['access'] 와 같은 방식으로 접근함.
        self.user_data = {'email':'[email protected]','account':'tester','username':'testuser','password':'popk1214',}
        # user.models.py 에 있는 create_user 함수로 유저를 생성함.
        self.user = User.objects.create_user('[email protected]','tester', 'testuser','popk1214')
        # title과 content로 게시글 데이터를 생성
        self.article_data = {'title':'some title', 'content':'some content'}
        # access_token 을 user_data 를 통해서 받아옴. 
        self.access_token = self.client.post(reverse('token_obtain_pair'), self.user_data).data['access']
    """

13강 끝나고 난 후 강의 코드 필기.

classmethod 를 만들어두면, 코드가 간결해질 수 있다.

필요에 따라 staticmethod 를 쓸 수 있다면 너무 좋을 것이다.