Skip to content

Commit

Permalink
[dagster-dlift] rename DbtCloudInstance to DbtCloudClient
Browse files Browse the repository at this point in the history
  • Loading branch information
dpeng817 committed Oct 25, 2024
1 parent 01f58cc commit 4a5ac65
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
ENVIRONMENTS_SUBPATH = "environments/"


class DbtCloudInstance:
class DbtCloudClient:
def __init__(
self,
# Can be found on the Account Info page of dbt.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Any, Dict, Mapping, NamedTuple, Optional, Sequence

from dagster_dlift.cloud_instance import DbtCloudInstance
from dagster_dlift.client import DbtCloudClient


class ExpectedDiscoveryApiRequest(NamedTuple):
Expand All @@ -18,7 +18,7 @@ def __hash__(self) -> int:
return hash(self.subpath)


class DbtCloudInstanceFake(DbtCloudInstance):
class DbtCloudClientFake(DbtCloudClient):
"""A version that allows users to fake API responses for testing purposes."""

def __init__(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import pytest
from dagster_dlift.cloud_instance import ENVIRONMENTS_SUBPATH
from dagster_dlift.client import ENVIRONMENTS_SUBPATH
from dagster_dlift.gql_queries import (
GET_DBT_MODELS_QUERY,
GET_DBT_SOURCES_QUERY,
GET_DBT_TESTS_QUERY,
VERIFICATION_QUERY,
)
from dagster_dlift.test.instance_fake import (
DbtCloudInstanceFake,
from dagster_dlift.test.client_fake import (
DbtCloudClientFake,
ExpectedAccessApiRequest,
ExpectedDiscoveryApiRequest,
build_model_response,
Expand All @@ -19,7 +19,7 @@
def test_verification() -> None:
"""Test proper error states when we can't properly verify the instance."""
# We get no response back from the discovery api
fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={
ExpectedAccessApiRequest(subpath=ENVIRONMENTS_SUBPATH): {"data": [{"id": 1}]}
},
Expand All @@ -34,7 +34,7 @@ def test_verification() -> None:
fake_instance.verify_connections()

# We get a response back from the discovery api, but it's not what we expect
fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={
ExpectedAccessApiRequest(subpath=ENVIRONMENTS_SUBPATH): {"data": [{"id": 1}]}
},
Expand All @@ -49,7 +49,7 @@ def test_verification() -> None:
fake_instance.verify_connections()

# Finally, we get a valid response back from the discovery api
fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={
ExpectedAccessApiRequest(subpath=ENVIRONMENTS_SUBPATH): {"data": [{"id": 1}]}
},
Expand All @@ -72,7 +72,7 @@ def test_get_models() -> None:
"model.jaffle_shop.stg_customers": set(),
"model.jaffle_shop.stg_orders": set(),
}
fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={},
discovery_api_responses={
ExpectedDiscoveryApiRequest(
Expand Down Expand Up @@ -102,7 +102,7 @@ def test_get_sources() -> None:
"source.jaffle_shop.jaffle_shop.orders",
}

fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={},
discovery_api_responses={
ExpectedDiscoveryApiRequest(
Expand All @@ -128,7 +128,7 @@ def test_get_tests() -> None:
"test.jaffle_shop.stg_orders.test_stg_orders": {"model.jaffle_shop.stg_orders"},
}

fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={},
discovery_api_responses={
ExpectedDiscoveryApiRequest(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import pytest
from dagster._core.test_utils import environ
from dagster_dlift.cloud_instance import ENVIRONMENTS_SUBPATH
from dagster_dlift.client import ENVIRONMENTS_SUBPATH
from dagster_dlift.gql_queries import VERIFICATION_QUERY
from dagster_dlift.test.instance_fake import (
DbtCloudInstanceFake,
from dagster_dlift.test.client_fake import (
DbtCloudClientFake,
ExpectedAccessApiRequest,
ExpectedDiscoveryApiRequest,
)
Expand All @@ -21,7 +21,7 @@ def test_get_env_var() -> None:

def test_cloud_instance_fake() -> None:
"""Test that cloud instance fake behaves properly when inducing queries."""
fake_instance = DbtCloudInstanceFake(
fake_instance = DbtCloudClientFake(
access_api_responses={
ExpectedAccessApiRequest(subpath=ENVIRONMENTS_SUBPATH): {
"data": {"environments": [{"id": 1}]}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from dagster_dlift.cloud_instance import DbtCloudInstance
from dagster_dlift.client import DbtCloudClient
from dagster_dlift.test.utils import get_env_var

from dlift_kitchen_sink.constants import TEST_ENV_NAME


def get_instance() -> DbtCloudInstance:
return DbtCloudInstance(
def get_instance() -> DbtCloudClient:
return DbtCloudClient(
account_id=get_env_var("KS_DBT_CLOUD_ACCOUNT_ID"),
token=get_env_var("KS_DBT_CLOUD_TOKEN"),
access_url=get_env_var("KS_DBT_CLOUD_ACCESS_URL"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import pytest
from dagster_dlift.cloud_instance import DbtCloudInstance
from dagster_dlift.client import DbtCloudClient
from dlift_kitchen_sink.instance import get_environment_id, get_instance


@pytest.fixture
def instance() -> DbtCloudInstance:
def instance() -> DbtCloudClient:
return get_instance()


Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from dagster_dlift.cloud_instance import DbtCloudInstance
from dagster_dlift.client import DbtCloudClient
from dlift_kitchen_sink.instance import get_environment_id, get_instance


def test_cloud_instance() -> None:
"""Test that we can create a DbtCloudInstance and verify connections successfully."""
instance = get_instance()
assert isinstance(instance, DbtCloudInstance)
assert isinstance(instance, DbtCloudClient)

instance.verify_connections()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
from dlift_kitchen_sink.constants import EXPECTED_TAG, TEST_ENV_NAME
from dagster_dlift.client import DbtCloudClient
from dlift_kitchen_sink.constants import EXPECTED_TAG
from dlift_kitchen_sink.instance import get_instance
from dagster_dlift.cloud_instance import DbtCloudInstance


def test_get_models() -> None:
env_id = get_instance().get_environment_id_by_name(TEST_ENV_NAME)
def test_get_models(instance: DbtCloudClient, environment_id: int) -> None:
# Filter to only the models that we use for testing.
models_response = [
model for model in get_instance().get_dbt_models(env_id) if EXPECTED_TAG in model["tags"]
model
for model in get_instance().get_dbt_models(environment_id)
if EXPECTED_TAG in model["tags"]
]

assert len(models_response) == 3
Expand Down Expand Up @@ -53,12 +54,11 @@ def test_get_models() -> None:
}


def test_get_sources(instance: DbtCloudInstance, environment_id: int) -> None:
def test_get_sources(instance: DbtCloudClient, environment_id: int) -> None:
"""Test that we can get sources from the instance."""
env_id = get_instance().get_environment_id_by_name(TEST_ENV_NAME)
sources_response = [
source
for source in get_instance().get_dbt_sources(env_id)
for source in get_instance().get_dbt_sources(environment_id)
if EXPECTED_TAG in source["tags"]
]
assert len(sources_response) == 2
Expand All @@ -68,9 +68,11 @@ def test_get_sources(instance: DbtCloudInstance, environment_id: int) -> None:
}


def test_get_tests(instance: DbtCloudInstance, environment_id: int) -> None:
def test_get_tests(instance: DbtCloudClient, environment_id: int) -> None:
"""Test that we can get tests from the instance."""
tests_response = [test for test in instance.get_dbt_tests(environment_id) if EXPECTED_TAG in test["tags"]]
tests_response = [
test for test in instance.get_dbt_tests(environment_id) if EXPECTED_TAG in test["tags"]
]
assert {test["name"] for test in tests_response} == {
"accepted_values_stg_orders_status__placed__shipped__completed__return_pending__returned",
"not_null_customers_customer_id",
Expand Down

0 comments on commit 4a5ac65

Please sign in to comment.