Skip to content

Commit 77de270

Browse files
authored
Test Glides Tableau jobs (#693)
1 parent 9855207 commit 77de270

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

tests/tableau/test_glides.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from contextlib import nullcontext
2+
from datetime import datetime
3+
from pathlib import Path
4+
5+
import dataframely as dy
6+
import polars as pl
7+
import pytest
8+
from pyarrow.dataset import Dataset
9+
from pytest_mock import MockerFixture
10+
11+
from lamp_py.ingestion.glides import GlidesRecord, OperatorSignInsTable, TripUpdatesTable
12+
from lamp_py.tableau.hyper import HyperJob
13+
from lamp_py.tableau.jobs.glides import HyperGlidesOperatorSignIns, HyperGlidesTripUpdates
14+
15+
16+
@pytest.mark.parametrize(
17+
["job", "schema", "raises"],
18+
[
19+
(HyperGlidesOperatorSignIns(), OperatorSignInsTable, nullcontext(False)),
20+
(HyperGlidesTripUpdates(), TripUpdatesTable, nullcontext(False)),
21+
(HyperGlidesTripUpdates(), OperatorSignInsTable, pytest.raises(pl.exceptions.ColumnNotFoundError)),
22+
],
23+
ids=["operator_sign_ins", "trip_updates", "mismatched_schema"],
24+
)
25+
def test_glides_hyper_job(
26+
job: HyperJob,
27+
schema: GlidesRecord,
28+
raises: pytest.RaisesExc,
29+
monkeypatch: pytest.MonkeyPatch,
30+
mocker: MockerFixture,
31+
dy_gen: dy.random.Generator,
32+
tmp_path: Path,
33+
num_records: int = 10,
34+
) -> None:
35+
"""It creates a compatible Parquet file."""
36+
sample_data = (
37+
schema.sample(
38+
num_records,
39+
generator=dy_gen,
40+
overrides={
41+
"time": dy_gen.sample_datetime(
42+
num_records, min=datetime(2024, 1, 1), max=datetime(2039, 12, 31), time_unit="us"
43+
).cast(pl.Datetime(time_unit="ms"))
44+
},
45+
)
46+
.to_arrow()
47+
.to_batches()
48+
)
49+
50+
monkeypatch.setattr("lamp_py.aws.s3.file_list_from_s3", ["foo", "bar"])
51+
mock_dataset = mocker.MagicMock(Dataset)
52+
mock_dataset.to_batches.return_value = sample_data
53+
mocker.patch("pyarrow.dataset.dataset", return_value=mock_dataset)
54+
55+
test_path = tmp_path.joinpath("test.parquet")
56+
monkeypatch.setattr(job, "local_parquet_path", test_path)
57+
58+
with raises:
59+
job.create_parquet(None)
60+
61+
assert pl.read_parquet(test_path).height == num_records

0 commit comments

Comments
 (0)