@@ -61,6 +61,104 @@ func Test_newWorkflowTaskPoller(t *testing.T) {
61
61
})
62
62
}
63
63
64
+ func TestWorkflowTaskPoller (t * testing.T ) {
65
+ t .Run ("PollTask" , func (t * testing.T ) {
66
+ task := & s.PollForDecisionTaskResponse {
67
+ TaskToken : []byte ("some value" ),
68
+ AutoConfigHint : & s.AutoConfigHint {
69
+ common .PtrOf (true ),
70
+ common .PtrOf (int64 (1000 )),
71
+ },
72
+ }
73
+ emptyTask := & s.PollForDecisionTaskResponse {
74
+ TaskToken : nil ,
75
+ AutoConfigHint : & s.AutoConfigHint {
76
+ common .PtrOf (true ),
77
+ common .PtrOf (int64 (1000 )),
78
+ },
79
+ }
80
+ for _ , tt := range []struct {
81
+ name string
82
+ response * s.PollForDecisionTaskResponse
83
+ expected * workflowTask
84
+ }{
85
+ {
86
+ "success with task" ,
87
+ task ,
88
+ & workflowTask {
89
+ task : task ,
90
+ },
91
+ },
92
+ {
93
+ "success with empty task" ,
94
+ emptyTask ,
95
+ & workflowTask {
96
+ task : emptyTask ,
97
+ },
98
+ },
99
+ } {
100
+ t .Run (tt .name , func (t * testing.T ) {
101
+ poller , client , _ , _ := buildWorkflowTaskPoller (t )
102
+ client .EXPECT ().PollForDecisionTask (gomock .Any (), gomock .Any (), gomock .Any ()).Return (tt .response , nil )
103
+ result , err := poller .PollTask ()
104
+ assert .NoError (t , err )
105
+ resultTask , ok := result .(* workflowTask )
106
+ assert .True (t , ok )
107
+ assert .Equal (t , tt .expected .task , resultTask .task )
108
+ })
109
+ }
110
+ })
111
+ }
112
+
113
+ func TestActivityTaskPoller (t * testing.T ) {
114
+ t .Run ("PollTask" , func (t * testing.T ) {
115
+ task := & s.PollForActivityTaskResponse {
116
+ TaskToken : []byte ("some value" ),
117
+ AutoConfigHint : & s.AutoConfigHint {
118
+ common .PtrOf (true ),
119
+ common .PtrOf (int64 (1000 )),
120
+ },
121
+ }
122
+ emptyTask := & s.PollForActivityTaskResponse {
123
+ TaskToken : nil ,
124
+ AutoConfigHint : & s.AutoConfigHint {
125
+ common .PtrOf (true ),
126
+ common .PtrOf (int64 (1000 )),
127
+ },
128
+ }
129
+ for _ , tt := range []struct {
130
+ name string
131
+ response * s.PollForActivityTaskResponse
132
+ expected * activityTask
133
+ }{
134
+ {
135
+ "success with task" ,
136
+ task ,
137
+ & activityTask {
138
+ task : task ,
139
+ },
140
+ },
141
+ {
142
+ "success with empty task" ,
143
+ emptyTask ,
144
+ & activityTask {
145
+ task : emptyTask ,
146
+ },
147
+ },
148
+ } {
149
+ t .Run (tt .name , func (t * testing.T ) {
150
+ poller , client := buildActivityTaskPoller (t )
151
+ client .EXPECT ().PollForActivityTask (gomock .Any (), gomock .Any (), gomock .Any ()).Return (tt .response , nil )
152
+ result , err := poller .PollTask ()
153
+ assert .NoError (t , err )
154
+ resultTask , ok := result .(* activityTask )
155
+ assert .True (t , ok )
156
+ assert .Equal (t , tt .expected .task , resultTask .task )
157
+ })
158
+ }
159
+ })
160
+ }
161
+
64
162
func TestLocalActivityPanic (t * testing.T ) {
65
163
// regression: panics in local activities should not terminate the process
66
164
s := WorkflowTestSuite {logger : testlogger .NewZap (t )}
@@ -213,3 +311,20 @@ func buildWorkflowTaskPoller(t *testing.T) (*workflowTaskPoller, *workflowservic
213
311
featureFlags : FeatureFlags {},
214
312
}, mockService , taskHandler , lda
215
313
}
314
+
315
+ func buildActivityTaskPoller (t * testing.T ) (* activityTaskPoller , * workflowservicetest.MockClient ) {
316
+ ctrl := gomock .NewController (t )
317
+ mockService := workflowservicetest .NewMockClient (ctrl )
318
+ return & activityTaskPoller {
319
+ basePoller : basePoller {
320
+ shutdownC : make (<- chan struct {}),
321
+ },
322
+ domain : _testDomainName ,
323
+ taskListName : _testTaskList ,
324
+ identity : _testIdentity ,
325
+ service : mockService ,
326
+ metricsScope : & metrics.TaggedScope {Scope : tally .NewTestScope ("test" , nil )},
327
+ logger : testlogger .NewZap (t ),
328
+ featureFlags : FeatureFlags {},
329
+ }, mockService
330
+ }
0 commit comments