This is an automated email from the ASF dual-hosted git repository.
hugh pushed a change to branch pexdax/db-connection-ui
in repository https://gitbox.apache.org/repos/asf/superset.git.
from a673ab6 address comments
add e5d4765 feat(dashboard-groupby): group by - add ability to exclude
columns (#15454)
add f286647 chore(native-filters): remove instant filtering option
(#15365)
add 285c1b5 fix: skip set and log when NullCache (#15493)
add a3a3477 Update ingress api version to v1 (#15273)
add baf42bc docs: improve docs on running tests locally (#14102)
add 0ff3253 fix(native-filters): chartsInScope were not recalculated in
some cases (#15498)
add 665459f feat(native-filters): add null option to value filter (#15419)
add 55d0371 fix: GSheets supports JOINs (#15487)
add b5119b8 refactor(tests): decouple unittests from integration tests
(#15473)
add 7889564 refactor: icon to icons for infotooltip component (#15398)
add b749d6d fix merge conflicts
No new revisions were added by this update.
Summary of changes:
.github/workflows/bashlib.sh | 2 +-
.github/workflows/superset-e2e.yml | 2 +-
.github/workflows/superset-python-presto-hive.yml | 4 +-
.github/workflows/superset-python-unittest.yml | 6 +-
CONTRIBUTING.md | 18 ++--
docker/docker-bootstrap.sh | 2 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/templates/ingress.yaml | 11 ++-
helm/superset/values.yaml | 1 +
scripts/python_tests.sh | 2 +-
scripts/tests/run.sh | 2 +-
.../spec/fixtures/mockNativeFilters.ts | 3 -
.../dashboard/fixtures/mockNativeFilters.ts | 1 -
.../src/components/InfoTooltip/index.tsx | 2 +-
.../DashboardBuilder/DashboardContainer.tsx | 22 ++---
.../components/gridComponents/ChartHolder.jsx | 2 +-
.../nativeFilters/FilterBar/FilterBar.test.tsx | 25 +++---
.../components/nativeFilters/FilterBar/index.tsx | 7 +-
.../FiltersConfigForm/ColumnSelect.tsx | 17 ++--
.../FiltersConfigForm/FiltersConfigForm.tsx | 70 +++-------------
.../FiltersConfigForm/getControlItemsMap.test.tsx | 7 +-
.../FiltersConfigForm/getControlItemsMap.tsx | 92 +++++++++++++++++++--
.../FiltersConfigModal/FiltersConfigForm/utils.ts | 2 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 6 --
.../nativeFilters/FiltersConfigModal/types.ts | 1 -
.../nativeFilters/FiltersConfigModal/utils.ts | 14 ----
.../dashboard/components/nativeFilters/types.ts | 1 -
.../components/GroupBy/GroupByFilterPlugin.tsx | 14 +++-
.../src/filters/components/GroupBy/controlPanel.ts | 18 ++++
.../src/filters/components/Range/controlPanel.ts | 3 +-
.../filters/components/Select/buildQuery.test.ts | 2 +-
.../src/filters/components/Select/buildQuery.ts | 47 ++++++-----
.../src/filters/components/Select/controlPanel.ts | 14 +++-
.../src/filters/components/Time/controlPanel.ts | 17 ++++
.../data/database/DatabaseModal/ExtraOptions.tsx | 26 +++++-
superset/db_engine_specs/gsheets.py | 2 +-
superset/utils/cache.py | 4 +
tests/{tasks => integration_tests}/__init__.py | 0
tests/{ => integration_tests}/access_tests.py | 14 +++-
tests/{ => integration_tests}/alerts_tests.py | 6 +-
.../annotation_layers}/__init__.py | 0
.../annotation_layers/api_tests.py | 6 +-
.../annotation_layers/fixtures.py | 2 +-
.../async_events}/__init__.py | 0
.../async_events/api_tests.py | 4 +-
tests/{ => integration_tests}/base_api_tests.py | 6 +-
tests/{ => integration_tests}/base_tests.py | 2 +-
tests/{ => integration_tests}/cache_tests.py | 4 +-
.../cachekeys}/__init__.py | 0
.../{ => integration_tests}/cachekeys/api_tests.py | 4 +-
tests/{ => integration_tests}/celery_tests.py | 10 ++-
.../charts}/__init__.py | 0
tests/{ => integration_tests}/charts/api_tests.py | 41 ++++++---
.../charts/commands_tests.py | 8 +-
.../{ => integration_tests}/charts/schema_tests.py | 6 +-
tests/{ => integration_tests}/cli_tests.py | 4 +-
tests/{ => integration_tests}/commands_test.py | 2 +-
tests/{ => integration_tests}/config_tests.py | 4 +-
tests/{ => integration_tests}/conftest.py | 6 +-
tests/{ => integration_tests}/core_tests.py | 20 +++--
.../css_templates}/__init__.py | 0
.../css_templates/api_tests.py | 4 +-
tests/{ => integration_tests}/csv_upload_tests.py | 8 +-
tests/{ => integration_tests}/dashboard_tests.py | 20 +++--
tests/{ => integration_tests}/dashboard_utils.py | 0
.../dashboards}/__init__.py | 0
.../dashboards/api_tests.py | 18 ++--
.../dashboards/base_case.py | 12 ++-
.../dashboards/commands_tests.py | 8 +-
tests/{ => integration_tests}/dashboards/consts.py | 0
.../dashboards/dao_tests.py | 8 +-
.../dashboards/dashboard_test_utils.py | 2 +-
.../dashboards/security}/__init__.py | 0
.../dashboards/security/base_case.py | 2 +-
.../dashboards/security/security_dataset_tests.py | 12 +--
.../dashboards/security/security_rbac_tests.py | 16 ++--
.../dashboards/superset_factory_util.py | 6 +-
.../databases}/__init__.py | 0
.../{ => integration_tests}/databases/api_tests.py | 24 ++++--
.../databases/commands_tests.py | 12 ++-
.../databases/schema_tests.py | 0
tests/{ => integration_tests}/dataframe_test.py | 2 +-
.../datasets}/__init__.py | 0
.../{ => integration_tests}/datasets/api_tests.py | 14 ++--
.../datasets/commands_tests.py | 12 ++-
tests/{ => integration_tests}/datasource_tests.py | 4 +-
.../db_engine_specs}/__init__.py | 0
.../db_engine_specs/ascend_tests.py | 2 +-
.../db_engine_specs/athena_tests.py | 2 +-
.../db_engine_specs/base_engine_spec_tests.py | 4 +-
.../db_engine_specs/base_tests.py | 4 +-
.../db_engine_specs/bigquery_tests.py | 2 +-
.../db_engine_specs/clickhouse_tests.py | 2 +-
.../db_engine_specs/crate_tests.py | 2 +-
.../db_engine_specs/dremio_tests.py | 2 +-
.../db_engine_specs/drill_tests.py | 2 +-
.../db_engine_specs/druid_tests.py | 6 +-
.../db_engine_specs/elasticsearch_tests.py | 2 +-
.../db_engine_specs/firebird_tests.py | 0
.../db_engine_specs/gsheets_tests.py | 2 +-
.../db_engine_specs/hana_tests.py | 2 +-
.../db_engine_specs/hive_tests.py | 2 +-
.../db_engine_specs/impala_tests.py | 2 +-
.../db_engine_specs/kylin_tests.py | 2 +-
.../db_engine_specs/mssql_tests.py | 2 +-
.../db_engine_specs/mysql_tests.py | 5 +-
.../db_engine_specs/oracle_tests.py | 2 +-
.../db_engine_specs/pinot_tests.py | 2 +-
.../db_engine_specs/postgres_tests.py | 9 +-
.../db_engine_specs/presto_tests.py | 2 +-
.../db_engine_specs/redshift_tests.py | 2 +-
.../db_engine_specs/snowflake_tests.py | 2 +-
.../db_engine_specs/sqlite_tests.py | 2 +-
.../db_engine_specs/trino_tests.py | 2 +-
.../dict_import_export_tests.py | 2 +-
tests/{ => integration_tests}/druid_func_tests.py | 2 +-
.../druid_func_tests_sip38.py | 2 +-
tests/{ => integration_tests}/druid_tests.py | 2 +-
.../dynamic_plugins_tests.py | 0
tests/{ => integration_tests}/email_tests.py | 2 +-
.../{ => integration_tests}/event_logger_tests.py | 2 +-
.../{ => integration_tests}/feature_flag_tests.py | 2 +-
.../fixtures}/__init__.py | 26 +++---
.../fixtures/birth_names_dashboard.py | 4 +-
.../fixtures/certificates.py | 0
tests/{ => integration_tests}/fixtures/database.py | 0
.../{ => integration_tests}/fixtures/dataframes.py | 0
.../{ => integration_tests}/fixtures/datasource.py | 0
.../fixtures/deck_geojson_form_data.json | 0
.../fixtures/deck_path_form_data.json | 0
.../fixtures/energy_dashboard.py | 7 +-
.../fixtures/importexport.py | 0
.../fixtures/public_role.py | 2 +-
.../{ => integration_tests}/fixtures/pyodbcRow.py | 0
.../fixtures/query_context.py | 2 +-
tests/{ => integration_tests}/fixtures/sample.png | Bin
tests/{ => integration_tests}/fixtures/trends.csv | 0
.../fixtures/unicode_dashboard.py | 4 +-
.../fixtures/world_bank_dashboard.py | 7 +-
tests/{ => integration_tests}/form_tests.py | 2 +-
.../{ => integration_tests}/import_export_tests.py | 14 +++-
.../importexport/commands_tests.py | 2 +-
.../{ => integration_tests}/insert_chart_mixin.py | 0
.../{ => integration_tests}/jinja_context_tests.py | 8 +-
tests/{ => integration_tests}/log_api_tests.py | 0
.../log_model_view_tests.py | 0
.../logging_configurator_tests.py | 0
tests/{ => integration_tests}/migration_tests.py | 0
.../migrations}/__init__.py | 0
.../migrations/f1410ed7ec95_tests.py | 0
.../migrations/fc3a3a8ff221_tests.py | 0
tests/{ => integration_tests}/model_tests.py | 6 +-
.../pandas_postprocessing_tests.py | 0
.../queries}/__init__.py | 0
tests/{ => integration_tests}/queries/api_tests.py | 4 +-
.../queries/saved_queries}/__init__.py | 0
.../queries/saved_queries/api_tests.py | 6 +-
.../queries/saved_queries/commands_tests.py | 4 +-
.../{ => integration_tests}/query_context_tests.py | 8 +-
.../reports}/__init__.py | 0
tests/{ => integration_tests}/reports/api_tests.py | 10 ++-
.../reports/commands_tests.py | 12 +--
.../reports/scheduler_tests.py | 4 +-
tests/{ => integration_tests}/reports/utils.py | 0
tests/{ => integration_tests}/result_set_tests.py | 2 +-
tests/{ => integration_tests}/schedules_test.py | 10 ++-
.../security}/__init__.py | 0
.../security/analytics_db_safety_tests.py | 2 +-
.../{ => integration_tests}/security/api_tests.py | 2 +-
.../security/migrate_roles_tests.py | 2 +-
tests/{ => integration_tests}/security_tests.py | 18 ++--
tests/{ => integration_tests}/sql_parse_tests.py | 0
.../{ => integration_tests}/sql_validator_tests.py | 0
tests/{ => integration_tests}/sqla_models_tests.py | 4 +-
tests/{ => integration_tests}/sqla_views_tests.py | 4 +-
tests/{ => integration_tests}/sqllab_tests.py | 4 +-
.../{ => integration_tests}/stats_logger_tests.py | 0
tests/{ => integration_tests}/strategy_tests.py | 4 +-
.../superset_test_config.py | 10 ++-
.../superset_test_config_sqllab_backend_persist.py | 0
.../superset_test_config_thumbnails.py | 4 +-
.../superset_test_custom_template_processors.py | 0
tests/{ => integration_tests}/tagging_tests.py | 4 +-
.../tasks}/__init__.py | 0
.../tasks/async_queries_tests.py | 10 ++-
tests/{ => integration_tests}/test_app.py | 2 +-
tests/{ => integration_tests}/thumbnails_tests.py | 4 +-
tests/{ => integration_tests}/utils/__init__.py | 2 +-
tests/{ => integration_tests}/utils/core_tests.py | 0
tests/{ => integration_tests}/utils/csv_tests.py | 0
.../utils/date_parser_tests.py | 2 +-
.../utils/decorators_tests.py | 2 +-
.../{ => integration_tests}/utils/encrypt_tests.py | 2 +-
.../utils/get_dashboards.py | 0
.../{ => integration_tests}/utils/hashing_tests.py | 0
.../utils/machine_auth_tests.py | 2 +-
.../utils/public_interfaces_test.py | 2 +-
tests/{ => integration_tests}/utils_tests.py | 12 ++-
tests/{ => integration_tests}/viz_tests.py | 2 +-
tests/{tasks => unit_tests}/__init__.py | 0
tox.ini | 14 ++--
201 files changed, 706 insertions(+), 440 deletions(-)
copy tests/{tasks => integration_tests}/__init__.py (100%)
rename tests/{ => integration_tests}/access_tests.py (98%)
rename tests/{ => integration_tests}/alerts_tests.py (98%)
rename tests/{security => integration_tests/annotation_layers}/__init__.py
(100%)
rename tests/{ => integration_tests}/annotation_layers/api_tests.py (99%)
rename tests/{ => integration_tests}/annotation_layers/fixtures.py (98%)
rename tests/{reports => integration_tests/async_events}/__init__.py (100%)
rename tests/{ => integration_tests}/async_events/api_tests.py (97%)
rename tests/{ => integration_tests}/base_api_tests.py (98%)
rename tests/{ => integration_tests}/base_tests.py (99%)
rename tests/{ => integration_tests}/cache_tests.py (97%)
rename tests/{queries/saved_queries =>
integration_tests/cachekeys}/__init__.py (100%)
rename tests/{ => integration_tests}/cachekeys/api_tests.py (98%)
rename tests/{ => integration_tests}/celery_tests.py (98%)
rename tests/{queries => integration_tests/charts}/__init__.py (100%)
rename tests/{ => integration_tests}/charts/api_tests.py (98%)
rename tests/{ => integration_tests}/charts/commands_tests.py (97%)
rename tests/{ => integration_tests}/charts/schema_tests.py (95%)
rename tests/{ => integration_tests}/cli_tests.py (98%)
rename tests/{ => integration_tests}/commands_test.py (95%)
rename tests/{ => integration_tests}/config_tests.py (98%)
rename tests/{ => integration_tests}/conftest.py (95%)
rename tests/{ => integration_tests}/core_tests.py (99%)
rename tests/{migrations => integration_tests/css_templates}/__init__.py (100%)
rename tests/{ => integration_tests}/css_templates/api_tests.py (99%)
rename tests/{ => integration_tests}/csv_upload_tests.py (97%)
rename tests/{ => integration_tests}/dashboard_tests.py (97%)
rename tests/{ => integration_tests}/dashboard_utils.py (100%)
rename tests/{fixtures => integration_tests/dashboards}/__init__.py (100%)
rename tests/{ => integration_tests}/dashboards/api_tests.py (99%)
rename tests/{ => integration_tests}/dashboards/base_case.py (93%)
rename tests/{ => integration_tests}/dashboards/commands_tests.py (99%)
rename tests/{ => integration_tests}/dashboards/consts.py (100%)
rename tests/{ => integration_tests}/dashboards/dao_tests.py (94%)
rename tests/{ => integration_tests}/dashboards/dashboard_test_utils.py (97%)
rename tests/{db_engine_specs =>
integration_tests/dashboards/security}/__init__.py (100%)
rename tests/{ => integration_tests}/dashboards/security/base_case.py (97%)
rename tests/{ =>
integration_tests}/dashboards/security/security_dataset_tests.py (95%)
rename tests/{ =>
integration_tests}/dashboards/security/security_rbac_tests.py (96%)
rename tests/{ => integration_tests}/dashboards/superset_factory_util.py (98%)
rename tests/{datasets => integration_tests/databases}/__init__.py (100%)
rename tests/{ => integration_tests}/databases/api_tests.py (99%)
rename tests/{ => integration_tests}/databases/commands_tests.py (98%)
rename tests/{ => integration_tests}/databases/schema_tests.py (100%)
rename tests/{ => integration_tests}/dataframe_test.py (98%)
rename tests/{databases => integration_tests/datasets}/__init__.py (100%)
rename tests/{ => integration_tests}/datasets/api_tests.py (99%)
rename tests/{ => integration_tests}/datasets/commands_tests.py (98%)
rename tests/{ => integration_tests}/datasource_tests.py (98%)
rename tests/{dashboards/security =>
integration_tests/db_engine_specs}/__init__.py (100%)
rename tests/{ => integration_tests}/db_engine_specs/ascend_tests.py (93%)
rename tests/{ => integration_tests}/db_engine_specs/athena_tests.py (96%)
rename tests/{ => integration_tests}/db_engine_specs/base_engine_spec_tests.py
(99%)
rename tests/{ => integration_tests}/db_engine_specs/base_tests.py (94%)
rename tests/{ => integration_tests}/db_engine_specs/bigquery_tests.py (99%)
rename tests/{ => integration_tests}/db_engine_specs/clickhouse_tests.py (95%)
rename tests/{ => integration_tests}/db_engine_specs/crate_tests.py (96%)
rename tests/{ => integration_tests}/db_engine_specs/dremio_tests.py (94%)
rename tests/{ => integration_tests}/db_engine_specs/drill_tests.py (94%)
rename tests/{ => integration_tests}/db_engine_specs/druid_tests.py (92%)
rename tests/{ => integration_tests}/db_engine_specs/elasticsearch_tests.py
(96%)
rename tests/{ => integration_tests}/db_engine_specs/firebird_tests.py (100%)
rename tests/{ => integration_tests}/db_engine_specs/gsheets_tests.py (95%)
rename tests/{ => integration_tests}/db_engine_specs/hana_tests.py (94%)
rename tests/{ => integration_tests}/db_engine_specs/hive_tests.py (99%)
rename tests/{ => integration_tests}/db_engine_specs/impala_tests.py (93%)
rename tests/{ => integration_tests}/db_engine_specs/kylin_tests.py (93%)
rename tests/{ => integration_tests}/db_engine_specs/mssql_tests.py (99%)
rename tests/{ => integration_tests}/db_engine_specs/mysql_tests.py (98%)
rename tests/{ => integration_tests}/db_engine_specs/oracle_tests.py (97%)
rename tests/{ => integration_tests}/db_engine_specs/pinot_tests.py (97%)
rename tests/{ => integration_tests}/db_engine_specs/postgres_tests.py (98%)
rename tests/{ => integration_tests}/db_engine_specs/presto_tests.py (99%)
rename tests/{ => integration_tests}/db_engine_specs/redshift_tests.py (98%)
rename tests/{ => integration_tests}/db_engine_specs/snowflake_tests.py (97%)
rename tests/{ => integration_tests}/db_engine_specs/sqlite_tests.py (97%)
rename tests/{ => integration_tests}/db_engine_specs/trino_tests.py (96%)
rename tests/{ => integration_tests}/dict_import_export_tests.py (99%)
rename tests/{ => integration_tests}/druid_func_tests.py (99%)
rename tests/{ => integration_tests}/druid_func_tests_sip38.py (99%)
rename tests/{ => integration_tests}/druid_tests.py (99%)
rename tests/{ => integration_tests}/dynamic_plugins_tests.py (100%)
rename tests/{ => integration_tests}/email_tests.py (99%)
rename tests/{ => integration_tests}/event_logger_tests.py (99%)
rename tests/{ => integration_tests}/feature_flag_tests.py (95%)
copy tests/{utils => integration_tests/fixtures}/__init__.py (59%)
rename tests/{ => integration_tests}/fixtures/birth_names_dashboard.py (97%)
rename tests/{ => integration_tests}/fixtures/certificates.py (100%)
rename tests/{ => integration_tests}/fixtures/database.py (100%)
rename tests/{ => integration_tests}/fixtures/dataframes.py (100%)
rename tests/{ => integration_tests}/fixtures/datasource.py (100%)
rename tests/{ => integration_tests}/fixtures/deck_geojson_form_data.json
(100%)
rename tests/{ => integration_tests}/fixtures/deck_path_form_data.json (100%)
rename tests/{ => integration_tests}/fixtures/energy_dashboard.py (97%)
rename tests/{ => integration_tests}/fixtures/importexport.py (100%)
rename tests/{ => integration_tests}/fixtures/public_role.py (96%)
rename tests/{ => integration_tests}/fixtures/pyodbcRow.py (100%)
rename tests/{ => integration_tests}/fixtures/query_context.py (99%)
rename tests/{ => integration_tests}/fixtures/sample.png (100%)
rename tests/{ => integration_tests}/fixtures/trends.csv (100%)
rename tests/{ => integration_tests}/fixtures/unicode_dashboard.py (97%)
rename tests/{ => integration_tests}/fixtures/world_bank_dashboard.py (99%)
rename tests/{ => integration_tests}/form_tests.py (96%)
rename tests/{ => integration_tests}/import_export_tests.py (98%)
rename tests/{ => integration_tests}/importexport/commands_tests.py (96%)
rename tests/{ => integration_tests}/insert_chart_mixin.py (100%)
rename tests/{ => integration_tests}/jinja_context_tests.py (98%)
rename tests/{ => integration_tests}/log_api_tests.py (100%)
rename tests/{ => integration_tests}/log_model_view_tests.py (100%)
rename tests/{ => integration_tests}/logging_configurator_tests.py (100%)
rename tests/{ => integration_tests}/migration_tests.py (100%)
rename tests/{dashboards => integration_tests/migrations}/__init__.py (100%)
rename tests/{ => integration_tests}/migrations/f1410ed7ec95_tests.py (100%)
rename tests/{ => integration_tests}/migrations/fc3a3a8ff221_tests.py (100%)
rename tests/{ => integration_tests}/model_tests.py (99%)
rename tests/{ => integration_tests}/pandas_postprocessing_tests.py (100%)
rename tests/{css_templates => integration_tests/queries}/__init__.py (100%)
rename tests/{ => integration_tests}/queries/api_tests.py (99%)
rename tests/{charts => integration_tests/queries/saved_queries}/__init__.py
(100%)
rename tests/{ => integration_tests}/queries/saved_queries/api_tests.py (99%)
rename tests/{ => integration_tests}/queries/saved_queries/commands_tests.py
(98%)
rename tests/{ => integration_tests}/query_context_tests.py (98%)
rename tests/{cachekeys => integration_tests/reports}/__init__.py (100%)
rename tests/{ => integration_tests}/reports/api_tests.py (99%)
rename tests/{ => integration_tests}/reports/commands_tests.py (99%)
rename tests/{ => integration_tests}/reports/scheduler_tests.py (96%)
rename tests/{ => integration_tests}/reports/utils.py (100%)
rename tests/{ => integration_tests}/result_set_tests.py (99%)
rename tests/{ => integration_tests}/schedules_test.py (98%)
rename tests/{async_events => integration_tests/security}/__init__.py (100%)
rename tests/{ => integration_tests}/security/analytics_db_safety_tests.py
(96%)
rename tests/{ => integration_tests}/security/api_tests.py (96%)
rename tests/{ => integration_tests}/security/migrate_roles_tests.py (99%)
rename tests/{ => integration_tests}/security_tests.py (99%)
rename tests/{ => integration_tests}/sql_parse_tests.py (100%)
rename tests/{ => integration_tests}/sql_validator_tests.py (100%)
rename tests/{ => integration_tests}/sqla_models_tests.py (99%)
rename tests/{ => integration_tests}/sqla_views_tests.py (92%)
rename tests/{ => integration_tests}/sqllab_tests.py (99%)
rename tests/{ => integration_tests}/stats_logger_tests.py (100%)
rename tests/{ => integration_tests}/strategy_tests.py (98%)
rename tests/{ => integration_tests}/superset_test_config.py (93%)
rename tests/{ =>
integration_tests}/superset_test_config_sqllab_backend_persist.py (100%)
rename tests/{ => integration_tests}/superset_test_config_thumbnails.py (96%)
rename tests/{ =>
integration_tests}/superset_test_custom_template_processors.py (100%)
rename tests/{ => integration_tests}/tagging_tests.py (90%)
rename tests/{annotation_layers => integration_tests/tasks}/__init__.py (100%)
rename tests/{ => integration_tests}/tasks/async_queries_tests.py (96%)
rename tests/{ => integration_tests}/test_app.py (96%)
rename tests/{ => integration_tests}/thumbnails_tests.py (98%)
rename tests/{ => integration_tests}/utils/__init__.py (95%)
rename tests/{ => integration_tests}/utils/core_tests.py (100%)
rename tests/{ => integration_tests}/utils/csv_tests.py (100%)
rename tests/{ => integration_tests}/utils/date_parser_tests.py (99%)
rename tests/{ => integration_tests}/utils/decorators_tests.py (96%)
rename tests/{ => integration_tests}/utils/encrypt_tests.py (97%)
rename tests/{ => integration_tests}/utils/get_dashboards.py (100%)
rename tests/{ => integration_tests}/utils/hashing_tests.py (100%)
rename tests/{ => integration_tests}/utils/machine_auth_tests.py (97%)
rename tests/{ => integration_tests}/utils/public_interfaces_test.py (98%)
rename tests/{ => integration_tests}/utils_tests.py (99%)
rename tests/{ => integration_tests}/viz_tests.py (99%)
rename tests/{tasks => unit_tests}/__init__.py (100%)