github.com/argoproj/argo-events@v1.9.1/eventsources/sources/redis/start_test.go (about)

     1  package redis
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/go-redis/redis/v8"
     8  	"github.com/stretchr/testify/assert"
     9  	"go.uber.org/zap/zaptest"
    10  
    11  	eventsourcecommon "github.com/argoproj/argo-events/eventsources/common"
    12  	metrics "github.com/argoproj/argo-events/metrics"
    13  	"github.com/argoproj/argo-events/pkg/apis/events"
    14  	"github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1"
    15  )
    16  
    17  func Test_HandleOne(t *testing.T) {
    18  	el := &EventListener{
    19  		EventSourceName:  "esName",
    20  		EventName:        "eName",
    21  		RedisEventSource: v1alpha1.RedisEventSource{},
    22  		Metrics:          metrics.NewMetrics("ns"),
    23  	}
    24  
    25  	msg := &redis.Message{
    26  		Channel: "ch",
    27  		Pattern: "p",
    28  		Payload: `{"a": "b"}`,
    29  	}
    30  
    31  	getDispatcher := func(isJson bool) func(d []byte, opts ...eventsourcecommon.Option) error {
    32  		return func(d []byte, opts ...eventsourcecommon.Option) error {
    33  			eventData := &events.RedisEventData{}
    34  			err := json.Unmarshal(d, eventData)
    35  			assert.NoError(t, err)
    36  			assert.Equal(t, msg.Pattern, eventData.Pattern)
    37  			assert.Equal(t, msg.Channel, eventData.Channel)
    38  			if !isJson {
    39  				s, ok := eventData.Body.(string)
    40  				assert.True(t, ok)
    41  				assert.Equal(t, msg.Payload, s)
    42  			} else {
    43  				s, ok := eventData.Body.(map[string]interface{})
    44  				assert.True(t, ok)
    45  				assert.Equal(t, "b", s["a"])
    46  			}
    47  			return nil
    48  		}
    49  	}
    50  
    51  	err := el.handleOne(msg, getDispatcher(el.RedisEventSource.JSONBody), zaptest.NewLogger(t).Sugar())
    52  	assert.NoError(t, err)
    53  
    54  	el.RedisEventSource.JSONBody = true
    55  	err = el.handleOne(msg, getDispatcher(el.RedisEventSource.JSONBody), zaptest.NewLogger(t).Sugar())
    56  	assert.NoError(t, err)
    57  }