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