This repository has been archived by the owner on Sep 23, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathstate_test.go
97 lines (82 loc) · 2.02 KB
/
state_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package machine
import (
"encoding/json"
"testing"
"github.com/coinbase/step/utils/to"
"github.com/stretchr/testify/assert"
)
type stateTestData struct {
Input map[string]interface{}
Output map[string]interface{}
Error *string
Next *string
}
func testState(state State, std stateTestData, t *testing.T) {
// Make sure the execution is on Valid State
err := state.Validate()
assert.NoError(t, err)
// default empty input
if std.Input == nil {
std.Input = map[string]interface{}{}
}
output, next, err := state.Execute(nil, std.Input)
// expecting error?
if std.Error != nil {
assert.Error(t, err)
assert.Regexp(t, *std.Error, err.Error())
} else if err != nil {
assert.NoError(t, err)
}
if std.Output != nil {
assert.Equal(t, std.Output, output)
}
if std.Next != nil {
assert.Equal(t, *std.Next, *next)
}
}
func parseChoiceState(b []byte, t *testing.T) *ChoiceState {
var p ChoiceState
err := json.Unmarshal(b, &p)
assert.NoError(t, err)
p.SetName(to.Strp("TestState"))
p.SetType(to.Strp("Choice"))
return &p
}
func parsePassState(b []byte, t *testing.T) *PassState {
var p PassState
err := json.Unmarshal(b, &p)
assert.NoError(t, err)
p.SetName(to.Strp("TestState"))
p.SetType(to.Strp("Pass"))
return &p
}
func parseWaitState(b []byte, t *testing.T) *WaitState {
var p WaitState
err := json.Unmarshal(b, &p)
assert.NoError(t, err)
p.SetName(to.Strp("TestState"))
p.SetType(to.Strp("Wait"))
return &p
}
func parseTaskState(b []byte, t *testing.T) *TaskState {
var p TaskState
err := json.Unmarshal(b, &p)
assert.NoError(t, err)
p.SetName(to.Strp("TestState"))
p.SetType(to.Strp("Task"))
return &p
}
func parseValidTaskState(b []byte, handler interface{}, t *testing.T) *TaskState {
state := parseTaskState(b, t)
state.SetTaskHandler(handler)
assert.NoError(t, state.Validate())
return state
}
func parseMapState(b []byte, t *testing.T) *MapState {
var p MapState
err := json.Unmarshal(b, &p)
assert.NoError(t, err)
p.SetName(to.Strp("TestState"))
p.SetType(to.Strp("Map"))
return &p
}