"""Test healthcheck model.""" from unittest.mock import Mock import pytest from api.models import healthcheck @pytest.mark.parametrize('db_result, expected', [ ([], False), (['foo'], False), (['hello'], True) ]) def test_check_db(db_result, expected, monkeypatch): """Test check_db function.""" # healthcheck.aurora.context context manager cursor_mock = Mock(fetchone=Mock(return_value=db_result)) connection_mock = Mock() aurora_context_mock = Mock( __exit__=Mock(), __enter__=Mock(return_value=(cursor_mock, connection_mock))) monkeypatch.setattr(healthcheck.aurora, 'context', Mock( return_value=aurora_context_mock)) result = healthcheck.check_db() # Asserts assert cursor_mock.execute.called assert cursor_mock.fetchone.called assert result is expected def test_check_db_with_exception(monkeypatch): """Test check_db function with error.""" # healthcheck.aurora.context context manager cursor_mock = Mock(fetchone=Mock(side_effect=Exception())) connection_mock = Mock() aurora_context_mock = Mock( __exit__=Mock(), __enter__=Mock(return_value=(cursor_mock, connection_mock))) monkeypatch.setattr(healthcheck.aurora, 'context', Mock( return_value=aurora_context_mock)) result = healthcheck.check_db() # Asserts assert cursor_mock.execute.called assert cursor_mock.fetchone.called assert result is False