Example #1
0
def test_sql_validation():
    """
    Test that sql gets validated.
    """
    with pytest.raises(pglast.parser.ParseError):
        sql = "elect foo from mooses"
        pretty_sql(sql)
Example #2
0
def test_versioned_site_sql(diff_reporter):
    """
    Verify the SQL for a versioned-site spatial unit.
    """
    su = make_spatial_unit("versioned-site")
    sql = pretty_sql(su.get_query())
    verify(sql, diff_reporter)
Example #3
0
def test_daily_location_1_sql(diff_reporter):
    """
    Simple daily location query returns the expected SQL string.
    """
    dl = daily_location("2016-01-01", "2016-01-02")
    sql = pretty_sql(dl.get_query())
    verify(sql, diff_reporter)
Example #4
0
def test_sql_prettified():
    """
    Test that sql is prettified as expected.
    """
    sql = "select foo, beta, frog from (select * from octagon where mooses in ('bees')) z limit 9"
    prettied = "SELECT foo,\n       beta,\n       frog\nFROM (SELECT *\n      FROM octagon\n      WHERE mooses IN ('bees')) AS z\nLIMIT 9"
    assert pretty_sql(sql) == prettied
def test_event_count_5_sql(diff_reporter):
    """
    Event count query with hours spanning midnight returns the expected sql string.
    """
    ec = EventCount(start="2016-01-03", stop="2016-01-06", hours=(22, 4))
    sql = pretty_sql(ec.get_query())
    diff_reporter(sql)
Example #6
0
 def __init__(self, sql: str, column_names: Union[List[str], Set[str]]):
     self.sql = pretty_sql(sql)
     seen = {}  # Dedupe the column names but preserve order
     self._column_names = [
         seen.setdefault(x, x) for x in column_names if x not in seen
     ]
     super().__init__()
def test_event_count_4_sql(diff_reporter):
    """
    Event count query with restricted hours returns the expected sql string.
    """
    ec = EventCount(start="2016-01-02", stop="2016-01-04", hours=(12, 18))
    sql = pretty_sql(ec.get_query())
    diff_reporter(sql)
def test_event_count_3_sql(diff_reporter):
    """
    Event count query with implicit start date returns the expected sql string.
    """
    ec = EventCount(start=None, stop="2016-01-02")
    sql = pretty_sql(ec.get_query())
    diff_reporter(sql)
Example #9
0
def test_daily_location_4_sql(diff_reporter):
    """
    Regression test; this verifies the SQL statement for the test below (which checks the resulting dataframe)
    """
    subset_query = CustomQuery(
        "SELECT * FROM (VALUES ('dr9xNYK006wykgXj')) as tmp (subscriber)",
        column_names=["subscriber"],
    )
    dl = daily_location(
        "2016-01-05",
        table="events.calls",
        hours=(22, 6),
        subscriber_subset=subset_query,
    )
    sql = pretty_sql(dl.get_query())
    verify(sql, diff_reporter)
Example #10
0
def test_daily_location_6_sql(diff_reporter):
    """
    Regression test; this verifies the SQL statement for the test below (which checks the resulting dataframe)
    """
    subset_query = CustomQuery(
        """
        SELECT outgoing, datetime, duration, msisdn AS subscriber
        FROM events.calls
        WHERE datetime::date = '2016-01-01' AND duration > 2000
        """,
        ["subscriber"],
    )
    dl = daily_location("2016-01-03",
                        table="events.calls",
                        subscriber_subset=subset_query)
    sql = pretty_sql(dl.get_query())
    verify(sql, diff_reporter)
Example #11
0
def test_daily_location_1_sql(diff_reporter):
    """
    Daily location query with non-default parameters returns the expected data.
    """
    subset_query = CustomQuery(
        "SELECT DISTINCT msisdn AS subscriber FROM events.calls WHERE msisdn in ('GNLM7eW5J5wmlwRa', 'e6BxY8mAP38GyAQz', '1vGR8kp342yxEpwY')",
        column_names=["subscriber"],
    )
    dl = daily_location(
        "2016-01-05",
        spatial_unit=make_spatial_unit("cell"),
        hours=(23, 5),
        method="last",
        subscriber_subset=subset_query,
    )
    sql = pretty_sql(dl.get_query())
    diff_reporter(sql)
def test_daily_location_3_sql(diff_reporter):
    """
    Daily location query with non-default parameters returns the expected data.
    """
    subset_query = CustomQuery(
        "SELECT DISTINCT msisdn AS subscriber FROM events.calls WHERE msisdn in ('GNLM7eW5J5wmlwRa', 'e6BxY8mAP38GyAQz', '1vGR8kp342yxEpwY')",
        column_names=["subscriber"],
    )
    dl = daily_location(
        "2016-01-05",
        level="cell",
        hours=(23, 5),
        method="last",
        # subscriber_identifier="imei",
        # column_name="admin2pcod",
        # ignore_nulls=False,
        subscriber_subset=subset_query,
    )
    sql = pretty_sql(dl.get_query())
    verify(sql, diff_reporter)
Example #13
0
def test_events_tables_union_1_sql(diff_reporter):
    """
    EventsTablesUnion returns the expected sql string.
    """
    etu = EventsTablesUnion(
        start="2016-01-02",
        stop="2016-01-03",
        tables=["events.calls"],
        columns=[
            "datetime",
            "duration",
            "id",
            "location_id",
            "msisdn",
            "msisdn_counterpart",
            "outgoing",
            "tac",
        ],
    )
    sql = pretty_sql(etu.get_query())
    diff_reporter(sql)
def test_daily_location_2_sql(diff_reporter):
    """
    Daily location query with non-default parameters returns the expected SQL string.
    """
    dl = daily_location(
        "2016-01-04",
        level="admin2",
        hours=(3, 9),
        method="most-common",
        subscriber_identifier="imei",
        column_name="admin2pcod",
        ignore_nulls=False,
        subscriber_subset=[
            "2GJxeNazvlgZbqj6",
            "7qKmzkeMbmk5nOa0",
            "8dpPLR15XwR7jQyN",
            "1NqnrAB9bRd597x2",
        ],
    )
    sql = pretty_sql(dl.get_query())
    verify(sql, diff_reporter)