[django | validation] Build a Backend REST API - 10

Hyeseong·2021년 2월 26일
0

Add validation for email field🎆

wrting test code🧶

이메일 유효성 검사를 해볼건데요. 생성된 유저 객체를 호출할 때 작동하게 되요.

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)

writng models 🎄

create_user()

아래 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

create_superuser(self,email,password)

    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사인을 보여주는 걸 확인 할 수 있어요.

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글