# Path: brasilcomvc/accounts/models.py
# class User(AbstractBaseUser, PermissionsMixin):
# 
#     # Personal Info
#     email = models.EmailField(unique=True)
#     full_name = models.CharField('Nome Completo', max_length=255)
#     username = models.SlugField(max_length=30, null=True, blank=True)
#     picture = ProcessedImageField(
#         null=True, blank=True,
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(256, 256)],
#         upload_to=user_picture_upload_to)
#     picture_medium = ImageSpecField(
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(128, 128)],
#         source='picture')
#     picture_small = ImageSpecField(
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(50, 50)],
#         source='picture')
# 
#     # Professional Info
#     job_title = models.CharField(max_length=80, null=True, blank=True)
#     bio = models.TextField(null=True, blank=True)
# 
#     # Status
#     date_joined = models.DateTimeField(auto_now_add=True)
#     date_updated = models.DateTimeField(auto_now=True)
#     is_active = models.BooleanField(editable=False, default=True)
#     is_staff = models.BooleanField(editable=False, default=False)
# 
#     # Notifications
#     email_newsletter = models.BooleanField(default=True)
# 
#     # Verbose names
#     email.verbose_name = 'e-mail'
#     full_name.verbose_name = 'nome completo'
#     username.verbose_name = 'nome de usuário'
#     picture.verbose_name = 'foto do usuário'
#     job_title.verbose_name = 'profissão'
#     bio.verbose_name = 'biografia'
# 
#     USERNAME_FIELD = 'email'
#     REQUIRED_FIELDS = ('full_name',)
# 
#     objects = UserManager()
# 
#     class Meta:
#         verbose_name = 'usuário'
# 
#     def get_short_name(self):
#         return self.full_name.split()[0] if self.full_name else ''
# 
#     def get_full_name(self):
#         return self.full_name
# 
#     def send_welcome_email(self):
#         send_template_email(
#             subject='Bem vindo!',
#             to=self.email,
#             template_name='emails/welcome.html',
#             context={'user': self})
# 
# def user_picture_upload_to(instance, filename):
#     return 'users/{}/picture.jpg'.format(instance.pk)


from django.test import TestCase
from ..models import User, user_picture_upload_to



class UserManagerTestCase(TestCase):

    _user_data = {
        'email': 'test@example.com',
        'password': '123',
        'full_name': 'Test User',
    }

    def test_create_user(self):
        data = self._user_data.copy()
        self.assertFalse(User.objects.exists())
        User.objects.create_user(**data)
        raw_pwd = data.pop('password')
        self.assertTrue(User.objects.filter(**data).exists())
        user = User.objects.all()[0]
        self.assertTrue(user.check_password(raw_pwd))

    def test_create_superuser(self):

# Path: brasilcomvc/accounts/models.py
# class User(AbstractBaseUser, PermissionsMixin):
# 
#     # Personal Info
#     email = models.EmailField(unique=True)
#     full_name = models.CharField('Nome Completo', max_length=255)
#     username = models.SlugField(max_length=30, null=True, blank=True)
#     picture = ProcessedImageField(
#         null=True, blank=True,
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(256, 256)],
#         upload_to=user_picture_upload_to)
#     picture_medium = ImageSpecField(
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(128, 128)],
#         source='picture')
#     picture_small = ImageSpecField(
#         format='JPEG',
#         options={'quality': 80},
#         processors=[ResizeToFill(50, 50)],
#         source='picture')
# 
#     # Professional Info
#     job_title = models.CharField(max_length=80, null=True, blank=True)
#     bio = models.TextField(null=True, blank=True)
# 
#     # Status
#     date_joined = models.DateTimeField(auto_now_add=True)
#     date_updated = models.DateTimeField(auto_now=True)
#     is_active = models.BooleanField(editable=False, default=True)
#     is_staff = models.BooleanField(editable=False, default=False)
# 
#     # Notifications
#     email_newsletter = models.BooleanField(default=True)
# 
#     # Verbose names
#     email.verbose_name = 'e-mail'
#     full_name.verbose_name = 'nome completo'
#     username.verbose_name = 'nome de usuário'
#     picture.verbose_name = 'foto do usuário'
#     job_title.verbose_name = 'profissão'
#     bio.verbose_name = 'biografia'
# 
#     USERNAME_FIELD = 'email'
#     REQUIRED_FIELDS = ('full_name',)
# 
#     objects = UserManager()
# 
#     class Meta:
#         verbose_name = 'usuário'
# 
#     def get_short_name(self):
#         return self.full_name.split()[0] if self.full_name else ''
# 
#     def get_full_name(self):
#         return self.full_name
# 
#     def send_welcome_email(self):
#         send_template_email(
#             subject='Bem vindo!',
#             to=self.email,
#             template_name='emails/welcome.html',
#             context={'user': self})
# 
# def user_picture_upload_to(instance, filename):
#     return 'users/{}/picture.jpg'.format(instance.pk)


# Path: brasilcomvc/accounts/tests/test_models.py
from django.test import TestCase
from ..models import User, user_picture_upload_to




class UserManagerTestCase(TestCase):

    _user_data = {
        'email': 'test@example.com',
        'password': '123',
        'full_name': 'Test User',
    }

    def test_create_user(self):
        data = self._user_data.copy()
        self.assertFalse(User.objects.exists())
        User.objects.create_user(**data)
        raw_pwd = data.pop('password')
        self.assertTrue(User.objects.filter(**data).exists())
        user = User.objects.all()[0]
        self.assertTrue(user.check_password(raw_pwd))

    def test_create_superuser(self):

        User.objects.create_superuser(**self._user_data)