"""Unit tests for tasks of garcon-contrib-pipe.""" import tempfile from unittest.mock import MagicMock from unittest.mock import call from garcon_contrib.pipe import garcon_pipe import pytest def test_communicate_if_no_pipe(): """Test if exception raises if there is no pipe provided.""" activity_mock = MagicMock() with pytest.raises(Exception): garcon_pipe.communicate(activity_mock, pipe=None) def test_communicate_normal(): """Test normal execution of communicate method.""" pipe_mock = MagicMock() activity_mock = MagicMock() garcon_pipe.communicate(activity_mock, pipe=pipe_mock) pipe_mock.assert_has_calls([call.__bool__(), call.communicate()]) def test_communicate_with_stderr_provided(): """Test execution of communicate method with a stderr obj provided.""" pipe_mock = MagicMock() activity_mock = MagicMock() tmp = tempfile.TemporaryFile(mode='w+t') garcon_pipe.communicate(activity_mock, pipe=pipe_mock, mysql_stderr=tmp) pipe_mock.assert_has_calls([call.__bool__(), call.communicate()]) assert tmp.closed def test_communicate_with_stderr_provided_when_error(): """Test execution of communicate method with a stderr obj provided. Check if exception raises. """ pipe_mock = MagicMock() activity_mock = MagicMock() tmp = tempfile.TemporaryFile(mode='w+t') tmp.write('ERROR: Some error!') with pytest.raises(Exception): garcon_pipe.communicate( activity_mock, pipe=pipe_mock, mysql_stderr=tmp) pipe_mock.assert_has_calls([call.__bool__(), call.communicate()]) assert tmp.closed