# -*- coding: utf-8 -*-
"""Company home dashboard KPIs (require a running Odoo 17)."""
from odoo.tests import TransactionCase, tagged


@tagged("post_install", "-at_install")
class TestCompanyDashboard(TransactionCase):
    def _fresh_company(self, imdf=False):
        # a dedicated company so seeded demo orders never skew the assertions
        return self.env["res.company"].create({
            "name": "Dashboard Test Co",
            "currency_id": self.env.ref("base.TND").id,
            "nacef_imdf": imdf or False,
        })

    def test_dashboard_reflects_smdf_state(self):
        company = self._fresh_company(imdf="IMDFHOME")
        self.env["nacef.smdf.state"].get_or_create("IMDFHOME", company).write({
            "status": "SYNCHRONIZED", "connection_state": "Online",
            "available_offline_tickets": 42})
        dash = self.env["nacef.company.dashboard"].create(
            {"company_id": company.id})
        self.assertEqual(dash.imdf, "IMDFHOME")
        self.assertEqual(dash.smdf_status, "SYNCHRONIZED")
        self.assertTrue(dash.can_sign)
        self.assertEqual(dash.offline_tickets, 42)
        self.assertEqual(dash.today_sales, 0.0)   # fresh company, no orders
        self.assertTrue(dash.integrity_ok)         # empty chain is intact
        self.assertEqual(dash.currency_id, self.env.ref("base.TND"))

    def test_dashboard_without_imdf_is_safe(self):
        company = self._fresh_company(imdf=False)
        dash = self.env["nacef.company.dashboard"].create(
            {"company_id": company.id})
        self.assertEqual(dash.imdf, "")
        self.assertEqual(dash.smdf_status, "FACTORY")
        self.assertEqual(dash.today_count, 0)
