mirror of
https://github.com/hanzo-fi/payments.git
synced 2026-10-30 20:31:20 +00:00
171 lines
4.6 KiB
Go
171 lines
4.6 KiB
Go
package workflow
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/hanzo-fi/go-libs/v5/pkg/storage/bun/paginate"
|
|
"github.com/hanzo-fi/payments/internal/connectors/engine/activities"
|
|
"github.com/hanzo-fi/payments/pkg/domain/models"
|
|
"github.com/stretchr/testify/mock"
|
|
"go.temporal.io/sdk/temporal"
|
|
)
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules_Success() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 1,
|
|
HasMore: false,
|
|
Data: []models.Schedule{
|
|
{
|
|
ID: "test",
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now(),
|
|
},
|
|
},
|
|
},
|
|
nil,
|
|
)
|
|
s.env.OnActivity(activities.TemporalScheduleDeleteActivity, mock.Anything, "test").Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.NoError(err)
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules_EmptyScheduleList_Success() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 0,
|
|
HasMore: false,
|
|
Data: []models.Schedule{},
|
|
},
|
|
nil,
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.NoError(err)
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules_HasMore_Success() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 1,
|
|
HasMore: true,
|
|
Next: "eyJvZmZzZXQiOjYsIm9yZGVyIjowLCJwYWdlU2l6ZSI6MywiZmlsdGVycyI6eyJxYiI6bnVsbCwicGFnZVNpemUiOjMsIm9wdGlvbnMiOnt9fX0",
|
|
Data: []models.Schedule{
|
|
{
|
|
ID: "test",
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now(),
|
|
},
|
|
},
|
|
},
|
|
nil,
|
|
)
|
|
s.env.OnActivity(activities.TemporalScheduleDeleteActivity, mock.Anything, "test").Once().Return(nil)
|
|
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 0,
|
|
HasMore: false,
|
|
Data: []models.Schedule{},
|
|
},
|
|
nil,
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.NoError(err)
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules_StorageSchedulesList_Error() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
nil,
|
|
temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
s.ErrorContains(err, "error-test")
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules_TemporalScheduleDelete_Error() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 1,
|
|
HasMore: false,
|
|
Data: []models.Schedule{
|
|
{
|
|
ID: "test",
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now(),
|
|
},
|
|
},
|
|
},
|
|
nil,
|
|
)
|
|
s.env.OnActivity(activities.TemporalScheduleDeleteActivity, mock.Anything, "test").Once().Return(
|
|
temporal.NewNonRetryableApplicationError("error-test", "error-test", errors.New("error-test")),
|
|
)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
// Should log the error but continue
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.NoError(err)
|
|
}
|
|
|
|
func (s *UnitTestSuite) Test_TerminateSchedules__CursorError_Error() {
|
|
s.env.OnActivity(activities.StorageSchedulesListActivity, mock.Anything, mock.Anything).Once().Return(
|
|
&paginate.Cursor[models.Schedule]{
|
|
PageSize: 1,
|
|
HasMore: true,
|
|
Next: "toto",
|
|
Data: []models.Schedule{
|
|
{
|
|
ID: "test",
|
|
ConnectorID: s.connectorID,
|
|
CreatedAt: s.env.Now(),
|
|
},
|
|
},
|
|
},
|
|
nil,
|
|
)
|
|
s.env.OnActivity(activities.TemporalScheduleDeleteActivity, mock.Anything, "test").Once().Return(nil)
|
|
|
|
s.env.ExecuteWorkflow(RunTerminateSchedules, TerminateSchedules{
|
|
ConnectorID: s.connectorID,
|
|
NextPageToken: "",
|
|
})
|
|
|
|
s.True(s.env.IsWorkflowCompleted())
|
|
err := s.env.GetWorkflowError()
|
|
s.Error(err)
|
|
}
|