def test_event_filter_matching_with_no_session_id(self): Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) self.create_snapshot("user", "1", self.base_time, window_id="1") self.create_event("user", self.base_time) self.create_snapshot("user", "1", self.base_time + relativedelta(seconds=30), window_id="1") self.create_event("user", self.base_time + relativedelta(seconds=31), event_name="$autocapture") # Pageview within timestamps matches recording filter = SessionRecordingsFilter( team=self.team, data={ "events": [{ "id": "$pageview", "type": "events", "order": 0, "name": "$pageview" }] }, ) session_recording_list_instance = ClickhouseSessionRecordingList( filter=filter, team_id=self.team.pk) (session_recordings, _) = session_recording_list_instance.run() self.assertEqual(len(session_recordings), 1) self.assertEqual(session_recordings[0]["session_id"], "1") # Pageview outside timestamps does not match recording filter = SessionRecordingsFilter( team=self.team, data={ "events": [{ "id": "$autocapture", "type": "events", "order": 0, "name": "$autocapture" }] }, ) session_recording_list_instance = ClickhouseSessionRecordingList( filter=filter, team_id=self.team.pk) (session_recordings, _) = session_recording_list_instance.run() self.assertEqual(len(session_recordings), 0)
def test_event_filter_with_person_properties(self): Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) Person.objects.create(team=self.team, distinct_ids=["user2"], properties={"email": "bla2"}) self.create_snapshot("user", "1", self.base_time) self.create_event("user", self.base_time) self.create_snapshot("user", "1", self.base_time + relativedelta(seconds=30)) self.create_snapshot("user2", "2", self.base_time) self.create_event("user2", self.base_time) self.create_snapshot("user2", "2", self.base_time + relativedelta(seconds=30)) filter = SessionRecordingsFilter( team=self.team, data={ "properties": [{ "key": "email", "value": ["bla"], "operator": "exact", "type": "person" }], }, ) session_recording_list_instance = ClickhouseSessionRecordingList( filter=filter, team_id=self.team.pk) (session_recordings, _) = session_recording_list_instance.run() self.assertEqual(len(session_recordings), 1) self.assertEqual(session_recordings[0]["session_id"], "1")
def test_event_filter_with_cohort_properties(self): with self.settings(USE_PRECALCULATED_CH_COHORT_PEOPLE=True): with freeze_time("2021-08-21T20:00:00.000Z"): Person.objects.create(team=self.team, distinct_ids=["user"], properties={"email": "bla"}) Person.objects.create(team=self.team, distinct_ids=["user2"], properties={ "email": "bla2", "$some_prop": "some_val" }) cohort = Cohort.objects.create(team=self.team, name="cohort1", groups=[{ "properties": { "$some_prop": "some_val" } }]) cohort.calculate_people_ch(pending_version=0) self.create_snapshot("user", "1", self.base_time) self.create_event("user", self.base_time, team=self.team) self.create_snapshot( "user", "1", self.base_time + relativedelta(seconds=30)) self.create_snapshot("user2", "2", self.base_time) self.create_event("user2", self.base_time, team=self.team) self.create_snapshot( "user2", "2", self.base_time + relativedelta(seconds=30)) filter = SessionRecordingsFilter( team=self.team, data={ "properties": [{ "key": "id", "value": cohort.pk, "operator": None, "type": "cohort" }], }, ) session_recording_list_instance = ClickhouseSessionRecordingList( filter=filter, team_id=self.team.pk) (session_recordings, _) = session_recording_list_instance.run() self.assertEqual(len(session_recordings), 1) self.assertEqual(session_recordings[0]["session_id"], "2")