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