53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
//go:build integration
|
|
|
|
package redisqueue
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/redis/rueidis"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewProducer(t *testing.T) {
|
|
t.Run("creates a new producer", func(tt *testing.T) {
|
|
e := testRedisShard(t)
|
|
defer e.Close()
|
|
p, err := NewProducer(e, ProducerOptions{
|
|
Stream: tt.Name(),
|
|
})
|
|
require.NoError(tt, err)
|
|
assert.NotNil(tt, p)
|
|
})
|
|
}
|
|
|
|
func TestEnqueue(t *testing.T) {
|
|
t.Run("puts the message in the stream", func(tt *testing.T) {
|
|
e := testRedisShard(t)
|
|
defer e.Close()
|
|
p, err := NewProducer(e, ProducerOptions{
|
|
Stream: tt.Name(),
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
msg := &Message{
|
|
Values: map[string]string{"test": "value"},
|
|
}
|
|
err = p.Enqueue(msg)
|
|
require.NoError(tt, err)
|
|
|
|
res := p.shard.RunOp(func(client rueidis.Client) rueidis.RedisResult {
|
|
cmd := client.B().Xrange().Key(tt.Name()).Start(msg.ID).End(msg.ID).Build()
|
|
return client.Do(context.Background(), cmd)
|
|
})
|
|
require.NoError(tt, res.Error())
|
|
|
|
xRange, err := res.AsXRange()
|
|
require.NoError(tt, err)
|
|
|
|
assert.Equal(tt, "value", xRange[0].FieldValues["test"])
|
|
})
|
|
}
|