81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|