diff --git a/pyproject.toml b/pyproject.toml index f7d64e6..dd2e654 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ path = "src/slobs_cli/__about__.py" cli.cmd = "slobs-cli {args}" cli.env_file = ".env" +pre_test.cmd = "python tests/setup.py" test.cmd = "pytest {args}" test.env_file = ".env" post_test.cmd = "python tests/teardown.py" diff --git a/tests/setup.py b/tests/setup.py new file mode 100644 index 0000000..8a54bd8 --- /dev/null +++ b/tests/setup.py @@ -0,0 +1,32 @@ +import os + +import anyio +from anyio import create_task_group +from pyslobs import ConnectionConfig, ScenesService, SlobsConnection + + +async def setup(conn: SlobsConnection): + ss = ScenesService(conn) + await ss.create_scene("slobs-test-scene-1") + await ss.create_scene("slobs-test-scene-2") + await ss.create_scene("slobs-test-scene-3") + + conn.close() + + +async def main(): + conn = SlobsConnection( + ConnectionConfig( + domain=os.environ["SLOBS_DOMAIN"], + port=59650, + token=os.environ["SLOBS_TOKEN"], + ) + ) + + async with create_task_group() as tg: + tg.start_soon(conn.background_processing) + tg.start_soon(setup, conn) + + +if __name__ == "__main__": + anyio.run(main) diff --git a/tests/teardown.py b/tests/teardown.py index ba6f72a..1fcf2f9 100644 --- a/tests/teardown.py +++ b/tests/teardown.py @@ -2,10 +2,16 @@ import os import anyio from anyio import create_task_group -from pyslobs import ConnectionConfig, SlobsConnection, StreamingService +from pyslobs import ConnectionConfig, ScenesService, SlobsConnection, StreamingService async def cleanup(conn: SlobsConnection): + ss = ScenesService(conn) + scenes = await ss.get_scenes() + for scene in scenes: + if scene.name.startswith("slobs-test-scene-"): + await ss.remove_scene(scene.id) + ss = StreamingService(conn) current_state = await ss.get_model() if current_state.streaming_status != "offline":