1package helpers
2
3import (
4 "testing"
5 "time"
6
7 "github.com/bluesky-social/indigo/atproto/identity"
8 "github.com/bluesky-social/indigo/atproto/syntax"
9 "github.com/bluesky-social/indigo/automod"
10 "github.com/stretchr/testify/assert"
11)
12
13func TestAccountIsYoungerThan(t *testing.T) {
14 assert := assert.New(t)
15
16 am := automod.AccountMeta{
17 Identity: &identity.Identity{
18 DID: syntax.DID("did:plc:abc111"),
19 Handle: syntax.Handle("handle.example.com"),
20 },
21 Profile: automod.ProfileSummary{},
22 Private: nil,
23 }
24 now := time.Now()
25 ac := automod.AccountContext{
26 Account: am,
27 }
28 assert.False(AccountIsYoungerThan(&ac, time.Hour))
29 assert.False(AccountIsOlderThan(&ac, time.Hour))
30
31 ac.Account.CreatedAt = &now
32 assert.True(AccountIsYoungerThan(&ac, time.Hour))
33 assert.False(AccountIsOlderThan(&ac, time.Hour))
34
35 yesterday := time.Now().Add(-1 * time.Hour * 24)
36 ac.Account.CreatedAt = &yesterday
37 assert.False(AccountIsYoungerThan(&ac, time.Hour))
38 assert.True(AccountIsOlderThan(&ac, time.Hour))
39
40 old := time.Date(1990, 1, 1, 0, 0, 0, 0, time.UTC)
41 ac.Account.CreatedAt = &old
42 assert.False(AccountIsYoungerThan(&ac, time.Hour))
43 assert.False(AccountIsYoungerThan(&ac, time.Hour*24*365*100))
44 assert.False(AccountIsOlderThan(&ac, time.Hour))
45 assert.False(AccountIsOlderThan(&ac, time.Hour*24*365*100))
46
47 future := time.Date(3000, 1, 1, 0, 0, 0, 0, time.UTC)
48 ac.Account.CreatedAt = &future
49 assert.False(AccountIsYoungerThan(&ac, time.Hour))
50 assert.False(AccountIsOlderThan(&ac, time.Hour))
51
52 ac.Account.CreatedAt = nil
53 ac.Account.Private = &automod.AccountPrivate{
54 Email: "account@example.com",
55 IndexedAt: &yesterday,
56 }
57 assert.True(AccountIsYoungerThan(&ac, 48*time.Hour))
58 assert.False(AccountIsYoungerThan(&ac, time.Hour))
59 assert.True(AccountIsOlderThan(&ac, time.Hour))
60 assert.False(AccountIsOlderThan(&ac, 48*time.Hour))
61}