import pytest
from datetime import date
from sparkless.testing import get_imports
_imports = get_imports()
SparkSession = _imports.SparkSession
Row = _imports.Row
@pytest.fixture
def spark():
return SparkSession.builder.appName("Example").getOrCreate()
def test_row_kwargs_initialization(spark):
row = Row(Column1="Value1", Column2=2, Column3=3.0, Column4=date(2026, 1, 1))
assert row.Column1 == "Value1"
assert row.Column2 == 2
assert row.Column3 == 3.0
assert row.Column4 == date(2026, 1, 1)
assert row["Column1"] == "Value1"
assert row["Column2"] == 2
assert row["Column3"] == 3.0
assert row["Column4"] == date(2026, 1, 1)
row_dict = row.asDict()
assert row_dict["Column1"] == "Value1"
assert row_dict["Column2"] == 2
assert row_dict["Column3"] == 3.0
assert row_dict["Column4"] == date(2026, 1, 1)
def test_row_kwargs_with_createDataFrame(spark):
df = spark.createDataFrame(
[Row(Column1="Value1", Column2=2, Column3=3.0, Column4=date(2026, 1, 1))]
)
rows = df.collect()
assert len(rows) == 1
row = rows[0]
assert row["Column1"] == "Value1"
assert row["Column2"] == 2
assert row["Column3"] == 3.0
assert row["Column4"] == date(2026, 1, 1)
assert "Column1" in df.columns
assert "Column2" in df.columns
assert "Column3" in df.columns
assert "Column4" in df.columns
dtypes = df.dtypes
type_dict = dict(dtypes)
assert type_dict["Column1"] == "string"
assert type_dict["Column2"] in ("long", "bigint")
assert type_dict["Column3"] == "double"
assert type_dict["Column4"] == "date"
def test_row_dict_initialization_still_works(spark):
row = Row({"name": "Alice", "age": 25})
import pytest as _pytest
with _pytest.raises(AttributeError):
_ = row["name"]
with _pytest.raises(AttributeError):
_ = row["age"]
with _pytest.raises(AttributeError):
_ = row.name
with _pytest.raises(AttributeError):
_ = row.age
def test_row_empty_kwargs(spark):
row = Row()
assert isinstance(row, Row)
def test_row_explicit_none_data_with_kwargs(spark):
row = Row(data=None, Column1="Value1", Column2=2)
assert row["Column1"] == "Value1"
assert row["Column2"] == 2