api/writability: add unit test
This commit is contained in:
@@ -174,3 +174,36 @@ def test_set_machine_manage_tags(clan_flake: Callable[..., Flake]) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.with_core
|
||||||
|
def test_get_machine_writeability(clan_flake: Callable[..., Flake]) -> None:
|
||||||
|
flake = clan_flake(
|
||||||
|
clan={
|
||||||
|
"inventory": {
|
||||||
|
"machines": {
|
||||||
|
"jon": {
|
||||||
|
"machineClass": "nixos", # Static string is not writeable
|
||||||
|
"deploy": {}, # Empty dict is writeable
|
||||||
|
# TOOD: Return writability for existing items
|
||||||
|
"tags": ["nix1"], # Static list is not partially writeable
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
write_info = get_machine_writeability(Machine("jon", flake))
|
||||||
|
|
||||||
|
# {'tags': {'writable': True, 'reason': None}, 'machineClass': {'writable': False, 'reason': None}, 'name': {'writable': False, 'reason': None}, 'description': {'writable': True, 'reason': None}, 'deploy.buildHost': {'writable': True, 'reason': None}, 'icon': {'writable': True, 'reason': None}, 'deploy.targetHost': {'writable': True, 'reason': None}}
|
||||||
|
writeable_fields = {field for field, info in write_info.items() if info["writable"]}
|
||||||
|
read_only_fields = {
|
||||||
|
field for field, info in write_info.items() if not info["writable"]
|
||||||
|
}
|
||||||
|
|
||||||
|
assert writeable_fields == {
|
||||||
|
"tags",
|
||||||
|
"deploy.targetHost",
|
||||||
|
"deploy.buildHost",
|
||||||
|
"description",
|
||||||
|
"icon",
|
||||||
|
}
|
||||||
|
assert read_only_fields == {"machineClass", "name"}
|
||||||
|
|||||||
Reference in New Issue
Block a user