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, )
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