aboutsummaryrefslogtreecommitdiffstats
path: root/solo_tool_cli_integrationtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'solo_tool_cli_integrationtest.py')
-rw-r--r--solo_tool_cli_integrationtest.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/solo_tool_cli_integrationtest.py b/solo_tool_cli_integrationtest.py
new file mode 100644
index 0000000..ae007a3
--- /dev/null
+++ b/solo_tool_cli_integrationtest.py
@@ -0,0 +1,75 @@
+import pytest
+import io
+from contextlib import redirect_stdout
+
+from solo_tool_cli import SoloToolCLI
+from solo_tool import SoloTool
+from player_mock import Player
+
+class MockMidiController:
+ def __init__(self):
+ self.connected = False
+
+ def connect(self):
+ self.connected = True
+
+@pytest.fixture
+def mockPlayer():
+ return Player()
+
+@pytest.fixture
+def soloTool(mockPlayer):
+ return SoloTool(playerOverride=mockPlayer)
+
+@pytest.fixture
+def mockMidi(soloTool):
+ return MockMidiController()
+
+@pytest.fixture
+def uut(soloTool, mockMidi):
+ return SoloToolCLI("test_session.json", soloToolOverride=soloTool, midiOverride=mockMidi)
+
+def test_songSelection(uut, soloTool, mockPlayer):
+ expectedOutput = """\
+Songs:
+ 0 test.flac
+ 1 test.mp3
+Songs:
+ 0 test.flac
+ 1 test.mp3
+Songs:
+ 0 test.flac
+ 1 test.mp3
+"""
+
+ with io.StringIO() as buf, redirect_stdout(buf):
+ uut.input("song")
+ assert mockPlayer.currentSong == None
+
+ uut.input("song 0")
+ assert mockPlayer.currentSong == "test.flac"
+
+ uut.input("song ")
+
+ uut.input("song 1")
+ assert mockPlayer.currentSong == "test.mp3"
+
+ uut.input("song")
+
+
+ assert buf.getvalue() == expectedOutput
+
+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