github.com/TIBCOSoftware/flogo-lib@v0.5.9/core/activity/registry_test.go (about) 1 package activity 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 type MockActivity struct { 11 metadata *Metadata 12 } 13 14 func (MockActivity) Eval(ctx Context) (done bool, err error) { 15 return true, nil 16 } 17 18 func (m *MockActivity) Metadata() *Metadata { 19 return m.metadata 20 } 21 22 func NewMockActivity(id string) *MockActivity { 23 return &MockActivity{metadata: &Metadata{ID: id}} 24 } 25 26 //TestRegisterNilActivity 27 func TestRegisterNilActivity(t *testing.T) { 28 29 orig := activities 30 activities = make(map[string]Activity) 31 defer func() { activities = orig }() 32 33 err := registerNil() 34 assert.NotNil(t, err) 35 assert.Equal(t, "cannot register 'nil' activity", err.Error()) 36 } 37 38 func registerNil() (err error) { 39 defer func() { 40 if r := recover(); r != nil { 41 var ok bool 42 err, ok = r.(error) 43 if !ok { 44 err = fmt.Errorf("%v", r) 45 } 46 } 47 }() 48 49 Register(nil) 50 return nil 51 } 52 53 //TestRegisterDupActivity 54 func TestRegisterDupActivity(t *testing.T) { 55 56 orig := activities 57 activities = make(map[string]Activity) 58 defer func() { activities = orig }() 59 60 err := registerDup() 61 assert.NotNil(t, err) 62 assert.Equal(t, "activity already registered: github.com/mock", err.Error()) 63 } 64 65 func registerDup() (err error) { 66 defer func() { 67 if r := recover(); r != nil { 68 var ok bool 69 err, ok = r.(error) 70 if !ok { 71 err = fmt.Errorf("%v", r) 72 } 73 } 74 }() 75 76 act := NewMockActivity("github.com/mock") 77 Register(act) 78 Register(act) 79 return nil 80 } 81 82 //TestRegisterActivityOk 83 func TestRegisterActivityOk(t *testing.T) { 84 85 orig := activities 86 activities = make(map[string]Activity) 87 defer func() { 88 activities = orig 89 r := recover() 90 assert.Nil(t, r) 91 }() 92 93 act := NewMockActivity("github.com/mock") 94 Register(act) 95 assert.Equal(t, 1, len(activities)) 96 } 97 98 //TestGetFactoriesOk 99 func TestGetFactoriesOk(t *testing.T) { 100 101 orig := activities 102 activities = make(map[string]Activity) 103 defer func() { 104 activities = orig 105 r := recover() 106 assert.Nil(t, r) 107 }() 108 109 act := NewMockActivity("github.com/mock") 110 Register(act) 111 112 // Get factory 113 as := Activities() 114 assert.Equal(t, 1, len(as)) 115 }