package provider_test import ( "os" "testing" "github.com/google/uuid" "github.com/stretchr/testify/require" "edge-infra.dev/pkg/edge/datasync/chirp/model" persister "edge-infra.dev/pkg/edge/datasync/chirp/persister/files" "edge-infra.dev/pkg/edge/datasync/chirp/provider" "edge-infra.dev/pkg/edge/datasync/internal/config/fake" ) func TestNewFileSystemProvider(t *testing.T) { os.RemoveAll("testdata/outbox") fake.SetEnv() p := provider.NewFileSystemProvider(0, fake.InternalConfig) require.NotNil(t, p) } func TestGetMessages(t *testing.T) { os.RemoveAll("testdata/outbox") const MessageType = "tlog" const Payload = `{\"message\":\"hello world\"}` fake.SetEnv() p := provider.NewFileSystemProvider(0, fake.InternalConfig) t.Run("return nil, when there are no messages in partition", func(t *testing.T) { got := p.GetMessages() require.Nil(t, got) }) t.Run("return 2 messages, when there are 2 messages in partition", func(t *testing.T) { messageID1 := uuid.New() messageID2 := uuid.New() persister, _ := persister.NewFilePersister(fake.InternalConfig) msgData1 := model.MessageData{ID: messageID1, Type: MessageType, Payload: []byte(Payload)} msgData2 := model.MessageData{ID: messageID2, Type: MessageType, Payload: []byte(Payload)} _ = persister.Save(msgData1) _ = persister.Save(msgData2) got := p.GetMessages() require.Equal(t, 2, len(got)) msg1 := got[messageID1.String()] require.Equal(t, messageID1, msg1.ID) msg2 := got[messageID2.String()] require.Equal(t, messageID2, msg2.ID) os.RemoveAll("testdata/outbox") }) }