2021-08-24 06:21:48 +03:00
|
|
|
import sys
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
2021-06-24 17:11:00 -07:00
|
|
|
from datahub.utilities.delayed_iter import delayed_iter
|
2021-07-30 17:41:03 -07:00
|
|
|
from datahub.utilities.groupby import groupby_unsorted
|
2021-08-24 06:21:48 +03:00
|
|
|
from datahub.utilities.sql_parser import DefaultSQLParser
|
2021-06-24 17:11:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
def test_delayed_iter():
|
|
|
|
events = []
|
|
|
|
|
2021-07-14 20:05:31 -07:00
|
|
|
def maker(n):
|
|
|
|
for i in range(n):
|
2021-06-24 17:11:00 -07:00
|
|
|
events.append(("add", i))
|
|
|
|
yield i
|
|
|
|
|
2021-07-14 20:05:31 -07:00
|
|
|
for i in delayed_iter(maker(4), 2):
|
2021-06-24 17:11:00 -07:00
|
|
|
events.append(("remove", i))
|
|
|
|
|
|
|
|
assert events == [
|
|
|
|
("add", 0),
|
|
|
|
("add", 1),
|
|
|
|
("add", 2),
|
|
|
|
("remove", 0),
|
|
|
|
("add", 3),
|
|
|
|
("remove", 1),
|
|
|
|
("remove", 2),
|
|
|
|
("remove", 3),
|
|
|
|
]
|
2021-07-14 20:05:31 -07:00
|
|
|
|
|
|
|
events.clear()
|
|
|
|
for i in delayed_iter(maker(2), None):
|
|
|
|
events.append(("remove", i))
|
|
|
|
|
|
|
|
assert events == [
|
|
|
|
("add", 0),
|
|
|
|
("add", 1),
|
|
|
|
("remove", 0),
|
|
|
|
("remove", 1),
|
|
|
|
]
|
2021-07-30 17:41:03 -07:00
|
|
|
|
|
|
|
|
|
|
|
def test_groupby_unsorted():
|
|
|
|
grouped = groupby_unsorted("ABCAC", key=lambda x: x)
|
|
|
|
|
|
|
|
assert list(grouped) == [
|
|
|
|
("A", ["A", "A"]),
|
|
|
|
("B", ["B"]),
|
|
|
|
("C", ["C", "C"]),
|
|
|
|
]
|
2021-08-24 06:21:48 +03:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.integration
|
|
|
|
@pytest.mark.skipif(
|
|
|
|
sys.version_info < (3, 7), reason="The LookML source requires Python 3.7+"
|
|
|
|
)
|
|
|
|
def test_default_sql_parser():
|
|
|
|
sql_query = "SELECT foo.a, foo.b, bar.c FROM foo JOIN bar ON (foo.a == bar.b);"
|
|
|
|
|
|
|
|
tables_list = DefaultSQLParser(sql_query).get_tables()
|
|
|
|
|
|
|
|
assert tables_list == ["foo", "bar"]
|