diff --git a/core/cmd/cosmos_node_commands.go b/core/cmd/cosmos_node_commands.go index 4e16e0ad671..760691d9379 100644 --- a/core/cmd/cosmos_node_commands.go +++ b/core/cmd/cosmos_node_commands.go @@ -11,7 +11,7 @@ type CosmosNodePresenter struct { // ToRow presents the CosmosNodeResource as a slice of strings. func (p *CosmosNodePresenter) ToRow() []string { - return []string{p.GetID(), p.Name, p.ChainID, p.State, p.Config} + return []string{p.Name, p.ChainID, p.State, p.Config} } // RenderTable implements TableRenderer diff --git a/core/cmd/cosmos_node_commands_test.go b/core/cmd/cosmos_node_commands_test.go index 44613ff30d6..333a2be6769 100644 --- a/core/cmd/cosmos_node_commands_test.go +++ b/core/cmd/cosmos_node_commands_test.go @@ -1,14 +1,15 @@ package cmd_test import ( + "bytes" + "strings" "testing" "github.com/pelletier/go-toml/v2" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - coscfg "github.com/smartcontractkit/chainlink-cosmos/pkg/cosmos/config" "github.com/smartcontractkit/chainlink-relay/pkg/utils" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -43,7 +44,6 @@ func TestShell_IndexCosmosNodes(t *testing.T) { } app := cosmosStartNewApplication(t, &chain) client, r := app.NewShellAndRenderer() - require.Nil(t, cmd.NewCosmosNodeClient(client).IndexNodes(cltest.EmptyCLIContext())) require.NotEmpty(t, r.Renders) nodes := *r.Renders[0].(*cmd.CosmosNodePresenters) @@ -56,4 +56,17 @@ func TestShell_IndexCosmosNodes(t *testing.T) { require.NoError(t, err) assert.Equal(t, string(wantConfig), n.Config) assertTableRenders(t, r) + + //Render table and check the fields order + b := new(bytes.Buffer) + rt := cmd.RendererTable{b} + nodes.RenderTable(rt) + renderLines := strings.Split(b.String(), "\n") + assert.Equal(t, 7, len(renderLines)) + assert.Contains(t, renderLines[1], "Name") + assert.Contains(t, renderLines[1], n.Name) + assert.Contains(t, renderLines[2], "Chain ID") + assert.Contains(t, renderLines[2], n.ChainID) + assert.Contains(t, renderLines[3], "State") + assert.Contains(t, renderLines[3], n.State) } diff --git a/core/cmd/evm_node_commands.go b/core/cmd/evm_node_commands.go index 36d497b8fd8..515ece18a8e 100644 --- a/core/cmd/evm_node_commands.go +++ b/core/cmd/evm_node_commands.go @@ -11,7 +11,7 @@ type EVMNodePresenter struct { // ToRow presents the EVMNodeResource as a slice of strings. func (p *EVMNodePresenter) ToRow() []string { - return []string{p.GetID(), p.Name, p.ChainID, p.State, p.Config} + return []string{p.Name, p.ChainID, p.State, p.Config} } // RenderTable implements TableRenderer diff --git a/core/cmd/evm_node_commands_test.go b/core/cmd/evm_node_commands_test.go index 84415762810..323189d5af0 100644 --- a/core/cmd/evm_node_commands_test.go +++ b/core/cmd/evm_node_commands_test.go @@ -2,6 +2,7 @@ package cmd_test import ( "bytes" + "strings" "testing" "github.com/pelletier/go-toml/v2" @@ -33,12 +34,14 @@ func TestShell_IndexEVMNodes(t *testing.T) { WSURL: models.MustParseURL("ws://localhost:8546"), HTTPURL: models.MustParseURL("http://localhost:8546"), SendOnly: ptr(false), + Order: ptr(int32(15)), } node2 := evmcfg.Node{ Name: ptr("Test node 2"), WSURL: models.MustParseURL("ws://localhost:8547"), HTTPURL: models.MustParseURL("http://localhost:8547"), SendOnly: ptr(false), + Order: ptr(int32(36)), } chain := evmcfg.EVMConfig{ ChainID: chainID, @@ -69,4 +72,23 @@ func TestShell_IndexEVMNodes(t *testing.T) { require.NoError(t, err) assert.Equal(t, string(wantConfig2), n2.Config) assertTableRenders(t, r) + + //Render table and check the fields order + b := new(bytes.Buffer) + rt := cmd.RendererTable{b} + nodes.RenderTable(rt) + renderLines := strings.Split(b.String(), "\n") + assert.Equal(t, 20, len(renderLines)) + assert.Contains(t, renderLines[1], "Name") + assert.Contains(t, renderLines[1], n1.Name) + assert.Contains(t, renderLines[2], "Chain ID") + assert.Contains(t, renderLines[2], n1.ChainID) + assert.Contains(t, renderLines[3], "State") + assert.Contains(t, renderLines[3], n1.State) + assert.Contains(t, renderLines[11], "Name") + assert.Contains(t, renderLines[11], n2.Name) + assert.Contains(t, renderLines[12], "Chain ID") + assert.Contains(t, renderLines[12], n2.ChainID) + assert.Contains(t, renderLines[13], "State") + assert.Contains(t, renderLines[13], n2.State) } diff --git a/core/cmd/solana_node_commands.go b/core/cmd/solana_node_commands.go index 0af3f692c50..6ccf9a5864c 100644 --- a/core/cmd/solana_node_commands.go +++ b/core/cmd/solana_node_commands.go @@ -11,7 +11,7 @@ type SolanaNodePresenter struct { // ToRow presents the SolanaNodeResource as a slice of strings. func (p *SolanaNodePresenter) ToRow() []string { - return []string{p.GetID(), p.Name, p.ChainID, p.State, p.Config} + return []string{p.Name, p.ChainID, p.State, p.Config} } // RenderTable implements TableRenderer diff --git a/core/cmd/solana_node_commands_test.go b/core/cmd/solana_node_commands_test.go index a9126503f76..8d08a368234 100644 --- a/core/cmd/solana_node_commands_test.go +++ b/core/cmd/solana_node_commands_test.go @@ -1,6 +1,8 @@ package cmd_test import ( + "bytes" + "strings" "testing" "github.com/pelletier/go-toml/v2" @@ -66,4 +68,23 @@ func TestShell_IndexSolanaNodes(t *testing.T) { require.NoError(t, err) assert.Equal(t, string(wantConfig2), n2.Config) assertTableRenders(t, r) + + //Render table and check the fields order + b := new(bytes.Buffer) + rt := cmd.RendererTable{b} + nodes.RenderTable(rt) + renderLines := strings.Split(b.String(), "\n") + assert.Equal(t, 14, len(renderLines)) + assert.Contains(t, renderLines[1], "Name") + assert.Contains(t, renderLines[1], n1.Name) + assert.Contains(t, renderLines[2], "Chain ID") + assert.Contains(t, renderLines[2], n1.ChainID) + assert.Contains(t, renderLines[3], "State") + assert.Contains(t, renderLines[3], n1.State) + assert.Contains(t, renderLines[8], "Name") + assert.Contains(t, renderLines[8], n2.Name) + assert.Contains(t, renderLines[9], "Chain ID") + assert.Contains(t, renderLines[9], n2.ChainID) + assert.Contains(t, renderLines[10], "State") + assert.Contains(t, renderLines[10], n2.State) } diff --git a/core/cmd/starknet_node_commands.go b/core/cmd/starknet_node_commands.go index 69b728af7e0..c26bb031145 100644 --- a/core/cmd/starknet_node_commands.go +++ b/core/cmd/starknet_node_commands.go @@ -11,7 +11,7 @@ type StarkNetNodePresenter struct { // ToRow presents the StarkNetNodeResource as a slice of strings. func (p *StarkNetNodePresenter) ToRow() []string { - return []string{p.GetID(), p.Name, p.ChainID, p.State, p.Config} + return []string{p.Name, p.ChainID, p.State, p.Config} } // RenderTable implements TableRenderer diff --git a/core/cmd/starknet_node_commands_test.go b/core/cmd/starknet_node_commands_test.go index 798ebfc7757..5db5e5e0f9b 100644 --- a/core/cmd/starknet_node_commands_test.go +++ b/core/cmd/starknet_node_commands_test.go @@ -1,6 +1,8 @@ package cmd_test import ( + "bytes" + "strings" "testing" "github.com/pelletier/go-toml/v2" @@ -64,4 +66,23 @@ func TestShell_IndexStarkNetNodes(t *testing.T) { require.NoError(t, err) assert.Equal(t, string(wantConfig2), n2.Config) assertTableRenders(t, r) + + //Render table and check the fields order + b := new(bytes.Buffer) + rt := cmd.RendererTable{b} + nodes.RenderTable(rt) + renderLines := strings.Split(b.String(), "\n") + assert.Equal(t, 14, len(renderLines)) + assert.Contains(t, renderLines[1], "Name") + assert.Contains(t, renderLines[1], n1.Name) + assert.Contains(t, renderLines[2], "Chain ID") + assert.Contains(t, renderLines[2], n1.ChainID) + assert.Contains(t, renderLines[3], "State") + assert.Contains(t, renderLines[3], n1.State) + assert.Contains(t, renderLines[8], "Name") + assert.Contains(t, renderLines[8], n2.Name) + assert.Contains(t, renderLines[9], "Chain ID") + assert.Contains(t, renderLines[9], n2.ChainID) + assert.Contains(t, renderLines[10], "State") + assert.Contains(t, renderLines[10], n2.State) } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 0be7527b979..7b2eedd8276 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -32,6 +32,7 @@ Order = 5 state instead of relying on an unreliable round-trip to the Mercury server. ### Fixed +- Fixed a bug in the `nodes xxx list` command that caused results to not be displayed correctly ### Changed - Assumption violations for MaxFeePerGas >= BaseFeePerGas and MaxFeePerGas >= MaxPriorityFeePerGas in EIP-1559 effective gas price calculation will now use a gas price if specified