def test_no_event_in_period(self): _create_person(distinct_ids=["user a"], team=self.team) _create_event(event="step one", distinct_id="user a", team=self.team, timestamp="2021-06-06 21:00:00") filter = Filter( data={ "insight": INSIGHT_FUNNELS, "display": TRENDS_LINEAR, "interval": "day", "date_from": "2021-06-07 00:00:00", "date_to": "2021-06-13 23:59:59", "funnel_window_days": 7, "events": [ {"id": "step one", "order": 0}, {"id": "step two", "order": 1}, {"id": "step three", "order": 2}, ], } ) funnel_trends = ClickhouseFunnelTrends(filter, self.team, ClickhouseFunnel) results = funnel_trends._exec_query() formatted_results = funnel_trends._format_results(results) self.assertEqual(len(results), 7) self.assertEqual(formatted_results[0]["days"][0], "2021-06-07")
def test_only_one_user_reached_one_step(self): _create_person(distinct_ids=["user a"], team=self.team) _create_event(event="step one", distinct_id="user a", team=self.team, timestamp="2021-06-07 19:00:00") filter = Filter( data={ "insight": INSIGHT_FUNNELS, "display": TRENDS_LINEAR, "interval": "day", "date_from": "2021-06-07 00:00:00", "date_to": "2021-06-13 23:59:59", "funnel_window_days": 7, "events": [ {"id": "step one", "order": 0}, {"id": "step two", "order": 1}, {"id": "step three", "order": 2}, ], } ) funnel_trends = ClickhouseFunnelTrends(filter, self.team, ClickhouseFunnel) results = funnel_trends._exec_query() self.assertEqual( results, [ { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 1, "timestamp": datetime(2021, 6, 7, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 8, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 9, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 10, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 11, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 12, 0, 0).replace(tzinfo=pytz.UTC), }, { "reached_to_step_count": 0, "is_period_final": True, "conversion_rate": 0, "reached_from_step_count": 0, "timestamp": datetime(2021, 6, 13, 0, 0).replace(tzinfo=pytz.UTC), }, ], ) # 1 user who dropped off starting 2021-06-07 funnel_trends_persons_existent_dropped_off_results, _ = ClickhouseFunnelTrendsPersons( Filter({**filter._data, "entrance_period_start": "2021-06-07 00:00:00", "drop_off": True}), self.team, ClickhouseFunnel, ).run() self.assertEqual( len(funnel_trends_persons_existent_dropped_off_results), 1, ) self.assertEqual( [person["distinct_ids"] for person in funnel_trends_persons_existent_dropped_off_results], [["user a"]], ) # No users converted 2021-06-07 funnel_trends_persons_nonexistent_converted_results, _ = ClickhouseFunnelTrendsPersons( Filter({**filter._data, "entrance_period_start": "2021-06-07 00:00:00", "drop_off": False}), self.team, ClickhouseFunnel, ).run() self.assertEqual( len(funnel_trends_persons_nonexistent_converted_results), 0, ) # No users dropped off 2021-06-08 funnel_trends_persons_nonexistent_converted_results, _ = ClickhouseFunnelTrendsPersons( Filter({**filter._data, "entrance_period_start": "2021-06-08 00:00:00", "drop_off": True}), self.team, ClickhouseFunnel, ).run() self.assertEqual( len(funnel_trends_persons_nonexistent_converted_results), 0, )