Update docs and screenshots
CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s
CI / backend (pull_request) Canceled after 0s
CI / shell (pull_request) Canceled after 0s
CI / frontend (pull_request) Canceled after 0s
CI / arm64-smoke (pull_request) Canceled after 0s
CI / backend (push) Canceled after 0s
CI / shell (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / arm64-smoke (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
|
||||
from app.effects.service import EffectService
|
||||
from app.models.schemas import EffectPayload
|
||||
|
||||
|
||||
class FakeEngine:
|
||||
def __init__(self) -> None:
|
||||
self.layers: dict[str, object] = {}
|
||||
|
||||
def set_layer(self, layer) -> None: # type: ignore[no-untyped-def]
|
||||
self.layers[layer.name] = layer
|
||||
|
||||
def remove_layer(self, name: str) -> None:
|
||||
self.layers.pop(name, None)
|
||||
|
||||
|
||||
class FakeBpm:
|
||||
def __init__(self) -> None:
|
||||
self.current_bpm = 180.0
|
||||
self.audio_connected = False
|
||||
self.beat_counter = 0
|
||||
|
||||
|
||||
def test_beat_flash_effect_pulses_layer_from_bpm_clock() -> None:
|
||||
async def run_test() -> None:
|
||||
engine = FakeEngine()
|
||||
bpm = FakeBpm()
|
||||
service = EffectService(engine, bpm) # type: ignore[arg-type]
|
||||
payload = EffectPayload(
|
||||
name="Beat dimmer",
|
||||
slug="beat-dimmer",
|
||||
effect_type="beat-flash",
|
||||
priority=60,
|
||||
parameters={
|
||||
"duration_ms": 90,
|
||||
"channels": {"1": 255},
|
||||
"precedence": {"1": "htp"},
|
||||
},
|
||||
)
|
||||
|
||||
service.save(payload)
|
||||
service.trigger(payload.slug)
|
||||
await asyncio.sleep(0.03)
|
||||
assert "effect:beat-dimmer" in engine.layers
|
||||
|
||||
await asyncio.sleep(0.16)
|
||||
assert "effect:beat-dimmer" not in engine.layers
|
||||
|
||||
service.stop(payload.slug)
|
||||
await service.shutdown()
|
||||
|
||||
asyncio.run(run_test())
|
||||
Reference in New Issue
Block a user