github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/action/registry_test.go (about) 1 package action 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/TIBCOSoftware/flogo-lib/core/data" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type MockFactory struct { 12 } 13 14 func (f *MockFactory) New(config *Config) (Action, error) { 15 return &MockAction{}, nil 16 } 17 18 type MockAction struct { 19 } 20 21 func (t *MockAction) Metadata() *Metadata { 22 return nil 23 } 24 25 func (t *MockAction) IOMetadata() *data.IOMetadata { 26 return nil 27 } 28 29 func (t *MockAction) Run(context context.Context, inputs map[string]*data.Attribute, handler ResultHandler) error { 30 return nil 31 } 32 33 //TestRegisterFactoryEmptyRef 34 func TestRegisterFactoryEmptyRef(t *testing.T) { 35 36 orig := actionFactories 37 actionFactories = make(map[string]Factory) 38 defer func() { actionFactories = orig }() 39 40 // Register factory 41 err := RegisterFactory("", nil) 42 43 assert.NotNil(t, err) 44 assert.Equal(t, "'ref' must be specified when registering an action factory", err.Error()) 45 } 46 47 //TestRegisterFactoryNilFactory 48 func TestRegisterFactoryNilFactory(t *testing.T) { 49 50 orig := actionFactories 51 actionFactories = make(map[string]Factory) 52 defer func() { actionFactories = orig }() 53 54 // Register factory 55 err := RegisterFactory("github.com/mock", nil) 56 57 assert.NotNil(t, err) 58 assert.Equal(t, "cannot register 'nil' action factory", err.Error()) 59 } 60 61 //TestAddFactoryDuplicated 62 func TestAddFactoryDuplicated(t *testing.T) { 63 64 orig := actionFactories 65 actionFactories = make(map[string]Factory) 66 defer func() { actionFactories = orig }() 67 68 f := &MockFactory{} 69 70 // Register factory: this time should pass 71 err := RegisterFactory("github.com/mock", f) 72 assert.Nil(t, err) 73 74 // Register factory: this time should fail, duplicated 75 err = RegisterFactory("github.com/mock", f) 76 assert.NotNil(t, err) 77 assert.Equal(t, "action factory already registered for ref 'github.com/mock'", err.Error()) 78 } 79 80 //TestAddFactoryOk 81 func TestAddFactoryOk(t *testing.T) { 82 83 orig := actionFactories 84 actionFactories = make(map[string]Factory) 85 defer func() { actionFactories = orig }() 86 87 f := &MockFactory{} 88 89 // Add factory 90 err := RegisterFactory("github.com/mock", f) 91 assert.Nil(t, err) 92 assert.Equal(t, 1, len(actionFactories)) 93 } 94 95 //TestGetFactoriesOk 96 func TestGetFactoriesOk(t *testing.T) { 97 98 orig := actionFactories 99 actionFactories = make(map[string]Factory) 100 defer func() { actionFactories = orig }() 101 102 f := &MockFactory{} 103 104 // Add factory 105 err := RegisterFactory("github.com/mock", f) 106 assert.Nil(t, err) 107 108 // Get factory 109 fs := Factories() 110 assert.Equal(t, 1, len(fs)) 111 }