From 1466222b4a1e860ca5ea157b7b3d01f35a139d55 Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Mon, 25 Nov 2024 22:16:19 +0100 Subject: [PATCH] Added options for channels. --- pkg/analyzer/filter_options.go | 5 +++++ pkg/analyzer/filter_options_test.go | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/pkg/analyzer/filter_options.go b/pkg/analyzer/filter_options.go index 070fea0d..c67ad852 100644 --- a/pkg/analyzer/filter_options.go +++ b/pkg/analyzer/filter_options.go @@ -63,6 +63,11 @@ func (options *FilterOptions) UTMTerm(filter *Filter) ([]string, error) { return options.selectFilterOptions(filter, "utm_term", "session") } +// Channel returns all channels. +func (options *FilterOptions) Channel(filter *Filter) ([]string, error) { + return options.selectFilterOptions(filter, "channel", "session") +} + // Events returns all event names. func (options *FilterOptions) Events(filter *Filter) ([]string, error) { return options.selectFilterOptions(filter, "event_name", "event") diff --git a/pkg/analyzer/filter_options_test.go b/pkg/analyzer/filter_options_test.go index 0dc3234b..7babc908 100644 --- a/pkg/analyzer/filter_options_test.go +++ b/pkg/analyzer/filter_options_test.go @@ -156,6 +156,29 @@ func TestFilterOptions_UTM(t *testing.T) { assert.Equal(t, "foo", utmTerm[1]) } +func TestFilterOptions_Channel(t *testing.T) { + db.CleanupDB(t, dbClient) + assert.NoError(t, dbClient.SaveSessions([]model.Session{ + {Sign: 1, VisitorID: 1, SessionID: 1, Time: util.PastDay(4), Start: util.PastDay(4), Channel: "Paid Social"}, + {Sign: 1, VisitorID: 1, SessionID: 1, Time: util.PastDay(2), Start: util.PastDay(2), Channel: "Organic Search"}, + {Sign: 1, VisitorID: 1, SessionID: 2, Time: util.PastDay(2), Start: util.PastDay(2), Channel: "Organic Search"}, + {Sign: 1, VisitorID: 1, SessionID: 1, Time: util.PastDay(1), Start: util.PastDay(1), Channel: "Direct"}, + })) + time.Sleep(time.Millisecond * 100) + analyzer := NewAnalyzer(dbClient) + options, err := analyzer.Options.Channel(nil) + assert.NoError(t, err) + assert.Len(t, options, 3) + assert.Equal(t, "Direct", options[0]) + assert.Equal(t, "Organic Search", options[1]) + assert.Equal(t, "Paid Social", options[2]) + options, err = analyzer.Options.Channel(&Filter{From: util.PastDay(3), To: util.Today()}) + assert.NoError(t, err) + assert.Len(t, options, 2) + assert.Equal(t, "Direct", options[0]) + assert.Equal(t, "Organic Search", options[1]) +} + func TestFilterOptions_Events(t *testing.T) { db.CleanupDB(t, dbClient) assert.NoError(t, dbClient.SaveEvents([]model.Event{