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)