83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
"""Test Z-Wave switches."""
 | 
						|
from unittest.mock import patch
 | 
						|
 | 
						|
from homeassistant.components.switch import zwave
 | 
						|
 | 
						|
from tests.mock.zwave import (
 | 
						|
    MockNode, MockValue, MockEntityValues, value_changed)
 | 
						|
 | 
						|
 | 
						|
def test_get_device_detects_switch(mock_openzwave):
 | 
						|
    """Test get_device returns a Z-Wave switch."""
 | 
						|
    node = MockNode()
 | 
						|
    value = MockValue(data=0, node=node)
 | 
						|
    values = MockEntityValues(primary=value)
 | 
						|
 | 
						|
    device = zwave.get_device(node=node, values=values, node_config={})
 | 
						|
    assert isinstance(device, zwave.ZwaveSwitch)
 | 
						|
 | 
						|
 | 
						|
def test_switch_turn_on_and_off(mock_openzwave):
 | 
						|
    """Test turning on a Z-Wave switch."""
 | 
						|
    node = MockNode()
 | 
						|
    value = MockValue(data=0, node=node)
 | 
						|
    values = MockEntityValues(primary=value)
 | 
						|
    device = zwave.get_device(node=node, values=values, node_config={})
 | 
						|
 | 
						|
    device.turn_on()
 | 
						|
 | 
						|
    assert node.set_switch.called
 | 
						|
    value_id, state = node.set_switch.mock_calls[0][1]
 | 
						|
    assert value_id == value.value_id
 | 
						|
    assert state is True
 | 
						|
    node.reset_mock()
 | 
						|
 | 
						|
    device.turn_off()
 | 
						|
 | 
						|
    assert node.set_switch.called
 | 
						|
    value_id, state = node.set_switch.mock_calls[0][1]
 | 
						|
    assert value_id == value.value_id
 | 
						|
    assert state is False
 | 
						|
 | 
						|
 | 
						|
def test_switch_value_changed(mock_openzwave):
 | 
						|
    """Test value changed for Z-Wave switch."""
 | 
						|
    node = MockNode()
 | 
						|
    value = MockValue(data=False, node=node)
 | 
						|
    values = MockEntityValues(primary=value)
 | 
						|
    device = zwave.get_device(node=node, values=values, node_config={})
 | 
						|
 | 
						|
    assert not device.is_on
 | 
						|
 | 
						|
    value.data = True
 | 
						|
    value_changed(value)
 | 
						|
 | 
						|
    assert device.is_on
 | 
						|
 | 
						|
 | 
						|
@patch('time.perf_counter')
 | 
						|
def test_switch_refresh_on_update(mock_counter, mock_openzwave):
 | 
						|
    """Test value changed for refresh on update Z-Wave switch."""
 | 
						|
    mock_counter.return_value = 10
 | 
						|
    node = MockNode(manufacturer_id='013c', product_type='0001',
 | 
						|
                    product_id='0005')
 | 
						|
    value = MockValue(data=False, node=node, instance=1)
 | 
						|
    values = MockEntityValues(primary=value)
 | 
						|
    device = zwave.get_device(node=node, values=values, node_config={})
 | 
						|
 | 
						|
    assert not device.is_on
 | 
						|
 | 
						|
    mock_counter.return_value = 15
 | 
						|
    value.data = True
 | 
						|
    value_changed(value)
 | 
						|
 | 
						|
    assert device.is_on
 | 
						|
    assert not node.request_state.called
 | 
						|
 | 
						|
    mock_counter.return_value = 45
 | 
						|
    value.data = False
 | 
						|
    value_changed(value)
 | 
						|
 | 
						|
    assert not device.is_on
 | 
						|
    assert node.request_state.called
 |