mirror of
https://github.com/hanzo-fi/stack.git
synced 2026-10-30 20:34:43 +00:00
65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package workflow
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/formancehq/orchestration/internal/storage"
|
|
"github.com/formancehq/orchestration/internal/workflow/stages"
|
|
"github.com/formancehq/stack/libs/go-libs/pgtesting"
|
|
"github.com/stretchr/testify/require"
|
|
"go.temporal.io/sdk/client"
|
|
"go.temporal.io/sdk/testsuite"
|
|
)
|
|
|
|
type mockTemporalClient struct {
|
|
client.Client
|
|
env *testsuite.TestWorkflowEnvironment
|
|
workflows *Workflows
|
|
}
|
|
|
|
func (c *mockTemporalClient) ExecuteWorkflow(ctx context.Context, options client.StartWorkflowOptions, workflow interface{}, args ...interface{}) (client.WorkflowRun, error) {
|
|
c.env.ExecuteWorkflow(c.workflows.Run, args...)
|
|
return nil, nil
|
|
}
|
|
|
|
func TestConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
database := pgtesting.NewPostgresDatabase(t)
|
|
db := storage.LoadDB(database.ConnString(), testing.Verbose(), os.Stdout)
|
|
t.Cleanup(func() {
|
|
_ = db.Close()
|
|
})
|
|
|
|
require.NoError(t, storage.Migrate(context.Background(), db))
|
|
testSuite := &testsuite.WorkflowTestSuite{}
|
|
env := testSuite.NewTestWorkflowEnvironment()
|
|
workflows := NewWorkflows(db)
|
|
env.RegisterWorkflow(stages.RunNoOp)
|
|
env.RegisterWorkflow(workflows.Run)
|
|
mockClient := &mockTemporalClient{env: env, workflows: workflows}
|
|
manager := NewManager(db, mockClient, "default")
|
|
|
|
config := Config{
|
|
Stages: []RawStage{
|
|
{
|
|
"noop": map[string]any{},
|
|
},
|
|
},
|
|
}
|
|
w, err := manager.Create(context.TODO(), config)
|
|
require.NoError(t, err)
|
|
|
|
i, err := manager.RunWorkflow(context.TODO(), w.ID, map[string]string{})
|
|
require.NoError(t, err)
|
|
|
|
require.True(t, env.IsWorkflowCompleted())
|
|
require.NoError(t, env.GetWorkflowError())
|
|
|
|
updatedInstance, err := manager.GetInstance(context.TODO(), i.ID)
|
|
require.NoError(t, err)
|
|
require.Len(t, updatedInstance.Statuses, 1)
|
|
}
|