Skip to content

Commit

Permalink
Improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mistercrunch committed Oct 16, 2018
1 parent f1c740c commit 92c9382
Show file tree
Hide file tree
Showing 13 changed files with 32 additions and 41 deletions.
1 change: 1 addition & 0 deletions superset/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ def load_test_users():
Syncs permissions for those users/roles
"""
print(Fore.GREEN + 'Loading a set of users for unit tests')
load_test_users_run()


Expand Down
2 changes: 1 addition & 1 deletion superset/views/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def bootstrap_user_data(username=None, include_perms=False):
'firstName': user.first_name,
'lastName': user.last_name,
'userId': user.id,
'isActive': user.is_active(),
'isActive': user.is_active,
'createdOn': user.created_on.isoformat(),
'email': user.email,
}
Expand Down
18 changes: 3 additions & 15 deletions tests/base_tests.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
"""Unit tests for Superset"""
import json
import logging
import os
import unittest

from flask_appbuilder.security.sqla import models as ab_models
from mock import Mock
import pandas as pd

from superset import app, cli, db, security_manager
from superset import app, db, security_manager
from superset.connectors.druid.models import DruidCluster, DruidDatasource
from superset.connectors.sqla.models import SqlaTable
from superset.models import core as models
from superset.utils.core import get_main_database


BASE_DIR = app.config.get('BASE_DIR')


Expand All @@ -23,21 +20,12 @@ class SupersetTestCase(unittest.TestCase):
examples_loaded = False

def __init__(self, *args, **kwargs):
if (
self.requires_examples and
not os.environ.get('examples_loaded')
):
logging.info('Loading examples')
cli.load_examples_run(load_test_data=True)
logging.info('Done loading examples')
os.environ['examples_loaded'] = '1'

security_manager.sync_role_definitions()
super(SupersetTestCase, self).__init__(*args, **kwargs)
self.client = app.test_client()
self.maxDiff = None

cli.load_test_users_run()
@classmethod
def create_druid_test_objects(cls):
# create druid cluster and druid datasources
session = db.session
cluster = (
Expand Down
2 changes: 1 addition & 1 deletion tests/celery_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from superset.models.helpers import QueryStatus
from superset.models.sql_lab import Query
from superset.sql_parse import SupersetQuery
from superset.utils import get_main_database
from superset.utils.core import get_main_database
from .base_tests import SupersetTestCase


Expand Down
2 changes: 1 addition & 1 deletion tests/core_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from superset.models import core as models
from superset.models.sql_lab import Query
from superset.utils import core as utils
from superset.utils.core import get_main_database, QueryStatus
from superset.utils.core import get_main_database
from superset.views.core import DatabaseView
from .base_tests import SupersetTestCase

Expand Down
2 changes: 1 addition & 1 deletion tests/dict_import_export_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
DruidColumn, DruidDatasource, DruidMetric,
)
from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn
from superset.utils import get_main_database
from superset.utils.core import get_main_database
from .base_tests import SupersetTestCase

DBREF = 'dict_import__export_test'
Expand Down
5 changes: 3 additions & 2 deletions tests/druid_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,9 @@ class DruidTests(SupersetTestCase):

"""Testing interactions with Druid"""

def __init__(self, *args, **kwargs):
super(DruidTests, self).__init__(*args, **kwargs)
@classmethod
def setUpClass(cls):
cls.create_druid_test_objects()

def get_test_cluster_obj(self):
return DruidCluster(
Expand Down
1 change: 1 addition & 0 deletions tests/email_tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
"""Unit tests for email service in Superset"""
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
Expand Down
6 changes: 2 additions & 4 deletions tests/import_export_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
)
from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn
from superset.models import core as models
from superset.utils.core import decode_dashboards
from superset.utils import core as utils
from .base_tests import SupersetTestCase


Expand All @@ -19,9 +19,6 @@ class ImportExportTests(SupersetTestCase):

requires_examples = True

def __init__(self, *args, **kwargs):
super(ImportExportTests, self).__init__(*args, **kwargs)

@classmethod
def delete_imports(cls):
# Imported data clean up
Expand All @@ -43,6 +40,7 @@ def delete_imports(cls):
@classmethod
def setUpClass(cls):
cls.delete_imports()
cls.create_druid_test_objects()

@classmethod
def tearDownClass(cls):
Expand Down
2 changes: 1 addition & 1 deletion tests/sqllab_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from superset.dataframe import SupersetDataFrame
from superset.db_engine_specs import BaseEngineSpec
from superset.models.sql_lab import Query
from superset.utils.core import get_main_database, datetime_to_epoch
from superset.utils.core import datetime_to_epoch, get_main_database
from .base_tests import SupersetTestCase


Expand Down
28 changes: 14 additions & 14 deletions tests/utils_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def test_base_json_conv(self):
assert isinstance(base_json_conv(Decimal('1.0')), float) is True
assert isinstance(base_json_conv(uuid.uuid4()), str) is True

@patch('superset.utils.datetime')
@patch('superset.utils.core.datetime')
def test_parse_human_timedelta(self, mock_now):
mock_now.return_value = datetime(2016, 12, 1)
self.assertEquals(parse_human_timedelta('now'), timedelta(0))
Expand All @@ -108,7 +108,7 @@ def test_zlib_compression(self):
got_str = zlib_decompress_to_string(blob)
self.assertEquals(json_str, got_str)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters(self):
# does nothing if no extra filters
form_data = {'A': 1, 'B': 2, 'c': 'test'}
Expand Down Expand Up @@ -216,7 +216,7 @@ def test_merge_extra_filters(self):
merge_extra_filters(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters_ignores_empty_filters(self):
form_data = {'extra_filters': [
{'col': 'a', 'op': 'in', 'val': ''},
Expand All @@ -226,7 +226,7 @@ def test_merge_extra_filters_ignores_empty_filters(self):
merge_extra_filters(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters_ignores_nones(self):
form_data = {
'adhoc_filters': [
Expand Down Expand Up @@ -256,7 +256,7 @@ def test_merge_extra_filters_ignores_nones(self):
merge_extra_filters(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters_ignores_equal_filters(self):
form_data = {
'extra_filters': [
Expand Down Expand Up @@ -301,7 +301,7 @@ def test_merge_extra_filters_ignores_equal_filters(self):
merge_extra_filters(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters_merges_different_val_types(self):
form_data = {
'extra_filters': [
Expand Down Expand Up @@ -402,7 +402,7 @@ def test_merge_extra_filters_merges_different_val_types(self):
merge_extra_filters(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_merge_extra_filters_adds_unequal_lists(self):
form_data = {
'extra_filters': [
Expand Down Expand Up @@ -576,7 +576,7 @@ def test_method(self, a, b, c):
self.assertEqual(instance.watcher, 4)
self.assertEqual(result1, result8)

@patch('superset.utils.parse_human_datetime', mock_parse_human_datetime)
@patch('superset.utils.core.parse_human_datetime', mock_parse_human_datetime)
def test_get_since_until(self):
form_data = {}
result = get_since_until(form_data)
Expand Down Expand Up @@ -623,7 +623,7 @@ def test_get_since_until(self):
expected = datetime(2016, 11, 2), datetime(2016, 11, 8)
self.assertEqual(result, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_where(self):
form_data = {
'where': 'a = 1',
Expand All @@ -640,7 +640,7 @@ def test_convert_legacy_filters_into_adhoc_where(self):
convert_legacy_filters_into_adhoc(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_filters(self):
form_data = {
'filters': [{'col': 'a', 'op': 'in', 'val': 'someval'}],
Expand All @@ -659,7 +659,7 @@ def test_convert_legacy_filters_into_adhoc_filters(self):
convert_legacy_filters_into_adhoc(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_having(self):
form_data = {
'having': 'COUNT(1) = 1',
Expand All @@ -676,7 +676,7 @@ def test_convert_legacy_filters_into_adhoc_having(self):
convert_legacy_filters_into_adhoc(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_having_filters(self):
form_data = {
'having_filters': [{'col': 'COUNT(1)', 'op': '==', 'val': 1}],
Expand All @@ -695,7 +695,7 @@ def test_convert_legacy_filters_into_adhoc_having_filters(self):
convert_legacy_filters_into_adhoc(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_present_and_empty(self):
form_data = {
'adhoc_filters': [],
Expand All @@ -713,7 +713,7 @@ def test_convert_legacy_filters_into_adhoc_present_and_empty(self):
convert_legacy_filters_into_adhoc(form_data)
self.assertEquals(form_data, expected)

@patch('superset.utils.to_adhoc', mock_to_adhoc)
@patch('superset.utils.core.to_adhoc', mock_to_adhoc)
def test_convert_legacy_filters_into_adhoc_present_and_nonempty(self):
form_data = {
'adhoc_filters': [
Expand Down
2 changes: 1 addition & 1 deletion tests/viz_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -996,7 +996,7 @@ def test_parse_coordinates_raises(self):
with self.assertRaises(SpatialException):
test_viz_deckgl.parse_coordinates('fldkjsalkj,fdlaskjfjadlksj')

@patch('superset.utils.uuid.uuid4')
@patch('superset.utils.core.uuid.uuid4')
def test_filter_nulls(self, mock_uuid4):
mock_uuid4.return_value = uuid.UUID('12345678123456781234567812345678')
test_form_data = {
Expand Down
2 changes: 2 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ require-code = true
[testenv]
commands =
{toxinidir}/superset/bin/superset db upgrade
{toxinidir}/superset/bin/superset load_test_users
{toxinidir}/superset/bin/superset load_examples
nosetests {posargs}
deps =
-rrequirements.txt
Expand Down

0 comments on commit 92c9382

Please sign in to comment.