88 lines
3.1 KiB
Python
88 lines
3.1 KiB
Python
"""Tests for ELO rating and comparison assets."""
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from dagster import build_asset_context
|
|
|
|
from data_platform.assets.elo.elo import _ensure_schema, elo_comparisons, elo_ratings
|
|
|
|
|
|
class TestEnsureSchema:
|
|
def test_executes_create_schema_sql(self):
|
|
conn = MagicMock()
|
|
with patch(
|
|
"data_platform.assets.elo.elo.render_sql",
|
|
return_value="CREATE SCHEMA IF NOT EXISTS elo",
|
|
):
|
|
_ensure_schema(conn)
|
|
conn.execute.assert_called_once()
|
|
|
|
|
|
class TestEloRatings:
|
|
@patch(
|
|
"data_platform.assets.elo.elo.render_sql",
|
|
return_value="CREATE TABLE IF NOT EXISTS elo.ratings ()",
|
|
)
|
|
def test_creates_table_and_returns_metadata(self, mock_render):
|
|
postgres = MagicMock()
|
|
engine = MagicMock()
|
|
conn = MagicMock()
|
|
engine.begin.return_value.__enter__ = MagicMock(return_value=conn)
|
|
engine.begin.return_value.__exit__ = MagicMock(return_value=False)
|
|
postgres.get_engine.return_value = engine
|
|
|
|
context = build_asset_context()
|
|
result = elo_ratings(context, postgres)
|
|
|
|
assert result.metadata["schema"].value == "elo"
|
|
assert result.metadata["table"].value == "ratings"
|
|
# Two calls: _ensure_schema + create table
|
|
assert conn.execute.call_count == 2
|
|
|
|
@patch("data_platform.assets.elo.elo.render_sql", return_value="SQL")
|
|
def test_calls_get_engine(self, mock_render):
|
|
postgres = MagicMock()
|
|
engine = MagicMock()
|
|
conn = MagicMock()
|
|
engine.begin.return_value.__enter__ = MagicMock(return_value=conn)
|
|
engine.begin.return_value.__exit__ = MagicMock(return_value=False)
|
|
postgres.get_engine.return_value = engine
|
|
|
|
context = build_asset_context()
|
|
elo_ratings(context, postgres)
|
|
postgres.get_engine.assert_called_once()
|
|
|
|
|
|
class TestEloComparisons:
|
|
@patch(
|
|
"data_platform.assets.elo.elo.render_sql",
|
|
return_value="CREATE TABLE IF NOT EXISTS elo.comparisons ()",
|
|
)
|
|
def test_creates_table_and_returns_metadata(self, mock_render):
|
|
postgres = MagicMock()
|
|
engine = MagicMock()
|
|
conn = MagicMock()
|
|
engine.begin.return_value.__enter__ = MagicMock(return_value=conn)
|
|
engine.begin.return_value.__exit__ = MagicMock(return_value=False)
|
|
postgres.get_engine.return_value = engine
|
|
|
|
context = build_asset_context()
|
|
result = elo_comparisons(context, postgres)
|
|
|
|
assert result.metadata["schema"].value == "elo"
|
|
assert result.metadata["table"].value == "comparisons"
|
|
assert conn.execute.call_count == 2
|
|
|
|
@patch("data_platform.assets.elo.elo.render_sql", return_value="SQL")
|
|
def test_calls_get_engine(self, mock_render):
|
|
postgres = MagicMock()
|
|
engine = MagicMock()
|
|
conn = MagicMock()
|
|
engine.begin.return_value.__enter__ = MagicMock(return_value=conn)
|
|
engine.begin.return_value.__exit__ = MagicMock(return_value=False)
|
|
postgres.get_engine.return_value = engine
|
|
|
|
context = build_asset_context()
|
|
elo_comparisons(context, postgres)
|
|
postgres.get_engine.assert_called_once()
|