74 строки
2.2 KiB
Python
74 строки
2.2 KiB
Python
from pathlib import Path
|
|
from textwrap import dedent
|
|
|
|
import pytest
|
|
from click.testing import CliRunner
|
|
|
|
from bigquery_etl.cli.check import _build_jinja_parameters, _parse_check_output, _render
|
|
|
|
|
|
class TestCheck:
|
|
@pytest.fixture
|
|
def runner(self):
|
|
return CliRunner()
|
|
|
|
def test_parse_check_output(self):
|
|
expected = "ETL Data Check Failed: a check failed"
|
|
assert _parse_check_output(expected) == expected
|
|
|
|
test2 = "remove prepended text ETL Data Check Failed: a check failed"
|
|
assert _parse_check_output(test2) == expected
|
|
|
|
test3 = "no match for text Data Check Failed: a check failed"
|
|
assert _parse_check_output(test3) == test3
|
|
|
|
def test_build_jinja_parameters(self):
|
|
test = [
|
|
"--parameter=submission_date::2023-06-01",
|
|
"--parameter=id::asdf",
|
|
"--use_legacy_sql=false",
|
|
"--project_id=moz-fx-data-marketing-prod",
|
|
"--debug",
|
|
]
|
|
expected = {
|
|
"submission_date": "2023-06-01",
|
|
"id": "asdf",
|
|
"use_legacy_sql": "false",
|
|
"project_id": "moz-fx-data-marketing-prod",
|
|
}
|
|
assert _build_jinja_parameters(test) == expected
|
|
|
|
def test_check_render(self):
|
|
checks_file = Path(
|
|
"tests/sql/moz-fx-data-shared-prod/telemetry_derived/clients_daily_v6/checks.sql"
|
|
)
|
|
|
|
actual = _render(
|
|
checks_file=checks_file,
|
|
dataset_id="telemetry_derived",
|
|
table="clients_daily_v6",
|
|
project_id="moz-fx-data-shared-prod",
|
|
query_arguments=[
|
|
"--parameter=submission_date:DATE:2023-07-01",
|
|
],
|
|
)
|
|
|
|
expected = dedent(
|
|
"""
|
|
#fail
|
|
ASSERT(
|
|
(
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
`moz-fx-data-shared-prod.telemetry_derived.clients_daily_v6`
|
|
WHERE
|
|
submission_date = "2023-07-01"
|
|
) > 0
|
|
)
|
|
AS
|
|
'ETL Data Check Failed: Table moz-fx-data-shared-prod.telemetry_derived.clients_daily_v6 contains 0 rows for date: 2023-07-01.'"""
|
|
)
|
|
|
|
assert actual == expected
|