Skip to content

Commit f0d459d

Browse files
committed
Bring back the tester interface
1 parent 6b3c954 commit f0d459d

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

tester/tester.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,54 @@ type testWorkflow struct {
7575
pendingEvents []*history.Event
7676
}
7777

78+
type WorkflowTester[TResult any] interface {
79+
// Now returns the current time of the simulated clock in the tester.
80+
Now() time.Time
81+
82+
// Execute executes the workflow under test with the given inputs.
83+
Execute(ctx context.Context, args ...interface{})
84+
85+
// Registry returns the registry used by the tester.
86+
Registry() *registry.Registry
87+
88+
// OnActivity registers a mock activity.
89+
OnActivity(activity workflow.Activity, args ...interface{}) *mock.Call
90+
91+
// OnActivityByName registers a mock activity with the given name.
92+
OnActivityByName(name string, activity workflow.Activity, args ...interface{}) *mock.Call
93+
94+
// OnSubworkflow registers a mock sub-workflow.
95+
OnSubWorkflow(workflow workflow.Workflow, args ...interface{}) *mock.Call
96+
97+
// OnSubWorkflowByName registers a mock sub-workflow with the given name.
98+
OnSubWorkflowByName(name string, workflow workflow.Workflow, args ...interface{}) *mock.Call
99+
100+
// SignalWorkflow signals the workflow under test with the given signal name and value.
101+
SignalWorkflow(signalName string, value interface{})
102+
103+
// SignalWorkflowInstance signals the given workflow instance with the given signal name and value.
104+
SignalWorkflowInstance(wfi *core.WorkflowInstance, signalName string, value interface{}) error
105+
106+
// WorkflowFinished returns true if the workflow under test is finished.
107+
WorkflowFinished() bool
108+
109+
// WorkflowResult returns the result of the workflow under test. If the workflow is not finished yet, this will
110+
// error.
111+
WorkflowResult() (TResult, error)
112+
113+
// AssertExpectations asserts any assertions set up for mock activities and sub-workflow
114+
AssertExpectations(t *testing.T)
115+
116+
// ScheduleCallback schedules the given callback after the given delay in workflow time (not wall clock).
117+
ScheduleCallback(delay time.Duration, callback func())
118+
119+
// ListenSubWorkflow registers a listener that is called whenever a sub-workflow is started. The listener is called
120+
// with the workflow instance of the sub-workflow and the name of the sub-workflow.
121+
ListenSubWorkflow(listener func(instance *core.WorkflowInstance, name string))
122+
}
123+
124+
var _ WorkflowTester[any] = (*workflowTester[any])(nil)
125+
78126
type workflowTester[TResult any] struct {
79127
options *options
80128

0 commit comments

Comments
 (0)