You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.8 KiB
Go

package events
// Tests for event base fields and event type string behavior.
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
)
// TestNewBaseEvent ensures new base event behavior is handled correctly.
func TestNewBaseEvent(t *testing.T) {
before := time.Now()
base := NewBaseEvent(GameSessionStarted, "agg-1", "session")
after := time.Now()
require.Equal(t, GameSessionStarted, base.EventType())
require.Equal(t, "agg-1", base.AggregateID())
require.Equal(t, "session", base.AggregateType())
require.True(t, base.OccurredAt().After(before) || base.OccurredAt().Equal(before))
require.True(t, base.OccurredAt().Before(after) || base.OccurredAt().Equal(after))
}
// TestEventType_String ensures event type string behavior is handled correctly.
func TestEventType_String(t *testing.T) {
require.Equal(t, "game_session.started", GameSessionStarted.String())
}
// TestEventType_NonEmpty ensures event type non empty behavior is handled correctly.
func TestEventType_NonEmpty(t *testing.T) {
types := []EventType{
GameSessionStarted,
GameSessionEnded,
GameSessionTimedOut,
AnswerSubmitted,
HintRequested,
QuestionAnswered,
UserRegistered,
UserEmailVerified,
UserDeleted,
QuestionCreated,
QuestionUpdated,
QuestionDeleted,
ScoreUpdated,
LeaderboardRefreshed,
}
for _, eventType := range types {
require.NotEmpty(t, eventType.String())
}
}
type dummyEventBus struct{}
// Publish records event bus interactions for publish-subscribe assertions.
func (d *dummyEventBus) Publish(_ context.Context, _ Event) error {
return nil
}
// Subscribe records event bus interactions for publish-subscribe assertions.
func (d *dummyEventBus) Subscribe(_ EventHandler) error {
return nil
}
var _ EventBus = (*dummyEventBus)(nil)