Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gooddata-fdw/test-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pytest~=6.2.4
pytest-cov~=2.12.1
vcrpy~=4.1.1
python-dotenv~=0.19.0
pyyaml
51 changes: 1 addition & 50 deletions gooddata-fdw/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,52 +1,3 @@
# (C) 2021 GoodData Corporation
from dotenv import dotenv_values, find_dotenv

TEST_HOST = "https://insurance-dev.anywhere.gooddata.com"
TEST_WORKSPACE = "insurance-demo"


def _load_test_env():
try:
test_env = find_dotenv(".env.test", raise_error_if_not_found=True)

return dotenv_values(test_env)
except IOError:
return dict()


def get_test_token():
config = _load_test_env()

if "TEST_TOKEN" not in config:
# returning bogus token so that tests that use vcr recordings have something to use
return "test-token-undefined"

return config["TEST_TOKEN"]


TEST_DATA_REGIONS = [
"Aargau",
"Basel-Landschaft",
"Basel-Stadt",
"Bern",
"Fribourg",
"Geneva",
"Glarus",
"Graubünden",
"Jura",
"Lucerne",
"Neuchâtel",
"Nidwalden",
"Obwalden",
"Schaffhausen",
"Schwyz",
"Solothurn",
"St. Gallen",
"Thurgau",
"Ticino",
"Uri",
"Valais",
"Vaud",
"Zug",
"Zürich",
]
VCR_MATCH_ON = ("method", "scheme", "host", "port", "path", "query", "body")
133 changes: 90 additions & 43 deletions gooddata-fdw/tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,86 +1,133 @@
# (C) 2021 GoodData Corporation
from collections import OrderedDict
from pathlib import Path

import pytest
import yaml

from gooddata_fdw.environment import ColumnDefinition
from tests import TEST_HOST, TEST_WORKSPACE, get_test_token


@pytest.fixture
def import_srv_options():
return dict(host=TEST_HOST, token=get_test_token())
def pytest_addoption(parser):
default_config_path = Path(__file__).parent / "gd_test_config.yaml"
parser.addoption(
"--gd-test-config",
action="store",
default=str(default_config_path),
help="Absolut path to an application charts",
)


@pytest.fixture(scope="session")
def test_config(request):
config_path = Path(request.config.getoption("--gd-test-config"))
with open(config_path, "rt") as f:
config = yaml.safe_load(f)

return config


@pytest.fixture
def fdw_options_for_insight():
def fdw_options_for_insight(test_config):
return dict(
host=TEST_HOST,
token=get_test_token(),
workspace=TEST_WORKSPACE,
insight="f7fef745-7269-454e-982e-e1d7d3eed81f",
host=test_config["host"],
token=test_config["token"],
workspace=test_config["workspace"],
insight="revenue_and_quantity_by_product_and_category",
)


@pytest.fixture
def test_insight_columns():
columns = OrderedDict()
columns["car_car_make"] = ColumnDefinition(
column_name="car_car_make",
# attribute
columns["products_category"] = ColumnDefinition(
column_name="products_category",
type_name="VARCHAR(255)",
options=dict(local_id="bb6895568384411a909514dd5b95011f"),
options=dict(local_id="06bc6b3b9949466494e4f594c11f1bff"),
)
columns["customer_customer_age_group"] = ColumnDefinition(
column_name="customer_customer_age_group",
# attribute
columns["products_product_name"] = ColumnDefinition(
column_name="products_product_name",
type_name="VARCHAR(255)",
options=dict(local_id="b08cd137253d405f803601bf12fa89cb"),
options=dict(local_id="192668bfb6a74e9ab7b5d1ce7cb68ea3"),
)
# fact
columns["order_lines_quantity"] = ColumnDefinition(
column_name="order_lines_quantity",
type_name="DECIMAL(18,2)",
options=dict(local_id="29486504dd0e4a36a18b0b2f792d3a46"),
)
# fact
columns["order_lines_price"] = ColumnDefinition(
column_name="order_lines_price",
type_name="DECIMAL(18,2)",
options=dict(local_id="aa6391acccf1452f8011201aef9af492"),
)
columns["premium_revenue"] = ColumnDefinition(
column_name="premium_revenue",
type_name="DECIMAL(15,5)",
options=dict(local_id="0b3a3a4a6e2547259725e18e64033620"),
# metric
columns["percent_revenue_in_category"] = ColumnDefinition(
column_name="percent_revenue_in_category",
type_name="DECIMAL(18,1)",
options=dict(local_id="2cd39539d8da46c9883e63caa3ba7cc0"),
)
# metric
columns["revenue"] = ColumnDefinition(
column_name="revenue",
type_name="DECIMAL(18,2)",
options=dict(local_id="9a0f08331c094c7facf2a0b4f418de0a"),
)

return columns


@pytest.fixture
def fdw_options_for_compute_table():
def fdw_options_for_compute_table(test_config):
return dict(
host=TEST_HOST,
token=get_test_token(),
workspace=TEST_WORKSPACE,
host=test_config["host"],
token=test_config["token"],
workspace=test_config["workspace"],
compute="value-does-not-matter",
)


@pytest.fixture
def test_compute_table_columns():
columns = OrderedDict()
columns["coverage_lifetime"] = ColumnDefinition(
column_name="coverage_lifetime",
type_name="DECIMAL(15,5)",
options=dict(id="fact/coverage.coverage_lifetime"),
)
columns["claim_amount"] = ColumnDefinition(
column_name="claim_amount",
type_name="DECIMAL(15,5)",
options=dict(id="metric/claim-amount"),
)
columns["car_make"] = ColumnDefinition(
column_name="car_make",
# attribute
columns["products_category"] = ColumnDefinition(
column_name="products_category",
type_name="VARCHAR(255)",
options=dict(id="label/car.car_make"),
options=dict(id="label/products.category"),
)
columns["car_model"] = ColumnDefinition(
column_name="car_model",
# attribute
columns["products_product_name"] = ColumnDefinition(
column_name="products_product_name",
type_name="VARCHAR(255)",
options=dict(id="label/car.car_model"),
options=dict(id="label/products.product_name"),
)
# fact
columns["order_lines_quantity"] = ColumnDefinition(
column_name="order_lines_quantity",
type_name="DECIMAL(18,2)",
options=dict(id="fact/order_lines.quantity"),
)
# fact
columns["order_lines_price"] = ColumnDefinition(
column_name="order_lines_price",
type_name="DECIMAL(18,2)",
options=dict(id="fact/order_lines.price"),
)
# metric
columns["percent_revenue_in_category"] = ColumnDefinition(
column_name="percent_revenue_in_category",
type_name="DECIMAL(18,1)",
options=dict(id="metric/percent_revenue_in_category"),
)
columns["datetime"] = ColumnDefinition(
column_name="datetime",
type_name="DATE",
options=dict(id="label/datetime.day"),
# metric
columns["revenue"] = ColumnDefinition(
column_name="revenue",
type_name="DECIMAL(18,2)",
options=dict(id="metric/revenue"),
)

return columns
Loading