1package entity_test
2
3import (
4 "testing"
5 "time"
6
7 "github.com/bnema/dumber/internal/domain/entity"
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10)
11
12func TestSession_ShortID(t *testing.T) {
13 s := &entity.Session{ID: entity.SessionID("20251217_205106_a7b3")}
14 assert.Equal(t, "a7b3", s.ShortID())
15
16 s2 := &entity.Session{ID: entity.SessionID("abc")}
17 assert.Equal(t, "abc", s2.ShortID())
18}
19
20func TestSession_Validate(t *testing.T) {
21 now := time.Now()
22
23 valid := &entity.Session{ID: "20251217_205106_a7b3", Type: entity.SessionTypeBrowser, StartedAt: now}
24 require.NoError(t, valid.Validate())
25
26 missingID := &entity.Session{Type: entity.SessionTypeBrowser, StartedAt: now}
27 require.ErrorIs(t, missingID.Validate(), entity.ErrInvalidSession)
28
29 badType := &entity.Session{ID: "20251217_205106_a7b3", Type: "nope", StartedAt: now}
30 require.ErrorIs(t, badType.Validate(), entity.ErrInvalidSession)
31
32 missingStarted := &entity.Session{ID: "20251217_205106_a7b3", Type: entity.SessionTypeBrowser}
33 require.ErrorIs(t, missingStarted.Validate(), entity.ErrInvalidSession)
34}
35
36func TestSession_End(t *testing.T) {
37 s := &entity.Session{ID: "x", Type: entity.SessionTypeBrowser, StartedAt: time.Now()}
38 assert.True(t, s.IsActive())
39
40 endedAt := time.Date(2025, 12, 22, 0, 0, 0, 0, time.FixedZone("X", 3600))
41 s.End(endedAt)
42 assert.False(t, s.IsActive())
43 if assert.NotNil(t, s.EndedAt) {
44 assert.True(t, s.EndedAt.Equal(endedAt.UTC()))
45 }
46}