diff --git a/pyschlage/api.py b/pyschlage/api.py index 0e08ebc..ae8b2d6 100644 --- a/pyschlage/api.py +++ b/pyschlage/api.py @@ -31,6 +31,7 @@ def locks(self) -> list[Lock]: for lock_json in response.json(): lock = Lock.from_json(self._auth, lock_json) lock.refresh_access_codes() + locks.append(lock) return locks def users(self) -> list[User]: diff --git a/tests/test_api.py b/tests/test_api.py new file mode 100644 index 0000000..f6514d1 --- /dev/null +++ b/tests/test_api.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +from unittest import mock + +from pyschlage import api + + +def test_locks(mock_auth: mock.Mock, lock_json: dict, access_code_json: dict) -> None: + schlage = api.Schlage(mock_auth) + mock_auth.request.side_effect = [ + mock.Mock(json=mock.Mock(return_value=[lock_json])), + mock.Mock(json=mock.Mock(return_value=[access_code_json])), + ] + locks = schlage.locks() + assert len(locks) == 1 + mock_auth.request.assert_has_calls( + [ + mock.call("get", "devices", params={"archetype": "lock"}), + mock.call("get", "devices/__wifi_uuid__/storage/accesscode"), + ] + ) + + +def test_users(mock_auth: mock.Mock, lock_users_json: list[dict]) -> None: + schlage = api.Schlage(mock_auth) + mock_auth.request.return_value = mock.Mock( + json=mock.Mock(return_value=lock_users_json) + ) + + users = schlage.users() + assert len(users) == 2 + mock_auth.request.assert_called_once_with("get", "users")