test(services): missing info on service enabled status returns False

remove-rest
Houkime 2023-11-22 16:51:07 +00:00
parent bcf57ea738
commit 9d3fd45c2c
2 changed files with 25 additions and 1 deletions

View File

@ -128,7 +128,12 @@ class Service(ABC):
@classmethod
def is_enabled(cls) -> bool:
"""`True` if the service is enabled."""
"""
`True` if the service is enabled.
`False` if it is not enabled or not defined in file
If there is nothing in the file, this is equivalent to False
because NixOS won't enable it then.
"""
name = cls.get_id()
with ReadUserData() as user_data:
return user_data.get(name, {}).get("enable", False)

View File

@ -557,6 +557,25 @@ def possibly_dubiously_enabled_service(
return dummy_service
# Yeah, idk yet how to dry it.
@pytest.fixture(params=["deleted_attribute", "service_not_in_json"])
def undefined_enabledness_service(dummy_service: DummyService, request) -> DummyService:
if request.param == "deleted_attribute":
with WriteUserData() as data:
del data[dummy_service.get_id()]["enable"]
if request.param == "service_not_in_json":
with WriteUserData() as data:
del data[dummy_service.get_id()]
return dummy_service
def test_undefined_enabledness_in_json_means_False(
undefined_enabledness_service: DummyService,
):
dummy_service = undefined_enabledness_service
assert dummy_service.is_enabled() is False
def test_enabling_disabling_writes_json(
possibly_dubiously_enabled_service: DummyService,
):