"""Tests for smartcam pet detection module."""

from __future__ import annotations

from kasa import Device
from kasa.smartcam.smartcammodule import SmartCamModule

from ...device_fixtures import parametrize

petdetection = parametrize(
    "has pet detection",
    component_filter="petDetection",
    protocol_filter={"SMARTCAM"},
)


@petdetection
async def test_petdetection(dev: Device):
    """Test device pet detection."""
    pet = dev.modules.get(SmartCamModule.SmartCamPetDetection)
    assert pet

    pde_feat = dev.features.get("pet_detection")
    assert pde_feat

    original_enabled = pet.enabled

    try:
        await pet.set_enabled(not original_enabled)
        await dev.update()
        assert pet.enabled is not original_enabled
        assert pde_feat.value is not original_enabled

        await pet.set_enabled(original_enabled)
        await dev.update()
        assert pet.enabled is original_enabled
        assert pde_feat.value is original_enabled

        await pde_feat.set_value(not original_enabled)
        await dev.update()
        assert pet.enabled is not original_enabled
        assert pde_feat.value is not original_enabled

    finally:
        await pet.set_enabled(original_enabled)