def test_bad_statistic():
    """Test that invalid stat for aggregate raises value error."""
    with pytest.raises(ValueError):
        AggregateNetworkObjects(
            total_network_objects=TotalNetworkObjects(start="2016-01-01",
                                                      stop="2016-12-30",
                                                      table="calls"),
            statistic="count",
        )
def test_bad_aggregate_by():
    """Test that invalid 'aggregate_by' param raises value error."""
    with pytest.raises(ValueError):
        AggregateNetworkObjects(
            total_network_objects=TotalNetworkObjects(start="2016-01-01",
                                                      stop="2016-12-30",
                                                      table="calls"),
            aggregate_by="BAD_AGGREGATE_BY",
        )
    def _flowmachine_query_obj(self):
        """
        Return the underlying flowmachine aggregate_network_objects object.

        Returns
        -------
        Query
        """
        tot_network_objs = self.total_network_objects._flowmachine_query_obj

        return AggregateNetworkObjects(
            total_network_objects=tot_network_objs,
            statistic=self.statistic,
            aggregate_by=self.aggregate_by,
        )
Esempio n. 4
0
def test_median_returns_correct_values(get_dataframe):
    """
    features.network.TotalNetworkObjects median aggregate returns correct values.

    """
    instance = AggregateNetworkObjects(
        total_network_objects=TotalNetworkObjects(
            table="calls", period="hour", network_object="versioned-site"),
        by="day",
        statistic="median",
    )

    #
    #  This will compare the very first
    #  value with an independently
    #  computed value.
    #
    assert get_dataframe(instance).head(1)["median"][0] == 25
def test_aggregate_returns_correct_values(stat, expected, get_dataframe):
    """
    AggregateNetworkObjects returns correct values.

    """
    instance = AggregateNetworkObjects(
        total_network_objects=TotalNetworkObjects(start="2016-01-01",
                                                  stop="2016-12-30",
                                                  table="calls",
                                                  total_by="hour"),
        statistic=stat,
    )
    df = get_dataframe(instance)

    #
    #  This will compare the very first
    #  value with an independently
    #  computed value.
    #
    assert pytest.approx(df.value[0]) == expected
def test_mean_returns_correct_values(get_dataframe):
    """
    features.network.TotalNetworkObjects aggregation returns correct values.

    """
    instance = AggregateNetworkObjects(
        total_network_objects=TotalNetworkObjects(
            start="2016-01-01",
            stop="2016-12-30",
            total_by="hour",
            network_object=make_spatial_unit("versioned-site"),
        ),
        aggregate_by="day",
    )

    #
    #  This will compare the very first
    #  value with an independently
    #  computed value.
    #
    assert get_dataframe(instance).head(1)["value"][0] == pytest.approx(
        28.7916666666)
def test_period_agg_default(total_by, aggregate_by_expected):
    """Correct aggregation period is deduced."""
    inst = AggregateNetworkObjects(total_network_objects=TotalNetworkObjects(
        start="2016-01-01", stop="2016-12-30", total_by=total_by))
    assert inst.aggregate_by == aggregate_by_expected