test: cover zone content kind lock and sequence groups
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
28
tests/test_sequence_zone_groups.py
Normal file
28
tests/test_sequence_zone_groups.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
"""Sequence playback targets only explicitly checked lane groups."""
|
||||||
|
|
||||||
|
from util.sequence_playback import (
|
||||||
|
_group_ids_for_lane_step,
|
||||||
|
_partition_devices_for_lane,
|
||||||
|
_resolve_step_device_names,
|
||||||
|
_split_device_names_for_lane,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_empty_lane_groups_do_not_default_to_zone():
|
||||||
|
zone = {"group_ids": ["g1", "g2"]}
|
||||||
|
seq = {"lanes": [[{"preset_id": "1", "beats": 1}]], "lanes_group_ids": [[]]}
|
||||||
|
gids = _group_ids_for_lane_step(seq, seq["lanes"][0][0], 0, 1, zone_doc=zone)
|
||||||
|
assert gids == []
|
||||||
|
|
||||||
|
|
||||||
|
def test_resolve_step_with_no_groups_returns_empty():
|
||||||
|
zone = {"group_ids": ["g1"], "names": ["dev-a"]}
|
||||||
|
names = _resolve_step_device_names(zone, [], None, None)
|
||||||
|
assert names == []
|
||||||
|
|
||||||
|
|
||||||
|
def test_whole_zone_not_partitioned_across_lanes():
|
||||||
|
names = ["dev-a", "dev-b", "dev-c"]
|
||||||
|
assert _split_device_names_for_lane(names, 0, 2, partition_shared_zone=False) == names
|
||||||
|
assert _split_device_names_for_lane(names, 1, 2, partition_shared_zone=False) == names
|
||||||
|
assert not _partition_devices_for_lane(2, lane_has_own_groups=False, step_group_ids=[])
|
||||||
27
tests/test_zone_content_kind.py
Normal file
27
tests/test_zone_content_kind.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
"""Zone content_kind is fixed after create."""
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||||
|
sys.path.insert(0, str(PROJECT_ROOT / "src"))
|
||||||
|
|
||||||
|
from models.zone import Zone # noqa: E402
|
||||||
|
|
||||||
|
|
||||||
|
def test_update_cannot_change_content_kind():
|
||||||
|
with tempfile.TemporaryDirectory() as tmp:
|
||||||
|
path = os.path.join(tmp, "zone.json")
|
||||||
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
|
json.dump({}, f)
|
||||||
|
z = Zone()
|
||||||
|
z.file = path
|
||||||
|
z.clear()
|
||||||
|
zid = z.create("preset zone", group_ids=[], content_kind="presets")
|
||||||
|
z.update(zid, {"content_kind": "sequences", "name": "preset zone"})
|
||||||
|
doc = z.read(zid)
|
||||||
|
assert doc["content_kind"] == "presets"
|
||||||
|
assert doc.get("sequence_ids") == []
|
||||||
Reference in New Issue
Block a user