"""
Test models for wallet_utils testing.
"""
from django.db import models


class TestUser(models.Model):
    """Test user model with wallet balance fields."""
    
    username = models.CharField(max_length=150, unique=True)
    email = models.EmailField(blank=True)
    
    # Wallet balance fields (matching point types)
    credit_balance = models.DecimalField(max_digits=20, decimal_places=2, default=0)
    reward_points = models.DecimalField(max_digits=20, decimal_places=0, default=0)
    crypto_balance = models.DecimalField(max_digits=20, decimal_places=8, default=0)
    
    # Custom field name example
    points = models.DecimalField(max_digits=20, decimal_places=0, default=0)
    
    class Meta:
        db_table = 'test_users'
        app_label = 'tests'
    
    def __str__(self):
        return self.username


class TestWallet(models.Model):
    """Separate wallet model for testing."""
    
    user_id = models.BigIntegerField(unique=True, db_index=True)
    
    # Wallet balance fields
    credit_balance = models.DecimalField(max_digits=20, decimal_places=2, default=0)
    reward_points = models.DecimalField(max_digits=20, decimal_places=0, default=0)
    crypto_balance = models.DecimalField(max_digits=20, decimal_places=8, default=0)
    
    class Meta:
        db_table = 'test_wallets'
        app_label = 'tests'
    
    def __str__(self):
        return f"Wallet for user {self.user_id}"


class TestWalletCustomField(models.Model):
    """Wallet model with custom user_id field name."""
    
    owner_id = models.BigIntegerField(unique=True, db_index=True)
    
    credit_balance = models.DecimalField(max_digits=20, decimal_places=2, default=0)
    
    class Meta:
        db_table = 'test_wallets_custom_field'
        app_label = 'tests'
    
    def __str__(self):
        return f"Wallet for owner {self.owner_id}"
