from decimal import Decimal
from django.core.exceptions import ValidationError
from django.test import SimpleTestCase

from apps.payroll.services import _safe_formula


class PayrollFormulaContractTests(SimpleTestCase):
    def test_formula_supports_basic_and_gross(self):
        result = _safe_formula('basic * 0.5 + gross * 0.1', basic=Decimal('20000'), gross=Decimal('40000'))
        self.assertEqual(result, Decimal('14000.0'))

    def test_formula_rejects_function_calls(self):
        with self.assertRaises(ValidationError):
            _safe_formula("__import__('os').system('echo unsafe')", basic=Decimal('1'), gross=Decimal('1'))
