from django.test import TestCase

from misago.conf.models import Setting


class SettingModelTests(TestCase):
    def test_real_value(self):
        """setting returns real value correctyly"""
        setting_model = Setting(
            python_type='list',
            dry_value='',
        )
        self.assertEqual(setting_model.value, [])

        setting_model = Setting(
            python_type='list',
            dry_value='Arthur,Lancelot,Patsy',
        )
        self.assertEqual(setting_model.value, ['Arthur', 'Lancelot', 'Patsy'])

        setting_model = Setting(
            python_type='list',
            default_value='Arthur,Patsy',
        )
        self.assertEqual(setting_model.value, ['Arthur', 'Patsy'])

        setting_model = Setting(
            python_type='list',
            dry_value='Arthur,Robin,Patsy',
            default_value='Arthur,Patsy',
        )
        self.assertEqual(setting_model.value, ['Arthur', 'Robin', 'Patsy'])

    def test_set_value(self):
        """setting sets value correctyly"""
        setting_model = Setting(
            python_type='int',
            dry_value='42',
            default_value='9001',
        )

        setting_model.value = 3000
        self.assertEqual(setting_model.value, 3000)
        self.assertEqual(setting_model.dry_value, '3000')

        setting_model.value = None
        self.assertEqual(setting_model.value, 9001)
        self.assertEqual(setting_model.dry_value, None)

    def test_field_extra(self):
        """field extra is set correctly"""
        setting_model = Setting()

        test_extra = {}
        setting_model.field_extra = test_extra
        self.assertEqual(setting_model.field_extra, test_extra)

        test_extra = {'min_lenght': 5, 'max_length': 12}
        setting_model.field_extra = test_extra
        self.assertEqual(setting_model.field_extra, test_extra)