"""Tests for mysql module.""" from unittest.mock import MagicMock, patch import pytest from sqlalchemy import exc, text from vectororder.connectors import mysql @patch("vectororder.connectors.mysql.SqlConnector.db_session") def test_session_rollback(mock_db: MagicMock) -> None: """Check session context manager rollbacks transaction in exception.""" session_mock = mock_db.return_value.__enter__.return_value session_mock.execute.side_effect = exc.SQLAlchemyError() with pytest.raises(exc.SQLAlchemyError): session_mock.execute() assert session_mock.rollback.not_called # assert session_mock.close.called @patch("vectororder.connectors.mysql.SqlConnector.db_session") def test_session_success(mock_db: MagicMock) -> None: """Test scoped session context manager for successful execution.""" session_mock = mock_db.return_value.__enter__.return_value session_mock.execute() assert session_mock.commit.not_called # assert session_mock.close.called def test_foreign_key_checks_is_on_by_default() -> None: """Test foreign key checks is still ON.""" with mysql.art_db_connector.db_session() as session: result = session.execute(text("SHOW VARIABLES LIKE 'foreign_key_checks';")) assert result.mappings().one() == { "Variable_name": "foreign_key_checks", "Value": "ON", }