bigquery-etl/tests/cli/test_cli_check.py

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