"""Theatrical cuts ETL Cli setup tests.""" from unittest.mock import Mock from unittest.mock import patch from pytest import raises from flows.theatrical_cuts import cli def test_init_worker_parser(): """Test worker configuration.""" parser = Mock() cli.init_worker_parser(parser) assert not parser.called # no changes to cli arguments @patch('flows.theatrical_cuts.cli.ActivityWorker') @patch('flows.theatrical_cuts.cli.Flow') def test_run_worker(flow, worker): """Test worker logic.""" mock_worker = Mock() worker.return_value = mock_worker mock_flow = Mock() flow.return_value = mock_flow cli.run_worker() assert flow.called worker.assert_called_with(mock_flow) assert mock_worker.run.called def test_init_decider_parser(): """Test decider configuration.""" parser = Mock() cli.init_decider_parser(parser) assert not parser.called # no changes to cli arguments @patch('flows.theatrical_cuts.cli.DeciderWorker') @patch('flows.theatrical_cuts.cli.Flow') @patch('flows.theatrical_cuts.cli.sleep') def test_run_decider(sleep, flow, worker): """Test decider logic.""" mock_worker = Mock() # the decider runs in an infinite loop, this is a way to break out of it mock_worker.run.side_effect = [None, EnvironmentError] worker.return_value = mock_worker mock_flow = Mock() flow.return_value = mock_flow with raises(EnvironmentError): cli.run_decider() assert flow.called worker.assert_called_with(mock_flow) assert mock_worker.run.called