Skip to content

Commit 8022374

Browse files
PR discussions
1 parent b303430 commit 8022374

File tree

2 files changed

+41
-42
lines changed

2 files changed

+41
-42
lines changed

drivers/SmartThings/zigbee-lock/src/init.lua

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,14 +300,13 @@ local migrate = function(driver, device, command)
300300
local ordered_codes = {}
301301

302302
for code in pairs(lock_codes) do
303-
table.insert(ordered_codes, code)
303+
table.insert(ordered_codes, code)
304304
end
305305

306306
table.sort(ordered_codes)
307-
for index = 1, #ordered_codes do
308-
local code_slot, code_name = ordered_codes[index], lock_codes[ ordered_codes[index] ]
309-
table.insert(lock_users, {userIndex = index, userType = "guest", userName = code_name})
310-
table.insert(lock_credentials, {userIndex = index, credentialIndex = tonumber(code_slot), credentialType = "pin"})
307+
for index, code_slot in ipairs(ordered_codes) do
308+
table.insert(lock_users, {userIndex = index, userType = "guest", userName = lock_codes[code_slot]})
309+
table.insert(lock_credentials, {userIndex = index, credentialIndex = tonumber(code_slot), credentialType = "pin"})
311310
end
312311

313312
local code_length = device:get_latest_state("main", capabilities.lockCodes.ID, capabilities.lockCodes.codeLength.NAME)

drivers/SmartThings/zigbee-lock/src/test/test_zigbee_lock_code_slga_migration.lua

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -47,45 +47,45 @@ test.set_test_init_function(test_init)
4747
test.register_coroutine_test(
4848
"Device called 'migrate' command",
4949
function()
50-
test.mock_device.add_test_device(mock_device)
51-
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
52-
test.socket.zigbee:__expect_send({ mock_device.id, PowerConfiguration.attributes.BatteryPercentageRemaining:read(mock_device) })
53-
test.socket.zigbee:__expect_send({ mock_device.id, DoorLock.attributes.LockState:read(mock_device) })
54-
test.socket.zigbee:__expect_send({ mock_device.id, Alarm.attributes.AlarmCount:read(mock_device) })
55-
test.wait_for_events()
56-
-- Validate lockCodes field
57-
mock_datastore.__assert_device_store_contains(mock_device.id, "lockCodes", { ["1"] = "Zach", ["2"] = "Steven" })
58-
-- Validate state cache
59-
mock_datastore.__assert_device_store_contains(mock_device.id, "__state_cache",
60-
{
61-
main = {
62-
lockCodes = {
63-
lockCodes = {value = json.encode({ ["1"] = "Zach", ["2"] = "Steven" }) }
64-
}
65-
}
50+
test.mock_device.add_test_device(mock_device)
51+
test.socket.device_lifecycle:__queue_receive({ mock_device.id, "added" })
52+
test.socket.zigbee:__expect_send({ mock_device.id, PowerConfiguration.attributes.BatteryPercentageRemaining:read(mock_device) })
53+
test.socket.zigbee:__expect_send({ mock_device.id, DoorLock.attributes.LockState:read(mock_device) })
54+
test.socket.zigbee:__expect_send({ mock_device.id, Alarm.attributes.AlarmCount:read(mock_device) })
55+
test.wait_for_events()
56+
-- Validate lockCodes field
57+
mock_datastore.__assert_device_store_contains(mock_device.id, "lockCodes", { ["1"] = "Zach", ["2"] = "Steven" })
58+
-- Validate state cache
59+
mock_datastore.__assert_device_store_contains(mock_device.id, "__state_cache",
60+
{
61+
main = {
62+
lockCodes = {
63+
lockCodes = {value = json.encode({ ["1"] = "Zach", ["2"] = "Steven" }) }
6664
}
67-
)
68-
-- Validate migration complete flag
69-
mock_datastore.__assert_device_store_contains(mock_device.id, "migrationComplete", true)
65+
}
66+
}
67+
)
68+
-- Validate migration complete flag
69+
mock_datastore.__assert_device_store_contains(mock_device.id, "migrationComplete", true)
7070

71-
-- Set min/max code length attributes
72-
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.MinPINCodeLength:build_test_attr_report(mock_device, 5) })
73-
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.MaxPINCodeLength:build_test_attr_report(mock_device, 10) })
74-
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.NumberOfPINUsersSupported:build_test_attr_report(mock_device, 4) })
75-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.minCodeLength(5, { visibility = { displayed = false } })))
76-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.maxCodeLength(10, { visibility = { displayed = false } })))
77-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.maxCodes(4, { visibility = { displayed = false } })))
78-
79-
-- Validate `migrate` command functionality.
80-
test.socket.capability:__queue_receive({ mock_device.id, { capability = capabilities.lockCodes.ID, command = "migrate", args = {} } })
81-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.minPinCodeLen(5, { visibility = { displayed = false } })))
82-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.maxPinCodeLen(10, { visibility = { displayed = false } })))
83-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.pinUsersSupported(4, { visibility = { displayed = false } })))
84-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.credentials({{credentialIndex=1, credentialType="pin", userIndex=1}, {credentialIndex=2, credentialType="pin", userIndex=2}}, { visibility = { displayed = false } })))
85-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.supportedCredentials({"pin"}, { visibility = { displayed = false } })))
86-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockUsers.users({{userIndex=1, userName="Zach", userType="guest"}, {userIndex=2, userName="Steven", userType="guest"}}, { visibility = { displayed = false } })))
87-
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.migrated(true, { visibility = { displayed = false } })))
88-
test.wait_for_events()
71+
-- Set min/max code length attributes
72+
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.MinPINCodeLength:build_test_attr_report(mock_device, 5) })
73+
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.MaxPINCodeLength:build_test_attr_report(mock_device, 10) })
74+
test.socket.zigbee:__queue_receive({ mock_device.id, DoorLock.attributes.NumberOfPINUsersSupported:build_test_attr_report(mock_device, 4) })
75+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.minCodeLength(5, { visibility = { displayed = false } })))
76+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.maxCodeLength(10, { visibility = { displayed = false } })))
77+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.maxCodes(4, { visibility = { displayed = false } })))
78+
test.wait_for_events()
79+
-- Validate `migrate` command functionality.
80+
test.socket.capability:__queue_receive({ mock_device.id, { capability = capabilities.lockCodes.ID, command = "migrate", args = {} } })
81+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.minPinCodeLen(5, { visibility = { displayed = false } })))
82+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.maxPinCodeLen(10, { visibility = { displayed = false } })))
83+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.pinUsersSupported(4, { visibility = { displayed = false } })))
84+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.credentials({{credentialIndex=1, credentialType="pin", userIndex=1}, {credentialIndex=2, credentialType="pin", userIndex=2}}, { visibility = { displayed = false } })))
85+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCredentials.supportedCredentials({"pin"}, { visibility = { displayed = false } })))
86+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockUsers.users({{userIndex=1, userName="Zach", userType="guest"}, {userIndex=2, userName="Steven", userType="guest"}}, { visibility = { displayed = false } })))
87+
test.socket.capability:__expect_send( mock_device:generate_test_message("main", capabilities.lockCodes.migrated(true, { visibility = { displayed = false } })))
88+
test.wait_for_events()
8989
end
9090
)
9191

0 commit comments

Comments
 (0)