| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| from typing import Any, TYPE_CHECKING |
| |
| import pytest |
| |
| if TYPE_CHECKING: |
| from superset.connectors.sqla.models import SqlMetric, TableColumn |
| |
| |
| @pytest.fixture |
| def columns_default() -> dict[str, Any]: |
| """Default props for new columns""" |
| return { |
| "changed_by": 1, |
| "created_by": 1, |
| "datasets": [], |
| "tables": [], |
| "is_additive": False, |
| "is_aggregation": False, |
| "is_dimensional": False, |
| "is_filterable": True, |
| "is_increase_desired": True, |
| "is_partition": False, |
| "is_physical": True, |
| "is_spatial": False, |
| "is_temporal": False, |
| "description": None, |
| "extra_json": "{}", |
| "unit": None, |
| "warning_text": None, |
| "is_managed_externally": False, |
| "external_url": None, |
| } |
| |
| |
| @pytest.fixture |
| def sample_columns() -> dict["TableColumn", dict[str, Any]]: |
| from superset.connectors.sqla.models import TableColumn |
| |
| return { |
| TableColumn(column_name="ds", is_dttm=1, type="TIMESTAMP"): { |
| "name": "ds", |
| "expression": "ds", |
| "type": "TIMESTAMP", |
| "advanced_data_type": None, |
| "is_temporal": True, |
| "is_physical": True, |
| }, |
| TableColumn(column_name="num_boys", type="INTEGER", groupby=True): { |
| "name": "num_boys", |
| "expression": "num_boys", |
| "type": "INTEGER", |
| "advanced_data_type": None, |
| "is_dimensional": True, |
| "is_physical": True, |
| }, |
| TableColumn(column_name="region", type="VARCHAR", groupby=True): { |
| "name": "region", |
| "expression": "region", |
| "type": "VARCHAR", |
| "advanced_data_type": None, |
| "is_dimensional": True, |
| "is_physical": True, |
| }, |
| TableColumn( |
| column_name="profit", |
| type="INTEGER", |
| groupby=False, |
| expression="revenue-expenses", |
| ): { |
| "name": "profit", |
| "expression": "revenue-expenses", |
| "type": "INTEGER", |
| "advanced_data_type": None, |
| "is_physical": False, |
| }, |
| } |
| |
| |
| @pytest.fixture |
| def sample_metrics() -> dict["SqlMetric", dict[str, Any]]: |
| from superset.connectors.sqla.models import SqlMetric |
| |
| return { |
| SqlMetric(metric_name="cnt", expression="COUNT(*)", metric_type="COUNT"): { |
| "name": "cnt", |
| "expression": "COUNT(*)", |
| "extra_json": '{"metric_type": "COUNT"}', |
| "type": "UNKNOWN", |
| "advanced_data_type": None, |
| "is_additive": True, |
| "is_aggregation": True, |
| "is_filterable": False, |
| "is_physical": False, |
| }, |
| SqlMetric( |
| metric_name="avg revenue", expression="AVG(revenue)", metric_type="AVG" |
| ): { |
| "name": "avg revenue", |
| "expression": "AVG(revenue)", |
| "extra_json": '{"metric_type": "AVG"}', |
| "type": "UNKNOWN", |
| "advanced_data_type": None, |
| "is_additive": False, |
| "is_aggregation": True, |
| "is_filterable": False, |
| "is_physical": False, |
| }, |
| } |