aboutsummaryrefslogtreecommitdiffstats
path: root/cli-project/test/solo_tool_cli_integrationtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'cli-project/test/solo_tool_cli_integrationtest.py')
-rw-r--r--cli-project/test/solo_tool_cli_integrationtest.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/cli-project/test/solo_tool_cli_integrationtest.py b/cli-project/test/solo_tool_cli_integrationtest.py
new file mode 100644
index 0000000..c29a223
--- /dev/null
+++ b/cli-project/test/solo_tool_cli_integrationtest.py
@@ -0,0 +1,41 @@
+import pytest
+import io
+from contextlib import redirect_stdout
+
+from solo_tool_cli import SoloToolCLI
+from solo_tool import SoloTool
+
+class MockMidiController:
+ def __init__(self, soloTool):
+ self.connected = False
+
+ def connect(self):
+ self.connected = True
+
+@pytest.fixture
+def soloTool():
+ return SoloTool()
+
+@pytest.fixture
+def mockMidi(soloTool):
+ return MockMidiController(soloTool)
+
+@pytest.fixture
+def uut(soloTool, mockMidi):
+ return SoloToolCLI("test_session.json", soloToolOverride=soloTool, midiOverride=mockMidi, tickEnable=False)
+
+def test_connectMidi(uut, mockMidi):
+ expectedOutput = """\
+Supported device: Novation Launchpad Mini MkII
+Connecting to MIDI device...
+"""
+
+ with io.StringIO() as buf, redirect_stdout(buf):
+ uut.input("midi")
+ assert not mockMidi.connected
+
+ uut.input("midi connect")
+ assert mockMidi.connected
+
+ assert buf.getvalue() == expectedOutput
+