From 7f66f31f3fb9c3b58f12101f5c9345e9c34b614b Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 29 Jul 2026 20:21:24 -0700 Subject: [PATCH] Update expanded metrics bounce assertions for custom events --- src/queries/sql/getChannelExpandedMetrics.test.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/queries/sql/getChannelExpandedMetrics.test.ts b/src/queries/sql/getChannelExpandedMetrics.test.ts index 452071e86..778ca31a6 100644 --- a/src/queries/sql/getChannelExpandedMetrics.test.ts +++ b/src/queries/sql/getChannelExpandedMetrics.test.ts @@ -1,6 +1,8 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; import { + BOUNCE_THRESHOLD, EMAIL_DOMAINS, + EVENT_TYPE, LLM_DOMAINS, PAID_AD_PARAMS, SEARCH_DOMAINS, @@ -83,7 +85,12 @@ describe('getChannelExpandedMetrics postgres branch', () => { expect(query).toContain('sum(visit_stats.c) as "pageviews"'); expect(query).toContain('count(distinct visit_stats.session_id) as "visitors"'); expect(query).toContain('count(distinct visit_stats.visit_id) as "visits"'); - expect(query).toContain('sum(case when visit_stats.c = 1 then 1 else 0 end) as "bounces"'); + expect(query).toContain('visit_events as'); + expect(query).toContain(`and event_type = ${EVENT_TYPE.customEvent}`); + expect(query).toContain('left join visit_events'); + expect(query).toContain( + `sum(case when visit_stats.c = 1 and coalesce(visit_events.events_count, 0) < ${BOUNCE_THRESHOLD} then 1 else 0 end) as "bounces"`, + ); // getTimestampDiffSQL output is injected into the totaltime column expect(query).toContain('sum(ts_diff(min_time, max_time)) as "totaltime"'); expect(getTimestampDiffSQL).toHaveBeenCalledWith( @@ -151,7 +158,11 @@ describe('getChannelExpandedMetrics clickhouse branch', () => { expect(query).toContain('uniq(t.session_id) as "visitors"'); expect(query).toContain('uniq(t.visit_id) as "visits"'); - expect(query).toContain('sum(if(t.c = 1, 1, 0)) as "bounces"'); + expect(query).toContain( + `sumIf(1, t.c = 1 and ifNull(e.events_count, 0) < ${BOUNCE_THRESHOLD}) as "bounces"`, + ); + expect(query).toContain(`and event_type = ${EVENT_TYPE.customEvent}`); + expect(query).toContain('as e using (session_id, visit_id)'); expect(query).toContain('sum(max_time-min_time) as "totaltime"'); expect(query).toContain('where website_id = {websiteId:UUID}'); expect(query).toContain(