import unittest from parley.state import InvalidStateError, State, StateMachine class StateMachineTests(unittest.TestCase): def test_record_transcribe_complete(self) -> None: machine = StateMachine() self.assertEqual(machine.start_recording(), State.RECORDING) self.assertEqual(machine.begin_transcription(), State.TRANSCRIBING) self.assertEqual(machine.complete(), State.IDLE) def test_insertion_flow(self) -> None: machine = StateMachine() machine.start_recording() machine.begin_transcription() self.assertEqual(machine.begin_insertion(), State.INSERTING) self.assertEqual(machine.complete(), State.IDLE) def test_rejects_second_recording(self) -> None: machine = StateMachine() machine.start_recording() with self.assertRaisesRegex(InvalidStateError, "current state is recording"): machine.start_recording() def test_cancel_recording_and_transcription(self) -> None: machine = StateMachine() machine.start_recording() self.assertEqual(machine.cancel(), State.IDLE) machine.start_recording() machine.begin_transcription() self.assertEqual(machine.cancel(), State.IDLE) def test_error_is_recoverable(self) -> None: machine = StateMachine() machine.fail() self.assertEqual(machine.start_recording(), State.RECORDING) if __name__ == "__main__": unittest.main()