go-sdk/workflow/workflow_test.go

79 lines
2.2 KiB
Go

package workflow
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/dapr/durabletask-go/api/protos"
"github.com/dapr/durabletask-go/task"
)
func TestConvertMetadata(t *testing.T) {
t.Run("convert metadata", func(t *testing.T) {
rawMetadata := &protos.OrchestrationMetadata{
InstanceId: "test",
}
metadata := convertMetadata(rawMetadata)
assert.NotEmpty(t, metadata)
})
}
func TestCallChildWorkflowOptions(t *testing.T) {
t.Run("child workflow input - valid", func(t *testing.T) {
opts := returnCallChildWorkflowOptions(ChildWorkflowInput("test"))
assert.Equal(t, "\"test\"", opts.rawInput.GetValue())
})
t.Run("child workflow raw input - valid", func(t *testing.T) {
opts := returnCallChildWorkflowOptions(ChildWorkflowRawInput("test"))
assert.Equal(t, "test", opts.rawInput.GetValue())
})
t.Run("child workflow instance id - valid", func(t *testing.T) {
opts := returnCallChildWorkflowOptions(ChildWorkflowInstanceID("test"))
assert.Equal(t, "test", opts.instanceID)
})
t.Run("child workflow input - invalid", func(t *testing.T) {
opts := returnCallChildWorkflowOptions(ChildWorkflowInput(make(chan int)))
assert.Empty(t, opts.rawInput.GetValue())
})
t.Run("child workflow retry policy - set", func(t *testing.T) {
opts := returnCallChildWorkflowOptions(ChildWorkflowRetryPolicy(RetryPolicy{
MaxAttempts: 3,
InitialRetryInterval: 100 * time.Millisecond,
BackoffCoefficient: 2,
MaxRetryInterval: 2 * time.Second,
}))
assert.Equal(t, &task.RetryPolicy{
MaxAttempts: 3,
InitialRetryInterval: 100 * time.Millisecond,
BackoffCoefficient: 2,
MaxRetryInterval: 2 * time.Second,
}, opts.getRetryPolicy())
})
t.Run("child workflow retry policy - empty", func(t *testing.T) {
opts := returnCallChildWorkflowOptions()
assert.Empty(t, opts.getRetryPolicy())
})
}
func returnCallChildWorkflowOptions(opts ...callChildWorkflowOption) callChildWorkflowOptions {
options := new(callChildWorkflowOptions)
for _, configure := range opts {
if err := configure(options); err != nil {
return *options
}
}
return *options
}
func TestNewTaskSlice(t *testing.T) {
tasks := NewTaskSlice(10)
assert.Len(t, tasks, 10)
}