deep copy zwave_js state in test fixtures so tests are more isolated (#46976)

This commit is contained in:
Raman Gupta 2021-02-23 18:58:25 -05:00 committed by GitHub
parent 1a99562e91
commit b657fd02cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,6 @@
"""Provide common Z-Wave JS fixtures."""
import asyncio
import copy
import json
from unittest.mock import AsyncMock, patch
@ -188,7 +189,7 @@ def mock_client_fixture(controller_state, version_state):
@pytest.fixture(name="multisensor_6")
def multisensor_6_fixture(client, multisensor_6_state):
"""Mock a multisensor 6 node."""
node = Node(client, multisensor_6_state)
node = Node(client, copy.deepcopy(multisensor_6_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -196,7 +197,7 @@ def multisensor_6_fixture(client, multisensor_6_state):
@pytest.fixture(name="ecolink_door_sensor")
def legacy_binary_sensor_fixture(client, ecolink_door_sensor_state):
"""Mock a legacy_binary_sensor node."""
node = Node(client, ecolink_door_sensor_state)
node = Node(client, copy.deepcopy(ecolink_door_sensor_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -204,7 +205,7 @@ def legacy_binary_sensor_fixture(client, ecolink_door_sensor_state):
@pytest.fixture(name="hank_binary_switch")
def hank_binary_switch_fixture(client, hank_binary_switch_state):
"""Mock a binary switch node."""
node = Node(client, hank_binary_switch_state)
node = Node(client, copy.deepcopy(hank_binary_switch_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -212,7 +213,7 @@ def hank_binary_switch_fixture(client, hank_binary_switch_state):
@pytest.fixture(name="bulb_6_multi_color")
def bulb_6_multi_color_fixture(client, bulb_6_multi_color_state):
"""Mock a bulb 6 multi-color node."""
node = Node(client, bulb_6_multi_color_state)
node = Node(client, copy.deepcopy(bulb_6_multi_color_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -220,7 +221,7 @@ def bulb_6_multi_color_fixture(client, bulb_6_multi_color_state):
@pytest.fixture(name="eaton_rf9640_dimmer")
def eaton_rf9640_dimmer_fixture(client, eaton_rf9640_dimmer_state):
"""Mock a Eaton RF9640 (V4 compatible) dimmer node."""
node = Node(client, eaton_rf9640_dimmer_state)
node = Node(client, copy.deepcopy(eaton_rf9640_dimmer_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -228,7 +229,7 @@ def eaton_rf9640_dimmer_fixture(client, eaton_rf9640_dimmer_state):
@pytest.fixture(name="lock_schlage_be469")
def lock_schlage_be469_fixture(client, lock_schlage_be469_state):
"""Mock a schlage lock node."""
node = Node(client, lock_schlage_be469_state)
node = Node(client, copy.deepcopy(lock_schlage_be469_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -236,7 +237,7 @@ def lock_schlage_be469_fixture(client, lock_schlage_be469_state):
@pytest.fixture(name="lock_august_pro")
def lock_august_asl03_fixture(client, lock_august_asl03_state):
"""Mock a August Pro lock node."""
node = Node(client, lock_august_asl03_state)
node = Node(client, copy.deepcopy(lock_august_asl03_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -246,7 +247,7 @@ def climate_radio_thermostat_ct100_plus_fixture(
client, climate_radio_thermostat_ct100_plus_state
):
"""Mock a climate radio thermostat ct100 plus node."""
node = Node(client, climate_radio_thermostat_ct100_plus_state)
node = Node(client, copy.deepcopy(climate_radio_thermostat_ct100_plus_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -256,7 +257,10 @@ def climate_radio_thermostat_ct100_plus_different_endpoints_fixture(
client, climate_radio_thermostat_ct100_plus_different_endpoints_state
):
"""Mock a climate radio thermostat ct100 plus node with values on different endpoints."""
node = Node(client, climate_radio_thermostat_ct100_plus_different_endpoints_state)
node = Node(
client,
copy.deepcopy(climate_radio_thermostat_ct100_plus_different_endpoints_state),
)
client.driver.controller.nodes[node.node_id] = node
return node
@ -264,7 +268,7 @@ def climate_radio_thermostat_ct100_plus_different_endpoints_fixture(
@pytest.fixture(name="climate_danfoss_lc_13")
def climate_danfoss_lc_13_fixture(client, climate_danfoss_lc_13_state):
"""Mock a climate radio danfoss LC-13 node."""
node = Node(client, climate_danfoss_lc_13_state)
node = Node(client, copy.deepcopy(climate_danfoss_lc_13_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -272,7 +276,7 @@ def climate_danfoss_lc_13_fixture(client, climate_danfoss_lc_13_state):
@pytest.fixture(name="climate_heatit_z_trm3")
def climate_heatit_z_trm3_fixture(client, climate_heatit_z_trm3_state):
"""Mock a climate radio HEATIT Z-TRM3 node."""
node = Node(client, climate_heatit_z_trm3_state)
node = Node(client, copy.deepcopy(climate_heatit_z_trm3_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -280,7 +284,7 @@ def climate_heatit_z_trm3_fixture(client, climate_heatit_z_trm3_state):
@pytest.fixture(name="nortek_thermostat")
def nortek_thermostat_fixture(client, nortek_thermostat_state):
"""Mock a nortek thermostat node."""
node = Node(client, nortek_thermostat_state)
node = Node(client, copy.deepcopy(nortek_thermostat_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -317,7 +321,7 @@ async def integration_fixture(hass, client):
@pytest.fixture(name="chain_actuator_zws12")
def window_cover_fixture(client, chain_actuator_zws12_state):
"""Mock a window cover node."""
node = Node(client, chain_actuator_zws12_state)
node = Node(client, copy.deepcopy(chain_actuator_zws12_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -325,7 +329,7 @@ def window_cover_fixture(client, chain_actuator_zws12_state):
@pytest.fixture(name="in_wall_smart_fan_control")
def in_wall_smart_fan_control_fixture(client, in_wall_smart_fan_control_state):
"""Mock a fan node."""
node = Node(client, in_wall_smart_fan_control_state)
node = Node(client, copy.deepcopy(in_wall_smart_fan_control_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -335,9 +339,9 @@ def multiple_devices_fixture(
client, climate_radio_thermostat_ct100_plus_state, lock_schlage_be469_state
):
"""Mock a client with multiple devices."""
node = Node(client, climate_radio_thermostat_ct100_plus_state)
node = Node(client, copy.deepcopy(climate_radio_thermostat_ct100_plus_state))
client.driver.controller.nodes[node.node_id] = node
node = Node(client, lock_schlage_be469_state)
node = Node(client, copy.deepcopy(lock_schlage_be469_state))
client.driver.controller.nodes[node.node_id] = node
return client.driver.controller.nodes
@ -345,7 +349,7 @@ def multiple_devices_fixture(
@pytest.fixture(name="gdc_zw062")
def motorized_barrier_cover_fixture(client, gdc_zw062_state):
"""Mock a motorized barrier node."""
node = Node(client, gdc_zw062_state)
node = Node(client, copy.deepcopy(gdc_zw062_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -353,7 +357,7 @@ def motorized_barrier_cover_fixture(client, gdc_zw062_state):
@pytest.fixture(name="iblinds_v2")
def iblinds_cover_fixture(client, iblinds_v2_state):
"""Mock an iBlinds v2.0 window cover node."""
node = Node(client, iblinds_v2_state)
node = Node(client, copy.deepcopy(iblinds_v2_state))
client.driver.controller.nodes[node.node_id] = node
return node
@ -361,6 +365,6 @@ def iblinds_cover_fixture(client, iblinds_v2_state):
@pytest.fixture(name="ge_12730")
def ge_12730_fixture(client, ge_12730_state):
"""Mock a GE 12730 fan controller node."""
node = Node(client, ge_12730_state)
node = Node(client, copy.deepcopy(ge_12730_state))
client.driver.controller.nodes[node.node_id] = node
return node