# (c) cavaliba.com - tests / ipam_subnet & ipam_vlan hook headers popover

from django.test import TestCase, override_settings
from django.urls import reverse

import app_home.cache as cache
from tests import helper


class TestIpamSubnetHookColumnPopover(TestCase):
    def setUp(self):
        cache.clear()
        helper.add_admin_user(login="unittest")
        helper.add_instance(
            classname="ipam_subnet",
            keyname="203.0.10.0/24",
            fields={"description": "popover test subnet"},
        )

    @override_settings(CAVALIBA_AUTH_MODE="unittest")
    def test_real_field_columns_have_popover(self):
        response = self.client.get(
            reverse("app_data:instance_list", kwargs={"classname": "ipam_subnet"})
        )
        content = response.content.decode()
        self.assertIn("Field:</b> keyname", content)
        self.assertIn("Field:</b> description", content)

    @override_settings(CAVALIBA_AUTH_MODE="unittest")
    def test_computed_columns_have_no_popover(self):
        response = self.client.get(
            reverse("app_data:instance_list", kwargs={"classname": "ipam_subnet"})
        )
        content = response.content.decode()
        for fieldname in ("size", "used", "percent", "occupancy", "vlan"):
            self.assertNotIn(f"Field:</b> {fieldname}", content)


class TestIpamVlanHookColumnPopover(TestCase):
    def setUp(self):
        cache.clear()
        helper.add_admin_user(login="unittest")
        helper.add_instance(
            classname="ipam_subnet",
            keyname="203.0.11.0/28",
            fields={"description": "popover test subnet"},
        )
        helper.add_instance(
            classname="ipam_vlan",
            keyname="vlan-popover",
            fields={
                "displayname": "VLAN popover",
                "vlan_id": 42,
                "subnet": ["203.0.11.0/28"],
                "description": "popover test vlan",
            },
        )

    @override_settings(CAVALIBA_AUTH_MODE="unittest")
    def test_real_field_columns_have_popover(self):
        response = self.client.get(
            reverse("app_data:instance_list", kwargs={"classname": "ipam_vlan"})
        )
        content = response.content.decode()
        self.assertIn("Field:</b> keyname", content)
        self.assertIn("Field:</b> displayname", content)
        self.assertIn("Field:</b> description", content)
        self.assertIn("Field:</b> vlan_id", content)
        self.assertIn("Field:</b> subnet", content)

    @override_settings(CAVALIBA_AUTH_MODE="unittest")
    def test_computed_columns_have_no_popover(self):
        response = self.client.get(
            reverse("app_data:instance_list", kwargs={"classname": "ipam_vlan"})
        )
        content = response.content.decode()
        for fieldname in ("size", "used", "percent", "occupancy"):
            self.assertNotIn(f"Field:</b> {fieldname}", content)
