github.com/TIBCOSoftware/flogo-lib@v0.5.9/engine/runner/worker_test.go (about) 1 package runner 2 3 import ( 4 "errors" 5 "github.com/stretchr/testify/assert" 6 "github.com/stretchr/testify/mock" 7 "testing" 8 ) 9 10 //TestWorkerInvalidRequestType worker returns error for invalid request type 11 func TestWorkerInvalidRequestType(t *testing.T) { 12 worker := createDefaultWorker() 13 worker.Start() 14 15 rc := make(chan *ActionResult) 16 actionData := &ActionData{arc: rc} 17 18 // Create some work 19 invalidWorkRequest := ActionWorkRequest{ReqType: -1, actionData: actionData} 20 21 // Send some work 22 worker.Work <- invalidWorkRequest 23 24 // Check work result 25 result := <-actionData.arc 26 27 assert.NotNil(t, result.err) 28 assert.Equal(t, "unsupported work request type: '-1'", result.err.Error()) 29 } 30 31 //TestWorkerErrorInAction returns an error when the action returns error 32 func TestWorkerErrorInAction(t *testing.T) { 33 worker := createDefaultWorker() 34 worker.Start() 35 36 rc := make(chan *ActionResult) 37 38 action := new(MockFullAction) 39 action.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(errors.New("Error in action")) 40 41 actionData := &ActionData{arc: rc, action: action} 42 43 // Create some work 44 errorWorkRequest := ActionWorkRequest{ReqType: RtRun, actionData: actionData} 45 46 // Send some work 47 worker.Work <- errorWorkRequest 48 49 // Check work result 50 result := <-actionData.arc 51 52 assert.NotNil(t, result.err) 53 assert.Equal(t, "Error in action", result.err.Error()) 54 } 55 56 //TestWorkerStartOk 57 func TestWorkerStartOk(t *testing.T) { 58 worker := createDefaultWorker() 59 worker.Start() 60 61 rc := make(chan *ActionResult) 62 63 action := new(MockResultAction) 64 action.On("Run", nil, mock.AnythingOfType("map[string]*data.Attribute"), mock.AnythingOfType("*runner.AsyncResultHandler")).Return(nil) 65 66 actionData := &ActionData{arc: rc, action: action} 67 68 // Create some work 69 okWorkRequest := ActionWorkRequest{ReqType: RtRun, actionData: actionData} 70 71 // Send some work 72 worker.Work <- okWorkRequest 73 74 // Check work result 75 result := <-actionData.arc 76 77 assert.Nil(t, result.err) 78 assert.NotNil(t, result) 79 assert.Equal(t, 200, result.results["code"].Value()) 80 assert.Equal(t, "mock", result.results["data"].Value()) 81 } 82 83 func createDefaultWorker() ActionWorker { 84 runner := NewDirect() 85 queue := make(chan chan ActionWorkRequest, 2) 86 return NewWorker(1, runner, queue) 87 }