이메일 유효성 검사를 해볼건데요. 생성된 유저 객체를 호출할 때 작동하게 되요.
email이 입력되지 않으면 Value에러를 발생시켜야하는데~ 이를 테스트해볼게요.
아래와 같이 메소드 하나를 추가로 작성해볼게요.
core/tests/test_models.py
...
...
def test_new_user_invalid_email(self):
"""Test creating user with no email raises error"""
with self.assertRaises(ValueError): # value 에러를 발생시키지 않으면 테스트가 fail나요.
get_user_model().objects.create_user(None, 'test123')
def test_create_new_superuser(self):
"""Test creating a new superuser"""
user = get_user_model().objects.create_superuser(
'test@gmail.com',
'test123'
)
self.assertTrue(user.is_superuser)
self.assertTrue(user.is_staff)
아래 2줄을 core/models.py
파일의 User
클래스 안에 추가 하도록 할게요.
if not email:
raise ValueError('Users must have an email address')
변경 후
def create_user(self, email, password=None, **extra_fields):
'''Creates and saves a new user '''
if not email:
raise ValueError('Users must have an email address')
user = self.model(email=self.normalize_email(email), **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
'''Creates and saves a new super user '''
user = self.create(email=self.email, password)
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
테스트 명령을 잠깐 돌리기 전에
admin.py
파일에서 가장 위의 import된 부분을 주석처리하고 돌려주면 이제 테스트가 성공적으로 OK사인을 보여주는 걸 확인 할 수 있어요.