package runner import ( "context" queuemock "queryorchestration/mocks/queue" runnermock "queryorchestration/mocks/runner" "testing" "time" "github.com/aws/aws-sdk-go-v2/service/sqs" "github.com/aws/aws-sdk-go-v2/service/sqs/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) func TestPollMessages(t *testing.T) { ctx := context.Background() mockSQS := queuemock.NewMockSQSClient(t) cfg := &BaseConfig{} cfg.QueueClient = mockSQS cfg.ControllerFunc = func() Controller { return runnermock.NewMockController(t) } cfg.QueueURL = "/i/am/here" res := sqs.ReceiveMessageOutput{Messages: []types.Message{}} mockSQS.EXPECT(). ReceiveMessage( mock.Anything, mock.MatchedBy(func(in *sqs.ReceiveMessageInput) bool { return *in.QueueUrl == cfg.QueueURL }), mock.Anything, ). Return(&res, nil) ctx, cancel := context.WithTimeout(ctx, time.Second) defer cancel() scfg := &Server{ cfg: cfg, cleanup: func() error { return nil }, } scfg.Listen(ctx) } func TestPollMessage(t *testing.T) { ctx := context.Background() mockSQS := queuemock.NewMockSQSClient(t) cfg := &BaseConfig{} cfg.QueueClient = mockSQS cfg.ControllerFunc = func() Controller { return runnermock.NewMockController(t) } cfg.QueueURL = "/i/am/here" ser := &Server{ cfg: cfg, cleanup: func() error { return nil }, } mockSQS.EXPECT(). ReceiveMessage( mock.Anything, mock.MatchedBy(func(in *sqs.ReceiveMessageInput) bool { return *in.QueueUrl == cfg.QueueURL }), mock.Anything, ). Return(&sqs.ReceiveMessageOutput{}, nil) err := ser.pollMessage(ctx) assert.NoError(t, err) }