from typing import cast from django.test import TestCase from accounts.models import CustomUser from accounts.models.custom_user_manager import CustomUserManager class CustomUserManagerTestCase(TestCase): def setUp(self): self.user_manager: CustomUserManager = cast(CustomUserManager, CustomUser.objects) def test_create_user(self): user = self.user_manager.create_user( login_id="testuser", _email="test@example.com", password="password123" ) self.assertIsInstance(user, CustomUser) self.assertTrue(user.emails.filter(email="test@example.com").exists()) self.assertTrue(user.check_password("password123")) self.assertFalse(user.is_staff) self.assertFalse(user.is_superuser) def test_create_superuser(self): superuser = self.user_manager.create_superuser( login_id="admin", _email="admin@example.com", password="admin123" ) self.assertIsInstance(superuser, CustomUser) self.assertTrue(superuser.emails.filter(email="admin@example.com").exists()) self.assertTrue(superuser.check_password("admin123")) self.assertTrue(superuser.is_staff) self.assertTrue(superuser.is_superuser) def test_create_user_without_login_id(self): with self.assertRaises(ValueError): self.user_manager.create_user( login_id="", _email="user@example.com", password="password123" ) def test_create_user_without_email(self): with self.assertRaises(ValueError): self.user_manager.create_user(login_id="user123", _email="", password="password123") def test_create_superuser_is_staff_false(self): with self.assertRaises(ValueError): self.user_manager.create_superuser( login_id="admin", _email="admin@example.com", password="password123", is_staff=False ) def test_create_superuser_is_superuser_false(self): with self.assertRaises(ValueError): self.user_manager.create_superuser( login_id="admin", _email="admin@example.com", password="password123", is_superuser=False, )