# -*- coding: utf-8 -*-
from odoo.tests.common import TransactionCase


class TestHgTemplates(TransactionCase):

    def setUp(self):
        super().setUp()
        self.code = self.env['hg.index.code'].create({'name': 'Код шаблона'})
        self.index = self.env['hg.index'].create({
            'name': 'Показатель шаблона',
            'internal_code_id': self.code.id,
        })
        self.template = self.env['hg.templates'].create({'name': 'Тестовый шаблон'})

    def test_template_create(self):
        self.assertEqual(self.template.name, 'Тестовый шаблон')
        self.assertFalse(self.template.line_ids)

    def test_add_line_to_template(self):
        line = self.env['hg.templates.line'].create({
            'template_id': self.template.id,
            'index_id': self.index.id,
            'date_due': '2025-03-31',
            'value_float_plan': 250000.0,
        })
        self.assertIn(line, self.template.line_ids)
        self.assertEqual(line.value_float_plan, 250000.0)
        self.assertEqual(line.index_id, self.index)

    def test_multiple_lines(self):
        index2 = self.env['hg.index'].create({'name': 'Второй показатель'})
        self.env['hg.templates.line'].create({
            'template_id': self.template.id,
            'index_id': self.index.id,
            'date_due': '2025-01-31',
            'value_float_plan': 100000.0,
        })
        self.env['hg.templates.line'].create({
            'template_id': self.template.id,
            'index_id': index2.id,
            'date_due': '2025-02-28',
            'value_float_plan': 200000.0,
        })
        self.assertEqual(len(self.template.line_ids), 2)

    def test_line_cascade_delete(self):
        line = self.env['hg.templates.line'].create({
            'template_id': self.template.id,
            'index_id': self.index.id,
            'date_due': '2025-01-31',
            'value_float_plan': 50000.0,
        })
        line_id = line.id
        self.template.unlink()
        self.assertFalse(self.env['hg.templates.line'].browse(line_id).exists())
