Esempio n. 1
0
async def test_fan_speed(hass):
    """Test FanSpeed trait speed control support for fan domain."""
    assert helpers.get_google_type(fan.DOMAIN, None) is not None
    assert trait.FanSpeedTrait.supported(fan.DOMAIN, fan.SUPPORT_SET_SPEED,
                                         None)

    trt = trait.FanSpeedTrait(
        hass,
        State('fan.living_room_fan',
              fan.SPEED_HIGH,
              attributes={
                  'speed_list': [
                      fan.SPEED_OFF, fan.SPEED_LOW, fan.SPEED_MEDIUM,
                      fan.SPEED_HIGH
                  ],
                  'speed':
                  'low'
              }), BASIC_CONFIG)

    assert trt.sync_attributes() == {
        'availableFanSpeeds': {
            'ordered':
            True,
            'speeds': [{
                'speed_name':
                'off',
                'speed_values': [{
                    'speed_synonym': ['stop', 'off'],
                    'lang': 'en'
                }]
            }, {
                'speed_name':
                'low',
                'speed_values': [{
                    'speed_synonym': ['slow', 'low', 'slowest', 'lowest'],
                    'lang':
                    'en'
                }]
            }, {
                'speed_name':
                'medium',
                'speed_values': [{
                    'speed_synonym': ['medium', 'mid', 'middle'],
                    'lang': 'en'
                }]
            }, {
                'speed_name':
                'high',
                'speed_values': [{
                    'speed_synonym':
                    ['high', 'max', 'fast', 'highest', 'fastest', 'maximum'],
                    'lang':
                    'en'
                }]
            }]
        },
        'reversible': False
    }

    assert trt.query_attributes() == {
        'currentFanSpeedSetting': 'low',
        'on': True,
        'online': True
    }

    assert trt.can_execute(trait.COMMAND_FANSPEED,
                           params={'fanSpeed': 'medium'})

    calls = async_mock_service(hass, fan.DOMAIN, fan.SERVICE_SET_SPEED)
    await trt.execute(trait.COMMAND_FANSPEED, BASIC_DATA,
                      {'fanSpeed': 'medium'}, {})

    assert len(calls) == 1
    assert calls[0].data == {
        'entity_id': 'fan.living_room_fan',
        'speed': 'medium'
    }
Esempio n. 2
0
async def test_fan_speed(hass):
    """Test FanSpeed trait speed control support for fan domain."""
    assert helpers.get_google_type(fan.DOMAIN, None) is not None
    assert trait.FanSpeedTrait.supported(fan.DOMAIN, fan.SUPPORT_SET_SPEED,
                                         None)

    trt = trait.FanSpeedTrait(
        hass,
        State(
            "fan.living_room_fan",
            fan.SPEED_HIGH,
            attributes={
                "speed_list": [
                    fan.SPEED_OFF,
                    fan.SPEED_LOW,
                    fan.SPEED_MEDIUM,
                    fan.SPEED_HIGH,
                ],
                "speed":
                "low",
            },
        ),
        BASIC_CONFIG,
    )

    assert trt.sync_attributes() == {
        "availableFanSpeeds": {
            "ordered":
            True,
            "speeds": [
                {
                    "speed_name":
                    "off",
                    "speed_values": [{
                        "speed_synonym": ["stop", "off"],
                        "lang": "en"
                    }],
                },
                {
                    "speed_name":
                    "low",
                    "speed_values": [{
                        "speed_synonym": ["slow", "low", "slowest", "lowest"],
                        "lang":
                        "en",
                    }],
                },
                {
                    "speed_name":
                    "medium",
                    "speed_values": [{
                        "speed_synonym": ["medium", "mid", "middle"],
                        "lang":
                        "en"
                    }],
                },
                {
                    "speed_name":
                    "high",
                    "speed_values": [{
                        "speed_synonym": [
                            "high",
                            "max",
                            "fast",
                            "highest",
                            "fastest",
                            "maximum",
                        ],
                        "lang":
                        "en",
                    }],
                },
            ],
        },
        "reversible": False,
    }

    assert trt.query_attributes() == {
        "currentFanSpeedSetting": "low",
        "on": True,
        "online": True,
    }

    assert trt.can_execute(trait.COMMAND_FANSPEED,
                           params={"fanSpeed": "medium"})

    calls = async_mock_service(hass, fan.DOMAIN, fan.SERVICE_SET_SPEED)
    await trt.execute(trait.COMMAND_FANSPEED, BASIC_DATA,
                      {"fanSpeed": "medium"}, {})

    assert len(calls) == 1
    assert calls[0].data == {
        "entity_id": "fan.living_room_fan",
        "speed": "medium"
    }