Skip to content

Commit

Permalink
refactor tests to compare with entire table
Browse files Browse the repository at this point in the history
  • Loading branch information
raulb committed Jan 30, 2025
1 parent 5c49ca1 commit ae3c6fc
Showing 1 changed file with 87 additions and 77 deletions.
164 changes: 87 additions & 77 deletions cmd/conduit/root/connectors/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (

"github.com/conduitio/conduit/cmd/conduit/api"
"github.com/conduitio/conduit/cmd/conduit/api/mock"
"github.com/conduitio/conduit/cmd/conduit/internal/display"
"github.com/conduitio/conduit/cmd/conduit/internal/testutils"
apiv1 "github.com/conduitio/conduit/proto/api/v1"
"github.com/conduitio/ecdysis"
Expand Down Expand Up @@ -64,100 +63,111 @@ func TestConnectorsListCommandFlags(t *testing.T) {
}
}

func TestListCommandExecuteWithClient(t *testing.T) {
tests := []struct {
name string
flags ListFlags
connectors []*apiv1.Connector
}{
func TestListCommandExecuteWithClient_NoFlags(t *testing.T) {
is := is.New(t)

buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)

ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockService := mock.NewMockConnectorService(ctrl)

connectors := []*apiv1.Connector{
{
name: "WithConnectorsAndNoFlags",
flags: ListFlags{},
connectors: []*apiv1.Connector{
{
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
{
Id: "conn2",
Type: apiv1.Connector_TYPE_DESTINATION,
Plugin: "plugin2",
PipelineId: "pipeline2",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
},
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
{
name: "WithConnectorsAndFlags",
flags: ListFlags{PipelineID: "pipeline1"},
connectors: []*apiv1.Connector{
{
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
},
Id: "conn2",
Type: apiv1.Connector_TYPE_DESTINATION,
Plugin: "plugin2",
PipelineId: "pipeline2",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
is := is.New(t)
testutils.MockGetListConnectors(mockService, "", connectors)

buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)
client := &api.Client{
ConnectorServiceClient: mockService,
}

ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()
cmd := &ListCommand{}
cmd.Output(out)

mockService := mock.NewMockConnectorService(ctrl)
err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)

testutils.MockGetListConnectors(mockService, tt.flags.PipelineID, tt.connectors)
output := buf.String()
is.True(len(output) > 0)

client := &api.Client{
ConnectorServiceClient: mockService,
}
strings.Contains(output, ""+
"+-------+---------+-------------+-------------+----------------------+----------------------+\n"+
"| ID | PLUGIN | TYPE | PIPELINE_ID | CREATED | LAST_UPDATED |\n"+
"+-------+---------+-------------+-------------+----------------------+----------------------+\n"+
"| conn1 | plugin1 | source | pipeline1 | 1970-01-01T00:00:00Z | 1970-01-01T00:00:00Z |\n"+
"| conn2 | plugin2 | destination | pipeline2 | 1970-01-01T00:00:00Z | 1970-01-01T00:00:00Z |\n"+
"+-------+---------+-------------+-------------+----------------------+----------------------+")
}

cmd := &ListCommand{
flags: tt.flags,
}
cmd.Output(out)
func TestListCommandExecuteWithClient_WithFlags(t *testing.T) {
is := is.New(t)

err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)
buf := new(bytes.Buffer)
out := &ecdysis.DefaultOutput{}
out.Output(buf, nil)

output := buf.String()
is.True(len(output) > 0)
ctx := context.Background()
ctrl := gomock.NewController(t)
defer ctrl.Finish()

is.True(strings.Contains(output, "ID"))
is.True(strings.Contains(output, "PLUGIN"))
is.True(strings.Contains(output, "TYPE"))
is.True(strings.Contains(output, "PIPELINE_ID"))
is.True(strings.Contains(output, "CREATED"))
is.True(strings.Contains(output, "LAST_UPDATED"))
mockService := mock.NewMockConnectorService(ctrl)

for _, connector := range tt.connectors {
is.True(strings.Contains(output, connector.Id))
is.True(strings.Contains(output, connector.Plugin))
is.True(strings.Contains(output, connector.PipelineId))
is.True(strings.Contains(output, display.ConnectorTypeToString(connector.Type)))
}
connectors := []*apiv1.Connector{
{
Id: "conn1",
Type: apiv1.Connector_TYPE_SOURCE,
Plugin: "plugin1",
ProcessorIds: []string{"proc3"},
PipelineId: "pipeline1",
CreatedAt: testutils.GetDateTime(),
UpdatedAt: testutils.GetDateTime(),
},
}

is.True(strings.Contains(output, "1970-01-01T00:00:00Z"))
})
testutils.MockGetListConnectors(mockService, "pipeline1", connectors)

client := &api.Client{
ConnectorServiceClient: mockService,
}

cmd := &ListCommand{
flags: ListFlags{PipelineID: "pipeline1"},
}
cmd.Output(out)

err := cmd.ExecuteWithClient(ctx, client)
is.NoErr(err)

output := buf.String()
is.True(len(output) > 0)

is.True(strings.Contains(output, ""+
"+-------+---------+--------+-------------+----------------------+----------------------+\n"+
"| ID | PLUGIN | TYPE | PIPELINE_ID | CREATED | LAST_UPDATED |\n"+
"+-------+---------+--------+-------------+----------------------+----------------------+\n"+
"| conn1 | plugin1 | source | pipeline1 | 1970-01-01T00:00:00Z | 1970-01-01T00:00:00Z |\n"+
"+-------+---------+--------+-------------+----------------------+----------------------+"))
}

func TestListCommandExecuteWithClient_EmptyResponse(t *testing.T) {
Expand Down

0 comments on commit ae3c6fc

Please sign in to comment.