-
Notifications
You must be signed in to change notification settings - Fork 67
/
get_transaction_test.go
108 lines (85 loc) 路 3.95 KB
/
get_transaction_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
98
99
100
101
102
103
104
105
106
107
108
package transaction
import (
"fmt"
"strings"
"testing"
"github.com/kubeshop/tracetest/cli-e2etest/environment"
"github.com/kubeshop/tracetest/cli-e2etest/helpers"
"github.com/kubeshop/tracetest/cli-e2etest/testscenarios/types"
"github.com/kubeshop/tracetest/cli-e2etest/tracetestcli"
"github.com/stretchr/testify/require"
)
func addGetTransactionPreReqs(t *testing.T, env environment.Manager) {
cliConfig := env.GetCLIConfigPath(t)
// Given I am a Tracetest CLI user
// And I have my server recently created
// When I try to set up a new transaction
// Then it should be applied with success
newTransactionPath := env.GetTestResourcePath(t, "new-transaction")
result := tracetestcli.Exec(t, fmt.Sprintf("apply transaction --file %s", newTransactionPath), tracetestcli.WithCLIConfig(cliConfig))
helpers.RequireExitCodeEqual(t, result, 0)
}
func TestGetTransaction(t *testing.T) {
// instantiate require with testing helper
require := require.New(t)
env := environment.CreateAndStart(t)
defer env.Close(t)
cliConfig := env.GetCLIConfigPath(t)
t.Run("get with no transaction initialized", func(t *testing.T) {
// Given I am a Tracetest CLI user
// And I have my server recently created
// And no transaction registered
// When I try to get a transaction on yaml mode
// Then it should return a error message
result := tracetestcli.Exec(t, "get transaction --id no-id --output yaml", tracetestcli.WithCLIConfig(cliConfig))
helpers.RequireExitCodeEqual(t, result, 0)
require.Contains(result.StdOut, "Resource transaction with ID no-id not found")
})
addGetTransactionPreReqs(t, env)
t.Run("get with YAML format", func(t *testing.T) {
// Given I am a Tracetest CLI user
// And I have my server recently created
// And I have a transaction already set
// When I try to get a transaction on yaml mode
// Then it should print a YAML
result := tracetestcli.Exec(t, "get transaction --id Qti5R3_VR --output yaml", tracetestcli.WithCLIConfig(cliConfig))
helpers.RequireExitCodeEqual(t, result, 0)
transaction := helpers.UnmarshalYAML[types.TransactionResource](t, result.StdOut)
require.Equal("Transaction", transaction.Type)
require.Equal("Qti5R3_VR", transaction.Spec.ID)
require.Equal("New Transaction", transaction.Spec.Name)
require.Equal("a transaction", transaction.Spec.Description)
require.Len(transaction.Spec.Steps, 2)
require.Equal("9wtAH2_Vg", transaction.Spec.Steps[0])
require.Equal("ajksdkasjbd", transaction.Spec.Steps[1])
})
t.Run("get with JSON format", func(t *testing.T) {
// Given I am a Tracetest CLI user
// And I have my server recently created
// And I have a transaction already set
// When I try to get a transaction on json mode
// Then it should print a json
result := tracetestcli.Exec(t, "get transaction --id Qti5R3_VR --output json", tracetestcli.WithCLIConfig(cliConfig))
helpers.RequireExitCodeEqual(t, result, 0)
transaction := helpers.UnmarshalJSON[types.TransactionResource](t, result.StdOut)
require.Equal("Transaction", transaction.Type)
require.Equal("Qti5R3_VR", transaction.Spec.ID)
require.Equal("New Transaction", transaction.Spec.Name)
require.Equal("a transaction", transaction.Spec.Description)
require.Len(transaction.Spec.Steps, 2)
require.Equal("9wtAH2_Vg", transaction.Spec.Steps[0])
require.Equal("ajksdkasjbd", transaction.Spec.Steps[1])
})
t.Run("get with pretty format", func(t *testing.T) {
// Given I am a Tracetest CLI user
// And I have my server recently created
// And I have a transaction already set
// When I try to get a transaction on pretty mode
// Then it should print a table with 4 lines printed: header, separator, transaction item and empty line
result := tracetestcli.Exec(t, "get transaction --id Qti5R3_VR --output pretty", tracetestcli.WithCLIConfig(cliConfig))
helpers.RequireExitCodeEqual(t, result, 0)
require.Contains(result.StdOut, "New Transaction")
lines := strings.Split(result.StdOut, "\n")
require.Len(lines, 4)
})
}