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]) }