@@ -61,6 +61,110 @@ func Test_newWorkflowTaskPoller(t *testing.T) {
6161	})
6262}
6363
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+ 					autoConfigHint : task .AutoConfigHint ,
91+ 				},
92+ 			},
93+ 			{
94+ 				"success with empty task" ,
95+ 				emptyTask ,
96+ 				& workflowTask {
97+ 					task : nil ,
98+ 					autoConfigHint : task .AutoConfigHint ,
99+ 				},
100+ 			},
101+ 		} {
102+ 			t .Run (tt .name , func (t  * testing.T ) {
103+ 				poller , client , _ , _  :=  buildWorkflowTaskPoller (t )
104+ 				client .EXPECT ().PollForDecisionTask (gomock .Any (), gomock .Any (), gomock .Any ()).Return (tt .response , nil )
105+ 				result , err  :=  poller .PollTask ()
106+ 				assert .NoError (t , err )
107+ 				resultTask , ok  :=  result .(* workflowTask )
108+ 				assert .True (t , ok )
109+ 				assert .Equal (t , tt .expected .task , resultTask .task )
110+ 				assert .Equal (t , tt .expected .autoConfigHint , resultTask .autoConfigHint )
111+ 			})
112+ 		}
113+ 	})
114+ }
115+ 
116+ func  TestActivityTaskPoller (t  * testing.T ) {
117+ 	t .Run ("PollTask" , func (t  * testing.T ) {
118+ 		task  :=  & s.PollForActivityTaskResponse {
119+ 			TaskToken : []byte ("some value" ),
120+ 			AutoConfigHint : & s.AutoConfigHint {
121+ 				common .PtrOf (true ),
122+ 				common .PtrOf (int64 (1000 )),
123+ 			},
124+ 		}
125+ 		emptyTask  :=  & s.PollForActivityTaskResponse {
126+ 			TaskToken : nil ,
127+ 			AutoConfigHint : & s.AutoConfigHint {
128+ 				common .PtrOf (true ),
129+ 				common .PtrOf (int64 (1000 )),
130+ 			},
131+ 		}
132+ 		for  _ , tt  :=  range  []struct  {
133+ 			name  string 
134+ 			response  * s.PollForActivityTaskResponse 
135+ 			expected  * activityTask 
136+ 		}{
137+ 			{
138+ 				"success with task" ,
139+ 				task ,
140+ 				& activityTask {
141+ 					task : task ,
142+ 					autoConfigHint : task .AutoConfigHint ,
143+ 				},
144+ 			},
145+ 			{
146+ 				"success with empty task" ,
147+ 				emptyTask ,
148+ 				& activityTask {
149+ 					task : nil ,
150+ 					autoConfigHint : task .AutoConfigHint ,
151+ 				},
152+ 			},
153+ 		} {
154+ 			t .Run (tt .name , func (t  * testing.T ) {
155+ 				poller , client  :=  buildActivityTaskPoller (t )
156+ 				client .EXPECT ().PollForActivityTask (gomock .Any (), gomock .Any (), gomock .Any ()).Return (tt .response , nil )
157+ 				result , err  :=  poller .PollTask ()
158+ 				assert .NoError (t , err )
159+ 				resultTask , ok  :=  result .(* activityTask )
160+ 				assert .True (t , ok )
161+ 				assert .Equal (t , tt .expected .task , resultTask .task )
162+ 				assert .Equal (t , tt .expected .autoConfigHint , resultTask .autoConfigHint )
163+ 			})
164+ 		}
165+ 	})
166+ }
167+ 
64168func  TestLocalActivityPanic (t  * testing.T ) {
65169	// regression: panics in local activities should not terminate the process 
66170	s  :=  WorkflowTestSuite {logger : testlogger .NewZap (t )}
@@ -213,3 +317,20 @@ func buildWorkflowTaskPoller(t *testing.T) (*workflowTaskPoller, *workflowservic
213317		featureFlags :                 FeatureFlags {},
214318	}, mockService , taskHandler , lda 
215319}
320+ 
321+ func  buildActivityTaskPoller (t  * testing.T ) (* activityTaskPoller , * workflowservicetest.MockClient ) {
322+ 	ctrl  :=  gomock .NewController (t )
323+ 	mockService  :=  workflowservicetest .NewMockClient (ctrl )
324+ 	return  & activityTaskPoller {
325+ 		basePoller : basePoller {
326+ 			shutdownC : make (<- chan  struct {}),
327+ 		},
328+ 		domain :                       _testDomainName ,
329+ 		taskListName :                 _testTaskList ,
330+ 		identity :                     _testIdentity ,
331+ 		service :                      mockService ,
332+ 		metricsScope :                 & metrics.TaggedScope {Scope : tally .NewTestScope ("test" , nil )},
333+ 		logger :                       testlogger .NewZap (t ),
334+ 		featureFlags :                 FeatureFlags {},
335+ 	}, mockService 
336+ }
0 commit comments