package cmdpacks_test import ( "fmt" "github.com/lmika/dynamo-browse/internal/common/ui/commandctrl/cmdpacks" "github.com/stretchr/testify/assert" "testing" ) func TestModRS_New(t *testing.T) { svc := newService(t) rsProxy, err := svc.CommandController.ExecuteAndWait(t.Context(), `rs:new`) assert.NoError(t, err) assert.IsType(t, rsProxy, &cmdpacks.ResultSetProxy{}) } func TestModRS_Query(t *testing.T) { tests := []struct { descr string cmd string wantRows []int }{ { descr: "query with pk 1", cmd: `rs:query 'pk="abc"' -table service-test-data`, wantRows: []int{0, 1}, }, { descr: "query with pk 2", cmd: `rs:query 'pk="bbb"' -table service-test-data`, wantRows: []int{2}, }, { descr: "query with sk 1", cmd: `rs:query 'sk="222"' -table service-test-data`, wantRows: []int{1}, }, { descr: "query with args 1", cmd: `rs:query 'pk=$v' [v:'abc'] -table service-test-data`, wantRows: []int{0, 1}, }, { descr: "query with args 2", cmd: `rs:query ':k=$v' [k:'pk' v:'abc'] -table service-test-data`, wantRows: []int{0, 1}, }, { descr: "query with args 3", cmd: `rs:query ':k=$v' [k:'beta' v:1231] -table service-test-data`, wantRows: []int{1}, }, { descr: "query with args with no table set", cmd: `rs:query ':k=$v' [k:'beta' v:1231]`, wantRows: []int{1}, }, } for _, tt := range tests { t.Run(tt.descr, func(t *testing.T) { svc := newService(t) res, err := svc.CommandController.ExecuteAndWait(t.Context(), tt.cmd) assert.NoError(t, err) rs := res.(*cmdpacks.ResultSetProxy).RS assert.Len(t, rs.Items(), len(tt.wantRows)) for i, rowIndex := range tt.wantRows { for key, want := range testData[0].Data[rowIndex] { have, ok := rs.Items()[i].AttributeValueAsString(key) assert.True(t, ok) assert.Equal(t, fmt.Sprint(want), have) } } }) } }