-
Notifications
You must be signed in to change notification settings - Fork 374
Expand file tree
/
Copy pathtest_selector_dbt.py
More file actions
63 lines (53 loc) · 2.33 KB
/
test_selector_dbt.py
File metadata and controls
63 lines (53 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import typing as t
import pytest
from pytest_mock import MockerFixture
from sqlglot import exp
from sqlmesh.core.model.kind import SeedKind, ExternalKind, FullKind
from sqlmesh.core.model.seed import Seed
from sqlmesh.core.model.definition import SqlModel, SeedModel, ExternalModel
from sqlmesh.core.audit.definition import StandaloneAudit
from sqlmesh.core.snapshot.definition import Node
from sqlmesh.core.selector import DbtSelector
from sqlmesh.core.selector import parse, ResourceType
from sqlmesh.utils.errors import SQLMeshError
import sqlmesh.core.dialect as d
from sqlmesh.utils import UniqueKeyDict
def test_parse_resource_type():
assert parse("resource_type:foo") == ResourceType(this=exp.Var(this="foo"))
@pytest.mark.parametrize(
"resource_type,expected",
[
("model", {'"test"."normal_model"'}),
("seed", {'"test"."seed_model"'}),
("test", {'"test"."standalone_audit"'}),
("source", {'"external"."model"'}),
],
)
def test_expand_model_selections_resource_type(
mocker: MockerFixture, resource_type: str, expected: t.Set[str]
):
models: t.Dict[str, Node] = {
'"test"."normal_model"': SqlModel(
name="test.normal_model",
kind=FullKind(),
query=d.parse_one("SELECT 'normal_model' AS what"),
),
'"test"."seed_model"': SeedModel(
name="test.seed_model", kind=SeedKind(path="/tmp/foo"), seed=Seed(content="id,name")
),
'"test"."standalone_audit"': StandaloneAudit(
name="test.standalone_audit", query=d.parse_one("SELECT 'standalone_audit' AS what")
),
'"external"."model"': ExternalModel(name="external.model", kind=ExternalKind()),
}
selector = DbtSelector(state_reader=mocker.Mock(), models=UniqueKeyDict("models"))
assert selector.expand_model_selections([f"resource_type:{resource_type}"], models) == expected
def test_unsupported_resource_type(mocker: MockerFixture):
selector = DbtSelector(state_reader=mocker.Mock(), models=UniqueKeyDict("models"))
models: t.Dict[str, Node] = {
'"test"."normal_model"': SqlModel(
name="test.normal_model", query=d.parse_one("SELECT 'normal_model' AS what")
),
}
with pytest.raises(SQLMeshError, match="Unsupported"):
selector.expand_model_selections(["resource_type:analysis"], models)