src.dualinventive.com/go/devsim/simulator/js/request_test.go

70 lines
1.8 KiB
Go

package js
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
"src.dualinventive.com/go/devsim/simulator/testdata"
"src.dualinventive.com/go/dinet/rpc"
)
func TestRequestThis(t *testing.T) {
m, tt := model(t)
s, err := newSimulator(m, &testdata.Info{IPath: "testdata/TestRequestThis"})
require.Nil(t, err)
s.Start()
defer s.Stop()
// Request config:set
req := &rpc.Msg{ClassMethod: rpc.ClassMethodConfigSet,
ID: 1234,
Params: rpc.NewParams(&rpc.ConfigParam{
UID: 1,
Value: 1337,
}),
}
require.Nil(t, tt.Queue(req))
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Second))
defer cancel()
rep, err := tt.Dequeue(ctx)
require.Nil(t, err)
require.NotNil(t, rep)
require.Equal(t, rep.ClassMethod, req.ClassMethod)
require.Equal(t, rep.ID, req.ID)
require.Nil(t, rep.Params)
require.Nil(t, rep.Error)
// TODO is not nil due to rpc deferredDecoder... require.Nil(t, rep.Result)
// Request config:get
req = &rpc.Msg{ClassMethod: rpc.ClassMethodConfigGet,
ID: 1234,
Params: rpc.NewParams(rpc.ConfigParam{
UID: 1,
}),
}
require.Nil(t, tt.Queue(req))
ctx, cancel = context.WithDeadline(context.Background(), time.Now().Add(time.Second))
defer cancel()
rep, err = tt.Dequeue(ctx)
require.Nil(t, err)
require.NotNil(t, rep)
require.Equal(t, rep.ClassMethod, req.ClassMethod)
require.Equal(t, rep.ID, req.ID)
// TODO is not nil due to rpc deferredDecoder... require.Nil(t, rep.Params)
require.Nil(t, rep.Error)
require.NotNil(t, rep.Result)
// TODO is not nil due to rpc deferredDecoder... require.Nil(t, rep.Result)
// TODO(jjacobs): Use config item result
//result, ok := rep.Result.([]interface{})
//require.True(t, ok)
//require.NotNil(t, result)
//require.Len(t, result, 1)
//require.Equal(t, map[string]interface{}{"uid": int64(1), "value": int64(1337)}, result[0])
}