github.com/blend/go-sdk@v1.20240719.1/stats/mock_event_collector.go (about) 1 /* 2 3 Copyright (c) 2024 - Present. Blend Labs, Inc. All rights reserved 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file. 5 6 */ 7 8 package stats 9 10 // Assert that the mock collector implements Collector. 11 var ( 12 _ EventCollector = (*MockEventCollector)(nil) 13 ) 14 15 // NewMockEventCollector returns a new mock collector. 16 func NewMockEventCollector() *MockEventCollector { 17 return &MockEventCollector{ 18 Events: make(chan Event), 19 } 20 } 21 22 // MockEventCollector is a mocked collector for stats. 23 type MockEventCollector struct { 24 defaultTags []string 25 Events chan Event 26 } 27 28 // AddDefaultTag adds a default tag. 29 func (mec *MockEventCollector) AddDefaultTag(name, value string) { 30 mec.defaultTags = append(mec.defaultTags, Tag(name, value)) 31 } 32 33 // AddDefaultTags adds default tags. 34 func (mec *MockEventCollector) AddDefaultTags(tags ...string) { 35 mec.defaultTags = append(mec.defaultTags, tags...) 36 } 37 38 // DefaultTags returns the default tags set. 39 func (mec MockEventCollector) DefaultTags() []string { 40 return mec.defaultTags 41 } 42 43 // SendEvent sends an event. 44 func (mec MockEventCollector) SendEvent(e Event) error { 45 mec.Events <- e 46 return nil 47 } 48 49 // CreateEvent creates a mock event with the default tags. 50 func (mec MockEventCollector) CreateEvent(title, text string, tags ...string) Event { 51 return Event{ 52 Title: title, 53 Text: text, 54 Tags: append(mec.defaultTags, tags...), 55 } 56 }