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  }