...
1 package provider_test
2
3 import (
4 "os"
5 "testing"
6
7 "github.com/google/uuid"
8 "github.com/stretchr/testify/require"
9
10 "edge-infra.dev/pkg/edge/datasync/chirp/model"
11 persister "edge-infra.dev/pkg/edge/datasync/chirp/persister/files"
12 "edge-infra.dev/pkg/edge/datasync/chirp/provider"
13 "edge-infra.dev/pkg/edge/datasync/internal/config/fake"
14 )
15
16 func TestNewFileSystemProvider(t *testing.T) {
17 os.RemoveAll("testdata/outbox")
18
19 fake.SetEnv()
20
21 p := provider.NewFileSystemProvider(0, fake.InternalConfig)
22 require.NotNil(t, p)
23 }
24
25 func TestGetMessages(t *testing.T) {
26 os.RemoveAll("testdata/outbox")
27
28 const MessageType = "tlog"
29 const Payload = `{\"message\":\"hello world\"}`
30
31 fake.SetEnv()
32
33 p := provider.NewFileSystemProvider(0, fake.InternalConfig)
34
35 t.Run("return nil, when there are no messages in partition", func(t *testing.T) {
36 got := p.GetMessages()
37 require.Nil(t, got)
38 })
39
40 t.Run("return 2 messages, when there are 2 messages in partition", func(t *testing.T) {
41 messageID1 := uuid.New()
42 messageID2 := uuid.New()
43
44 persister, _ := persister.NewFilePersister(fake.InternalConfig)
45
46 msgData1 := model.MessageData{ID: messageID1, Type: MessageType, Payload: []byte(Payload)}
47 msgData2 := model.MessageData{ID: messageID2, Type: MessageType, Payload: []byte(Payload)}
48
49 _ = persister.Save(msgData1)
50 _ = persister.Save(msgData2)
51
52 got := p.GetMessages()
53 require.Equal(t, 2, len(got))
54
55 msg1 := got[messageID1.String()]
56 require.Equal(t, messageID1, msg1.ID)
57
58 msg2 := got[messageID2.String()]
59 require.Equal(t, messageID2, msg2.ID)
60
61 os.RemoveAll("testdata/outbox")
62 })
63 }
64
View as plain text